将现有PDF文档添加到打开的文档中

时间:2015-04-16 19:31:15

标签: java pdf itext

使用iText 5.5.5。 我通过com.itextpdf.text.Document实例打开PdfWriter。在构建文档的各个阶段,我需要添加静态PDF页面。静态页面以byte[]

的形式出现

itextpdf.com上关注各种示例之后,我无法将他们的示例与我的用例相结合。这是代码:

Document trunk = new Document();
PdfWriter writer = PdfWriter.getInstance(trunk, getTrunkStream());
writer.setPageEvent(geTrunkPageEvent());
trunk.open();

....

PdfReader reader = new PdfReader(bytes);
// graft == my static content
Document graft = new Document(reader.getPageSizeWithRotation(1));
PdfCopy copy = new PdfCopy(graft, getTrunkStream());
graft.open();

int count = reader.getNumberOfPages();
for(int page = 0; page < count;) {
    copy.addPage(copy.getImportedPage(reader, ++page));
}

copy.freeReader(reader);
reader.close();

代码编译并运行无错误。但是移植页面无法与主干页面一起出现。

1 个答案:

答案 0 :(得分:3)

阅读这个问题的答案 Read BLOB (PDF Content) from database and edit and output PDF, 更详细的描述

使用PdfContentByte保存要添加的PDF内容

 PdfContentByte cb = writer.getDirectContent(); 

使用PdfImportedPage为要从其他文档导入的每个页面创建getImportedPage()页面对象,并使用writer将页面添加到addTemplate()

trunk.newPage();
page = writer.getImportedPage(pdfReader, pagenumber);
cb.addTemplate(page, 0, 0);

请务必关闭documentpdfReader

注意:如果您只想合并一堆文件,请不要使用此代码段。您不应该这样做的原因在问题的答案中解释How to merge documents correctly?