iTextSharp合并并保留插件

编程入门 行业动态 更新时间:2024-10-11 19:21:25
本文介绍了iTextSharp合并并保留插件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个PDF,该PDF在一页上有一个插件控件.我需要将其与另一个pdf合并,但是当我这样做时,插件会重新呈现为空白矩形.有没有一种合并和保留插件控件的方法?如果重要的话,该插件是通过 www.3ds/products/3dvia/3dvia-composer/resource-center/

I have a PDF that has a plugin control on one page. I need to merge it with another pdf but when I do, the plugin is redendered as a blank rectangle. Is there a way to merge and preserve the plugin control? If important, the plugin is a Dessault Systemes 3D Via Composer Player control as installed from www.3ds/products/3dvia/3dvia-composer/resource-center/

我使用的代码是简单编写器getinstance,contentbyte directcontent,getimportedpage和addtemplate.没什么.

The code I'm using is simple writer getinstance, contentbyte directcontent, getimportedpage, addtemplate. Nothing fancy.

FileStream docStream = new FileStream(@"C:\Temp\Merged.pdf", FileMode.Create); Document newDocument = new Document(PageSize.A4.Rotate()); PdfWriter pdfWriter = PdfWriter.GetInstance(newDocument, docStream); try { newDocument.Open(); PdfContentByte pdfContentByte = pdfWriter.DirectContent; newDocument.NewPage(); PdfReader mainPage = new PdfReader(@"C:\Temp\PageWithPlugin.pdf"); PdfImportedPage importedPage1 = pdfWriter.GetImportedPage(mainPage, 1); pdfContentByte.AddTemplate(importedPage1, 0, 0); mainPage.Close(); PdfReader smgPages = new PdfReader(@"C:\Temp\MorePages.pdf"); for (int page = 1; page <= smgPage.NumberOfPages; page++) { newDocument.NewPage(); PdfImportedPage importedPage = pdfWriter.GetImportedPage(smgPages, page); pdfContentByte.AddTemplate(importedPage, 0, 0); } smgPages.Close(); } finally { docStream.Flush(); if (newDocument != null) newDocument.Close(); docStream.Close(); }

推荐答案

尝试一下.

List<byte[]> fileList = new List<byte[]>(); using (FileStream fileSteam = File.OpenRead((@"C:\Temp\PageWithPlugin.pdf"))) { Byte[] byteArray = new byte[fileSteam.Length]; fileSteam.Read(byteArray, 0, byteArray.Length); fileList.Add(byteArray); } using (FileStream fileSteam = File.OpenRead((@"C:\Temp\MorePages.pdf"))) { Byte[] byteArray = new byte[fileSteam.Length]; fileSteam.Read(byteArray, 0, byteArray.Length); fileList.Add(byteArray); } using(MemoryStream msOutput = new MemoryStream()) { PdfReader pdfFile = new PdfReader(fileList[0]); Document doc = new Document(); PdfWriter pCopy = new PdfSmartCopy(doc, msOutput); doc.Open(); for (int k = 0; k < fileList.Count; k++) { for (int i = 1; i < pdfFile.NumberOfPages + 1; i++) { pdfFile = new PdfReader(fileList[k]); ((PdfSmartCopy)pCopy).AddPage(pCopy.GetImportedPage(pdfFile, i)); pCopy.FreeReader(pdfFile); } } pdfFile.Close(); pCopy.Close(); doc.Close(); fileList.Clear(); byte[] form = msOutput.ToArray(); using (FileStream fileSteam = new FileStream(@"C:\Temp\Merged.pdf", FileMode.Create)) { fileStream.Write(form, 0, form.Length); } }

更多推荐

iTextSharp合并并保留插件

本文发布于:2023-11-25 06:44:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1628720.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插件   iTextSharp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!