使用pdfBox在Landscape中使用Pdf

时间:2016-05-31 16:15:09

标签: java pdf pdf-generation pdfbox

目前我正在使用Apache的PDFBox生成pdf。它在肖像模式下工作得非常好,但后来我的要求是前两页应该是横向模式,然后是所有其他页面的肖像。

所以有人可以帮助我如何在横向创建pdf并实现此功能吗?

注意:我无法从PDFBox切换到其他库

3 个答案:

答案 0 :(得分:25)

另一个解决方案是

PDPage page = new PDPage(new PDRectangle(PDRectangle.A4.getHeight(), PDRectangle.A4.getWidth()));

答案 1 :(得分:7)

有两种策略:

1)指定横向媒体框(这是A4):

float POINTS_PER_INCH = 72;
float POINTS_PER_MM = 1 / (10 * 2.54f) * POINTS_PER_INCH;
new PDPage(new PDRectangle(297 * POINTS_PER_MM, 210 * POINTS_PER_MM));

2)分配肖像媒体框,旋转页面并旋转CTM,as shown in the official example

PDPage page = new PDPage(PDRectangle.A4);
page.setRotation(90);
doc.addPage(page);
PDRectangle pageSize = page.getMediaBox();
float pageWidth = pageSize.getWidth();
PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.OVERWRITE, false);
// add the rotation using the current transformation matrix
// including a translation of pageWidth to use the lower left corner as 0,0 reference
contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));
(...)

答案 2 :(得分:0)

以下为我工作。

float POINTS_PER_INCH = 72;
float POINTS_PER_MM = 1 / (10 * 2.54f) * POINTS_PER_INCH;
PDPage page = new PDPage(new PDRectangle(400 * POINTS_PER_MM, 210 * POINTS_PER_MM));