如何使用iText在Java中将A4尺寸PDF与A8尺寸PDF合并?

时间:2014-12-16 04:14:39

标签: java itext

我需要将两个pdf大小A8和A4合并为一个PDF。当我们开发合并的PDF包含相同的大小时。谁能告诉我们如何用不同尺寸的A8和A4尺寸来实现这一目标。

1 个答案:

答案 0 :(得分:2)

使用PdfWriter类合并文档违反了官方文档中给出的所有建议,尽管有非官方的示例可能会引诱您进入写坏代码。我希望你明白我发现这些不好的例子比你更烦人。

请查看chapter 6中的表6.1。它为您提供了一个概述,显示何时使用哪个类。在这种情况下,您应该使用PdfCopy

String[] files = { MovieLinks1.RESULT, MovieHistory.RESULT };
// step 1
Document document = new Document();
// step 2
PdfCopy copy = new PdfCopy(document, new FileOutputStream(RESULT));
// step 3
document.open();
// step 4
PdfReader reader;
int n;
// loop over the documents you want to concatenate
for (int i = 0; i < files.length; i++) {
    reader = new PdfReader(files[i]);
    // loop over the pages in that document
    n = reader.getNumberOfPages();
    for (int page = 0; page < n; ) {
        copy.addPage(copy.getImportedPage(reader, ++page));
    }
    copy.freeReader(reader);
    reader.close();
}
// step 5
document.close();

如果您使用的是最近版本的iText,您甚至可以使用addDocument()方法,在这种情况下,您不需要遍历所有页面。如果涉及表格,您还需要特别小心。有几个例子证明了Sandbox中的新功能(可以追溯到本书编写之后)。