使用iTextSharp删除PDF不可见对象
是否可以使用iTextSharp从PDF文档中删除不可见(或至少未显示)的对象?
更多细节:
1)我的源代码是一个包含图像和文本(可能是一些矢量图形)和嵌入字体的PDF页面。
2)有一个界面来设计多个“裁剪框”。
3)我必须生成一个新的PDF,其中只包含裁剪框内的内容。 其他任何东西都必须从结果文档中删除(实际上,我可能会接受内部一半和外部一半的内容,但这不是理想的,它不应该出现)。
目前我的解决方案是:
我已经成功开发了一个解决方案,可以创建新的临时文档,每个文档都包含每个裁切框的内容(使用writer.GetImportedPage和contentByte.AddTemplate加上与裁切框完全相同的页面)。 然后我创建最终文档并重复该过程,使用AddTemplate方法将最终页面中的每个“裁剪页面”定位。
该解决方案有两大缺点:
所以,我想我需要遍历PDF对象,检测它是否可见,然后删除它。 在撰写本文时,我正在尝试使用pdfReader.GetPdfObject。
谢谢您的帮助。
如果您正在尝试的PDF是模板/预定义/修正,那么您可以通过调用RemoveField来移除该对象。
PdfReader pdfReader = new PdfReader(../Template_Path.pdf"));
PdfStamper pdfStamperToPopulate = new PdfStamper(pdfReader, new FileStream(outputPath, FileMode.Create));
AcroFields pdfFormFields = pdfStamperToPopulate.AcroFields;
pdfFormFields.RemoveField("fieldNameToBeRemoved");
PdfReader pdfReader = new PdfReader(../Template_Path.pdf"));
PdfStamper pdfStamperToPopulate = new PdfStamper(pdfReader, new FileStream(outputPath, FileMode.Create));
AcroFields pdfFormFields = pdfStamperToPopulate.AcroFields;
pdfFormFields.RemoveField("fieldNameToBeRemoved");
是的,这是可能的。 您需要将pdf页面内容字节解析为PdfObjects,将它们存储到内存中,删除未拆分的PdfObject,将Pdf内容从PdfObject构建回pdf内容字节,在通过PdfWriter导入页面之前替换PdfReader中的页面内容。
我会建议你看看这个: http : //habjan.blogspot.com/2013/09/proof-of-concept-converting-pdf-files.html
从链接样本实现Pdf内容字节解析,从PdfObjec的建设,取代PdfReader页面内容字节...
链接地址: http://www.djcxy.com/p/46739.html上一篇: Removing PDF invisible objects with iTextSharp
下一篇: itextsharp and pdf