You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Christian Appl (Jira)" <ji...@apache.org> on 2020/01/17 14:39:00 UTC

[jira] [Created] (PDFBOX-4744) PageDrawer is not rendering unrotatable Annotations on rotated pages

Christian Appl created PDFBOX-4744:
--------------------------------------

             Summary: PageDrawer is not rendering unrotatable Annotations on rotated pages
                 Key: PDFBOX-4744
                 URL: https://issues.apache.org/jira/browse/PDFBOX-4744
             Project: PDFBox
          Issue Type: Bug
          Components: Rendering
    Affects Versions: 2.0.18
            Reporter: Christian Appl
         Attachments: simple.pdf

Unrotatable Annotations are no longer rendered by the PageDrawer.

The issue can be reproduced using the attached "simple.pdf" and the following code:

{code:java}
public static void main(String... args) {
        File pdfFile = new File("pathto", "simple.pdf");
        BufferedImage actualImage = null;
        try {
            try (PDDocument document = PDDocument.load(pdfFile)) {
                PDFRenderer pdfRenderer = new PDFRenderer(document);
                pdfRenderer.setAnnotationsFilter(PDAnnotation::isPrinted);
                pdfRenderer.setDefaultDestination(RenderDestination.VIEW);
                actualImage = pdfRenderer.renderImage(0);
            }

            if (actualImage != null) {
                ImageIO.write(actualImage, "png", new File("somePath", "out.png"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
{code}

When setting the page rotation to 0 the annotation can be seen in the "out.png", when selecting another rotation, it is gone.

I am assuming, that the following code in PageDrawer (Method: showAnnotation(PDAnnotation annotation) Lines: 886 to 892) is not working as expected. Maybe the rotation anchor should be set to a different position?
{code:java}
   if (annotation.isNoRotate() && this.getCurrentPage().getRotation() != 0) {
      PDRectangle rect = annotation.getRectangle();
      AffineTransform savedTransform = this.graphics.getTransform();               this.graphics.rotate(Math.toRadians((double)this.getCurrentPage().getRotation()), (double)rect.getLowerLeftX(), (double)rect.getUpperRightY());
                                super.showAnnotation(annotation);
                                this.graphics.setTransform(savedTransform);
                            } else {
                                super.showAnnotation(annotation);
                            }
{code}






--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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