将现有 PDF 文档添加到打开的文档
Add existing PDF document to opened document
使用 iText 5.5.5。
我通过 PdfWriter
实例打开了 com.itextpdf.text.Document
。在构建文档的各个阶段,我需要添加静态 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();
代码编译和运行没有错误。但是嫁接页面无法与主干页面一起出现。
阅读这个问题的答案
Read BLOB (PDF Content) from database and edit and output PDF ,
更详细的描述
使用PdfContentByte
保存要添加的PDF内容
PdfContentByte cb = writer.getDirectContent();
使用 getImportedPage()
为要从另一个文档导入的每个页面创建一个 PdfImportedPage
页面对象,并使用 addTemplate()
添加页面到 writer
:
trunk.newPage();
page = writer.getImportedPage(pdfReader, pagenumber);
cb.addTemplate(page, 0, 0);
确保关闭 document
和 pdfReader
。
注意:如果您只想合并一堆文件,请不要使用此代码段。你不应该这样做的原因在问题 How to merge documents correctly?
的答案中有解释
使用 iText 5.5.5。
我通过 PdfWriter
实例打开了 com.itextpdf.text.Document
。在构建文档的各个阶段,我需要添加静态 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();
代码编译和运行没有错误。但是嫁接页面无法与主干页面一起出现。
阅读这个问题的答案 Read BLOB (PDF Content) from database and edit and output PDF , 更详细的描述
使用PdfContentByte
保存要添加的PDF内容
PdfContentByte cb = writer.getDirectContent();
使用 getImportedPage()
为要从另一个文档导入的每个页面创建一个 PdfImportedPage
页面对象,并使用 addTemplate()
添加页面到 writer
:
trunk.newPage();
page = writer.getImportedPage(pdfReader, pagenumber);
cb.addTemplate(page, 0, 0);
确保关闭 document
和 pdfReader
。
注意:如果您只想合并一堆文件,请不要使用此代码段。你不应该这样做的原因在问题 How to merge documents correctly?
的答案中有解释