当前位置: 首页 > 知识库问答 >
问题:

如何将PDFBOX2中的页面原点翻译到左上角?

荀正谊
2023-03-14

下面的问题实际上与SO上的这个问题非常相似,MKL已经完美地回答了这个问题。简短的回答:要么使用左下原点,要么将你的坐标转换为这些。有一个变通办法,但那是一团糟。

我想创建一个左上坐标为0,0,右下坐标为210,297的PDF。像y=297-y这样的计算方法似乎有点混乱。

此问题与SO上的此问题类似,但参考了PDFBox2,其中所提供的解决方案不起作用。

    PDRectangle currentPageRectangle = new PDRectangle(210 * POINTS_PER_MM, 297 * POINTS_PER_MM);
    PDPage currentPage = new PDPage(currentPageRectangle);
    currentDocument.addPage(currentPage);
    contentStream = new PDPageContentStream(currentDocument, currentPage);

    AffineTransform a = new AffineTransform(1, 0, 0, -1, 210 * POINTS_PER_MM, 297 * POINTS_PER_MM);
    Matrix m = new Matrix(a);
    contentStream.transform(m);

共有1个答案

袁耀
2023-03-14

您的Affinetransform不正确,请参阅javadoc。最后两个参数是翻译值,现在您翻译的页面实际上是物理页面之外的,因为您翻译的x坐标是错误的。

这段代码工作得更好(我使用height作为页面高度的占位符):

        contentStream = new PDPageContentStream(document, page);
        contentStream.transform(new Matrix(new java.awt.geom.AffineTransform(1, 0, 0, -1, 0,height)));

还要考虑获得实际的页面高度,而不是使用硬编码的值,这样您的代码就可以在任何页面维度上工作:

float height=page.getMediaBox().getHeight();
 类似资料:
  • 实际上,我试图增加PDPage对象的cropbox。好吧,没有挑战。但页面内容仍保留在CropBox的左下角。我要它集中在新的cropbox空间。 我知道所有的内容是绝对定位在PDF。所以我的问题是:有没有一种方法使用PDFBox来翻译我的PDPage的原点(x,y)或者内容元素? 问候 汉斯

  • getRendition().currentLocation()会获取到一个start和end,我取的是start 每次定位都不准?

  • 我正在使用PDFBOX和itextSharp dll并处理pdf。这样我就可以得到矩形内文本的文本坐标。矩形坐标是使用itextsharp.dll.基本上我从itextsharp.dll获得矩形坐标,其中itextSharp使用坐标系统作为左下。我从PDFBOX获得pdf页面文本,其中PDFBOX使用坐标系统作为左上角。我需要帮助将坐标从左下转换为左上角 更新我的问题 如果你不理解我的问题,如果没

  • 问题内容: 我想模拟在CSS 中使用的属性。 根据MDN,这很有可能: 通过首先使用属性的取反值转换元素,然后应用元素的变换,然后通过属性值进行转换,来应用此属性。 但是,当我尝试时,会得到不正确的结果。这两个矩形显然不相同: 我已经尝试了很长时间没有运气寻找答案了,在我看来,这应该是相对简单的,我只是想不通。 问题答案: 您几乎不错,但是有两个错误。您需要反转翻译,并且需要更改第二个翻译的翻译。

  • 有人能把它翻译成python代码吗,例如,我知道第一行和第二行将是 我只是想不出其他的

  • 我有一个用Django编写的应用程序,我正在尝试在Digital Ocean droplet上的docker中运行它。目前我有两个文件。 有人能建议如何摆脱docker compose吗。yml文件并集成Dockerfile中的所有命令??? 文档文件 docker编写。yml公司 我运行我的应用程序和docker映像,如下所示: docker compose运行web python jk/man