使用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();
代码编译并运行无错误。但是移植页面无法与主干页面一起出现。
答案 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);
请务必关闭document
和pdfReader
。
注意:如果您只想合并一堆文件,请不要使用此代码段。您不应该这样做的原因在问题的答案中解释How to merge documents correctly?