pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tilman Hausherr (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 18:16:00 GMT

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

Tilman Hausherr commented on PDFBOX-4615:

It turns out that there were many tests, but they are disabled. This is because they bring
tiny visual differences so the test results are to be checked manually. All are good except
one šŸ˜¢ , the file of PDFBOX3083. That one is 90Ā° rotated. I tried something hard-coded
just to test and that looks nice, but it means more changes are needed.

> 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
>             Fix For: 2.0.17, 3.0.0 PDFBox
>         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