Eli Zupke created PDFBOX-5142:
---------------------------------
Summary: LayerUtility.importPageAsForm distorts rotated pages
Key: PDFBOX-5142
URL: https://issues.apache.org/jira/browse/PDFBOX-5142
Project: PDFBox
Issue Type: Bug
Affects Versions: 2.0.23
Reporter: Eli Zupke
Attachments: out.pdf
The {{LayerUtility}} function {{importPageAsForm}} does not work correctly when
the imported page has a rotation of 90 or 270. The function changes the
dimensions of the rotated page such that it keeps the original, unrotated
aspect ratio, resulting in the content of the page being stretched out.
The following code demonstrates this problem, and the resulting file is
included as an attachment to this issue.
{code:java}
package pdftest;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.multipdf.LayerUtility;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
public class Main {
public static void main(String[] args) {
PDDocument d = new PDDocument();
LayerUtility layerUtility = new LayerUtility(d);
for (int i = 0; i < 360; i += 90) {
PDPage page = new PDPage(PDRectangle.LETTER);
d.addPage(page);
try (PDPageContentStream contents = new
PDPageContentStream(d, page, PDPageContentStream.AppendMode.APPEND,
true)) {
/* Generate Test Input Document */
PDDocument source = new PDDocument();
PDPage sourcePage = new PDPage(new
PDRectangle(500, 200));
PDPageContentStream sourceStream = new
PDPageContentStream(source, sourcePage);
PDRectangle box = sourcePage.getCropBox();
sourceStream.beginText();
sourceStream.newLineAtOffset(box.getUpperRightX() / 2, box.getUpperRightY() /
2);
sourceStream.setFont(PDType1Font.TIMES_ROMAN,
12);
sourceStream.showText("This Way Up! " + i);
sourceStream.endText();
sourceStream.addRect(0, 0,
box.getUpperRightX(), box.getUpperRightY());
sourceStream.addRect(5, 5, box.getUpperRightX()
- 10, box.getUpperRightY() - 10);
sourceStream.setLineWidth(2);
sourceStream.stroke();
sourceStream.close();
source.addPage(sourcePage);
sourcePage.setRotation(i);
/* Place the Test Input Document into the
Output Document */
PDFormXObject form =
layerUtility.importPageAsForm(source, 0);
source.close();
contents.drawForm(form);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
d.save(new File("out.pdf"));
d.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Complete.");
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]