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:40:00 UTC
[jira] [Updated] (PDFBOX-4744) PageDrawer is not rendering
unrotatable Annotations on rotated pages
[ https://issues.apache.org/jira/browse/PDFBOX-4744?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christian Appl updated PDFBOX-4744:
-----------------------------------
Description:
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}
was:
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}
> 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
> Priority: Major
> 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