如何合并文档并创建封面

时间:2014-07-02 10:31:30

标签: itext

我有200多个PDF文档。我想合并所有这些文档并将图像添加到所有页面。我还想为合并的PDF创建封面。

1 个答案:

答案 0 :(得分:0)

请查看MergeWithToc2示例。

在此示例中,我们使用PdfCopy合并每页的文档页面。简化后,该代码如下所示:

Document document = new Document();
PdfCopy copy = new PdfCopy(document, baos);
document.open();
PdfImportedPage page;
for (Map.Entry<String, PdfReader> entry : filesToMerge.entrySet()) {
    page = copy.getImportedPage(entry.getValue(), ++i);
    copy.addPage(page);
}
document.close();

由于您想要更改每个页面的内容,您还需要创建一个PageStamp对象:

PageStamp stamp;
for ( ... ) {
     stamp = copy.createPageStamp(page);
     // do stuff with stamp.getUnderContent() or stamp.getOverContent();
     stamp.alterContents();
}

如果您想添加Image,我会使用stamp.getOverContent().addImage(img, x, y)

如您所见,我们还在最后添加了一个包含目录(占用1页)的页面。我们希望此页面成为第一页,因此我们重新排列这样的页面:

reader = new PdfReader(baos.toByteArray());
n = reader.getNumberOfPages();
reader.selectPages(String.format("%d, 1-%d", n, n-1));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
stamper.close();

示例MergeWithToc2将这些不同的部分很好地结合在一起作为一个例子。还有其他选择。例如,您可以在完全独立的文档中创建封面页,然后合并封面注释和合并文档。