将pdfs与itext相结合 - 呈现为肖像的横向页面

时间:2014-06-22 17:52:30

标签: java itext

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

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

谢谢!

1 个答案:

答案 0 :(得分:6)

只有遵循不好的例子,才会出现您所描述的行为。按照the official documentation时不会发生此事。

虽然您没有提供任何源代码,但我很确定您使用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();