gpt4 book ai didi

java - PDFBox - 坐标系

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:39:02 40 4
gpt4 key购买 nike

我想完成以下事情。我有一组PDF文件,首先我想检查坐标系的原点。如果 pdf 坐标系的原点不是左上角 [通常原点在左下角],我想创建一个坐标在左上角的结果 PDF。我正在尝试使用 PDFBox [下面是代码片段] 来做到这一点,但是生成的 PDF 是空白的,我做错了什么。我是 PDFBox 的新手,因此非常感谢这方面的任何帮助。

        // loading the existing doc             
PDDocument doc = PDDocument.load("C:\\Users\\test\\workspace\\example1.pdf");
List allPages = doc.getDocumentCatalog().getAllPages();
PDPageContentStream contentStream = null;

for( int i=0; i<allPages.size(); i++ )
{
PDPage page = (PDPage)allPages.get( i );
contentStream = new PDPageContentStream(doc, page);
contentStream.concatenate2CTM(1f, 0f, 0f, -1f, 0f, page.findMediaBox().getHeight());
contentStream.saveGraphicsState();
contentStream.close();

}
doc.save("C:\\Users\\test\\workspace\\example2.pdf");
doc.close();

最佳答案

您正在创建一个空的、转换后的内容流。

您需要通过 page.getContents() 获取现有内容,并将其包装在您的转换中。像这样的东西:

contentStream.conactenate2CTM(...);
contentStream.magicFunctionThatSucksUpTheExistingPageContent( page.getContents() );
contentStream.close();

PS:调用 saveGraphicsState() 而没有相应调用 restoreGraphicsState() 是不行的。

哦,看起来“magicFunction...”被称为 appendRawCommands()

关于java - PDFBox - 坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872700/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com