将pdfs与itext相结合 – 呈现为纵向的横向页面
我正在维护一个遗留应用程序,它使用itext来组合多个横向和纵向pdf。 当将由同一应用程序生成的pdfs与其他pdf组合在一起时,此过程正常工作,它将视图呈现为portait并切断内容。
问题:pdf结构中是否存在可能导致渲染差异的属性?
谢谢!
只有遵循不好的例子,才会出现您描述的行为。 遵循官方文档时不会发生这种情况。
虽然您没有提供任何源代码,但我确信您使用的是PdfWriter
实例,并且您使用addTemplate()
方法将现有页面添加到此实例的直接内容中。 这是(正如我多次向没有阅读文档的人指出的那样)是错误的。
您需要替换合并过程并使用PdfCopy
或PdfSmartCopy
来连接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();