如何通过iTextSharp编辑PDF的大矩形
本文关键字:PDF 何通过 iTextSharp 编辑 | 更新日期: 2023-09-27 17:58:16
我尝试使用iTextSharp 5.5.9来编辑PDF文件。问题是,当我在PDF上编辑一个大的矩形字段时,它无法保存文件。这是代码:
PdfReader reader1 = new PdfReader(new FileStream(DesFile, FileMode.Open));
Stream fs = new FileStream(DesFile, FileMode.Open);
PdfStamper stamper = new PdfStamper(reader1, fs);
List<PdfCleanUpLocation> cleanUpLocations = new List<PdfCleanUpLocation>();
cleanUpLocations.Add(new PdfCleanUpLocation(1, new Rectangle(77f,77f,600f,600f), BaseColor.GRAY));
PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper);
cleaner.CleanUp();
stamper.Close();
reader1.Close();
我使用http://sox.sourceforge.net/sox.pdf要测试,如果我将矩形更改为
new Rectangle(77f,77f,200f,200f)
它会很好地工作。。。但当我换回更大的矩形时:
new Rectangle(77f,77f,600f,600f)
它停止工作。请帮忙!
iText开发通常会警告不要在底层PdfReader
读取的同一文件上盖章。如果按照OP的代码进行,读写操作可能会相互干扰,结果是不可预测的。
在使用不同的文件进行读取和写入之后,OP的解决方案开始工作。
如果首先将源文件作为byte[]
读取到内存中,然后从该数组构造PdfReader
,则可以使用相同的文件作为在该读取器上操作的PdfStamper
的输出。但也不建议使用这种模式:如果在盖章过程中出现一些问题,原始文件内容可能已经被删除,因此您既没有未盖章的原始PDF,也没有盖章的结果PDF。
不得不向客户解释他的文件已经完全不见了,这可能会很尴尬。。。