如何解决使用iText 7将背景添加到PDF中的每个页面
我的PDF文件只有一页,我想将第二页PDF文件中的所有页面都用作背景使用,并提供一些信息。我已经尝试过使用 copyPagesTo 做到这一点,但它只是每隔两页复制一次PDF。
10 minutes - 2 hours
是否可以像背景一样使用一个PDF文件,并在文本后面的每一页将其放入其他PDF文件。
解决方法
根据我的理解,您正在寻找以下解决方案。如果我错过了什么,请告诉我。
- 为要创建背景的原始PDF创建阅读器。
- 为背景PDF创建PDF阅读器
- 在要生成最终PDF的位置创建PDF标记。
- 使用Stamper的GetImportedPage方法获取背景。
- 环绕原始PDF页面的所有页面并添加背景。
下面是代码:
static void CreatePdfwithBackGround(string originalPdf,string backgroundPdf,string destPdf)
{
PdfReader originalPdfReader = new PdfReader(originalPdf);
PdfReader backgroundPdfReader = new PdfReader(backgroundPdf);
// Create the stamper for Destination pdf
PdfStamper stamper = new PdfStamper(originalPdfReader,new FileStream(destPdf,FileMode.Create));
// Add the backgroundPdf to each page of original PDF
PdfImportedPage page = stamper.GetImportedPage(backgroundPdfReader,1);
int pageCount = originalPdfReader.NumberOfPages;
PdfContentByte background;
for (int i = 1; i <= pageCount; i++)
{
background = stamper.GetUnderContent(i);
background.AddTemplate(page,0);
}
// Close the Destination stamper
stamper.Close();
}
示例调用为:
CreatePdfwithBackGround(@"C:\TEST\MainPDF.pdf",@"C:\TEST\BackGroundTemplate.pdf",@"C:\TEST\FinalPDFOutput.pdf");
,
这是iText 7代码。请注意,假定背景和正在处理的文档页面的页面大小相等。
PdfDocument backgroundDocument = new PdfDocument(new PdfReader(@"path/to/background_doc.pdf"));
PdfDocument pdfDocument = new PdfDocument(new PdfReader(@"path/to/source.pdf"),new PdfWriter(@"path/to/target.pdf"));
PdfFormXObject backgroundXObject = backgroundDocument.GetPage(1).CopyAsFormXObject(pdfDocument);
for (int i = 1; i <= pdfDocument.GetNumberOfPages(); i++) {
PdfPage page = pdfDocument.GetPage(i);
PdfStream stream = page.NewContentStreamBefore();
new PdfCanvas(stream,page.GetResources(),pdfDocument).AddXObject(backgroundXObject,0);
}
pdfDocument.Close();
backgroundDocument.Close();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。