我想完成以下事情。我有一套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();
答案 0 :(得分:2)
您正在创建一个空的,已转换的内容流。
您需要通过page.getContents()
获取现有内容,并将其包含在转换中。类似的东西:
contentStream.conactenate2CTM(...);
contentStream.magicFunctionThatSucksUpTheExistingPageContent( page.getContents() );
contentStream.close();
PS:拨打saveGraphicsState()
但没有对restoreGraphicsState()
进行相应调用的电话是禁忌。
哦,看起来“magicFunction ......”被称为appendRawCommands()
。