pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PDFBOX-4615) AppearanceGeneratorHelper.setAppearanceValue doesn't set the bounding box on the appearance stream correctly
Date Thu, 01 Aug 2019 16:50:00 GMT

    [ https://issues.apache.org/jira/browse/PDFBOX-4615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16898194#comment-16898194

ASF subversion and git services commented on PDFBOX-4615:

Commit 1864165 from Tilman Hausherr in branch 'pdfbox/branches/2.0'
[ https://svn.apache.org/r1864165 ]

PDFBOX-4615: scale if rectangle and BBox have different width or height

> 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
>            Priority: Major
>         Attachments: flattenedboundingbox.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
> 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)
> 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

To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org

View raw message