将pdfs与itext相结合 – 呈现为纵向的横向页面

我正在维护一个遗留应用程序,它使用itext来组合多个横向和纵向pdf。 当将由同一应用程序生成的pdfs与其他pdf组合在一起时,此过程正常工作,它将视图呈现为portait并切断内容。

问题:pdf结构中是否存在可能导致渲染差异的属性?

谢谢!

只有遵循不好的例子,才会出现您描述的行为。 遵循官方文档时不会发生这种情况。

虽然您没有提供任何源代码,但我确信您使用的是PdfWriter实例,并且您使用addTemplate()方法将现有页面添加到此实例的直接内容中。 这是(正如我多次向没有阅读文档的人指出的那样)是错误的。

您需要替换合并过程并使用PdfCopyPdfSmartCopy来连接PDF文档。 看一下MergeForms (合并表单)和FillFlattenMerge2 (引入PdfSmartCopy以便生成的文件大小保持较低),以获得灵感。 如果您的应用程序真的很旧,您可能找不到addDocument()方法。

在这种情况下,您需要使用旧示例,例如Concatenate示例:

 Document document = new Document(); PdfCopy copy = new PdfCopy(document, new FileOutputStream(RESULT)); document.open(); PdfReader reader; int n; for (int i = 0; i < files.length; i++) { reader = new PdfReader(files[i]); n = reader.getNumberOfPages(); for (int page = 0; page < n; ) { copy.addPage(copy.getImportedPage(reader, ++page)); } copy.freeReader(reader); reader.close(); } document.close();