【问题标题】:Pdf in Landscape using pdfBox使用 pdfBox 在横向中的 PDF
【发布时间】:2016-09-29 18:27:16
【问题描述】:

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

那么任何人都可以帮助我了解如何在横向创建 pdf 并实现此功能吗?

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

【问题讨论】:

    标签: java pdf pdf-generation pdfbox


    【解决方案1】:

    另一种解决方案是

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

    【讨论】:

    • 恕我直言,这应该是公认的答案。更简单更优雅。
    • 这是一个很好的解决方案还有另一个原因 - 当第三方库自动向您的文档添加另一个页面(无论出于何种原因)时,新页面基于横向页面,然后是新页面也是横向的。页面旋转解决方案并非如此。
    【解决方案2】:

    有两种策略:

    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));
    (...)
    

    【讨论】:

    • 很好,但是在更改为横向后,我已经编写的内容丢失了,即包含一些图像的标题。此外,更改为横向后,坐标也会发生变化。如果是,请您建议如何做。
    • “我已经写好的内容”是否意味着您要更改现有的 PDF?更好地创建一个新问题,发布您的代码并共享您的 PDF。没有坐标系不会改变(0,0 在左下角),但当然你的最大值会改变。显然,顶部会被切掉,而在右边你会有更多的空间。这里的问题是关于从头开始创建 PDF。将现有 PDF 从纵向更改为横向没有多大意义。
    • 感谢您的回复。基本上我的目标是增加现有 pdf 中的列数。无论如何,策略 1 对我有用,我已经更新了现有代码。再次感谢。投票 +1
    【解决方案3】:

    下面对我有用。

    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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多