Itext 如何合并文档和创建封面

Itext 如何合并文档和创建封面,itext,Itext,我有200多个PDF文档。我想合并所有这些文档,并向所有页面添加一个图像。我还想为合并后的PDF创建封面。请查看示例 在本例中,我们使用PdfCopy每页合并文档。简化后,该代码如下所示: Document document = new Document(); PdfCopy copy = new PdfCopy(document, baos); document.open(); PdfImportedPage page; for (Map.Entry<String, PdfReader&

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

请查看示例

在本例中,我们使用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();
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();
当您想要添加图像时,我将使用stamp.getOverContent.addImageimg,x,y

如您所见,我们还添加了一个页面,该页面的目录在末尾占1页。我们希望此页面成为第一页,因此我们将页面重新排列如下:

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();
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();

该示例将这些不同的部分很好地结合到一个示例中。还有其他选择。例如,您可以在完全独立的文档中创建封面,然后合并封面说明和合并文档。

您是在处理现有文档还是从头开始创建PDF?另外:你需要在你的问题上付出更多的努力:当你说编辑第一页是什么意思?你想添加什么吗?你想改变什么吗?我将投票结束这个问题,因为除非你澄清,否则我不清楚问题是什么。在have 200+pdf中,我想合并所有pdf以及需要添加图像的所有页面。合并所有pdf后,我想为合并后的pdf创建封面。