使用PDFBox合并页面?

时间:2013-07-22 23:33:48

标签: pdfbox

我知道我可以使用PDFBox将多个PDF合并为一个PDF。但有没有办法合并页面?例如,我有一个PDF格式的标题,并希望将其插入到组合PDF的第一页的顶部,并将所有内容向下推。有没有办法使用PDFBox API?

1 个答案:

答案 0 :(得分:0)

以下是一些代码,用于将两个文件复制到一个合并的文件中,每个文件都有多个副本。它按页面复制。这是我在这个问题的答案中使用的信息:Can duplicating a pdf with PDFBox be small like with iText?

所以你要做的就是只制作doc1第一页的一份副本和doc2所有页面的一份副本。有一个评论,你必须做出改变,以留下一些页面。

final int COPIES = 1; // total copies

// Same code as linked answer mostly
PDDocument samplePdf = new PDDocument();

InputStream in1 = this.getClass().getResourceAsStream(DOC1_NAME);
PDDocument doc1 = PDDocument.load(in1);
List<PDPage> pages = (List<PDPage>) doc1.getDocumentCatalog().getAllPages();

// *** Change this loop to only copy the pages you want from DOC1

for (PDPage page : pages) {
    for (int i = 0; i < COPIES; i++) { // loop for each additional copy
        samplePdf.importPage(page);
    }
}

// Same code again mostly
InputStream in2 = this.getClass().getResourceAsStream(DOC2_NAME);
PDDocument doc2 = PDDocument.load(in2);
pages = (List<PDPage>) doc2.getDocumentCatalog().getAllPages();
for (PDPage page : pages) {
    for (int i = 0; i < COPIES; i++) { // loop for each additional copy
        samplePdf.importPage(page);
    }
}

// Then write the results out
File output = new File(OUT_NAME);
FileOutputStream out = new FileOutputStream(output);
samplePdf.save(out);

samplePDF.close();

in1.close();
doc1.close();
in2.close();
doc2.close();