我有200多个PDF文档。我想合并所有这些文档并将图像添加到所有页面。我还想为合并的PDF创建封面。
答案 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将这些不同的部分很好地结合在一起作为一个例子。还有其他选择。例如,您可以在完全独立的文档中创建封面页,然后合并封面注释和合并文档。