[
https://issues.apache.org/jira/browse/PDFBOX-4615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tilman Hausherr resolved PDFBOX-4615.
-------------------------------------
Resolution: Fixed
Assignee: Tilman Hausherr
OK the good thing is that Adobe also does the stretch when flattening.
I now ran the tests to compare the diffs renderings now and then (February):
- before the changes: 6 files differ, among them 1 clearly wrong (the one
here), 3 with differences visible in diff rendering but harmless, 1 invisible.
- after the changes: 3 files differ but changes invisible in diff rendering.
[~rosalind.douglas] all this doesn't apply to you, you keep the workaround from
2 days ago, due to the problem of having an existing different BBox. Thank you
for bringing this up.
> AppearanceGeneratorHelper.setAppearanceValue doesn't set the bounding box on
> the appearance stream correctly
> ------------------------------------------------------------------------------------------------------------
>
> Key: PDFBOX-4615
> URL: https://issues.apache.org/jira/browse/PDFBOX-4615
> Project: PDFBox
> Issue Type: Bug
> Components: AcroForm
> Affects Versions: 2.0.16
> Reporter: Rosalind Douglas
> Assignee: Tilman Hausherr
> Priority: Major
> Fix For: 2.0.17, 3.0.0 PDFBox
>
> Attachments: flattenedboundingbox.pdf,
> resetboundingbox-filled-acrobat-flatten-js.pdf,
> resetboundingbox-filled-acrobat-preflight.pdf,
> resetboundingbox-filled-acrobat.pdf, resetboundingbox-filled-flatten-js.pdf,
> resetboundingbox-filled-flatten.preflight.pdf, resetboundingbox-filled.pdf,
> resetboundingbox-flattened-bugfix.pdf, resetboundingbox-flattened.pdf,
> resetboundingbox.pdf
>
>
> Hello, thanks for all your effort with PDFBox. We use it heavily for parsing
> and flattening PDFs.
> BUG: In the attached PDF "resetboundingbox.pdf", we programmatically set the
> value of the text fields, then call pdAcroForm.flattten(), which produces the
> flattened PDF "flattenedboundingbox.pdf." I would expect that the text would
> entirely fill the text box (see textbox with {color:#8eb021}green
> border{color} in "flattenedboundingbox.pdf") but the text does not. Instead,
> the filled text area obeys another box instead (see text area with
> {color:#d04437}red border{color} in "flattenedboundingbox.pdf").
> POTENTIAL FIX: We've traced the problem to
> AppearanceGeneratorHelper.setAppearanceValue, lines 200-210. As long as we
> always set the bounding box (line 243) like inĀ
> AppearanceGeneratorHelper.prepareNormalAppearanceStream, regardless of the
> if/else at line 200, then the flattening works correctly:
> {code:java}
> /** * replace AppearanceGeneratorHelper lines 199-210 with: */
> PDAppearanceStream appearanceStream = appearance != null &&
> appearance.isStream() ? appearance.getAppearanceStream() : new
> PDAppearanceStream(field.getAcroForm().getDocument());
>
> // copied from lines 237-243
> int rotation = resolveRotation(widget);
> PDRectangle rect = widget.getRectangle();
> Matrix matrix = Matrix.getRotateInstance(Math.toRadians(rotation), 0, 0);
> Point2D.Float point2D = matrix.transformPoint(rect.getWidth(),
> rect.getHeight());
> PDRectangle bbox = new PDRectangle(Math.abs((float) point2D.getX()),
> Math.abs((float) point2D.getY()));
> appearanceStream.setBBox(bbox);
> appearanceDict.setNormalAppearance(appearanceStream);
> {code}
> Something I'm not sure about: in methodĀ prepareNormalAppearanceStream, there
> is additional code for setting the matrix (lines 245-251), which we don't
> seem to need. Since it doesn't break anything, we just keep it too.
> Thanks again for your help!
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]