我尝试使用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();
如果我将Rectangle更改为
,我会使用http://sox.sourceforge.net/sox.pdf进行测试new Rectangle(77f,77f,200f,200f)
它会很好用......但是当我改回更大的矩形时:
new Rectangle(77f,77f,600f,600f)
它停止工作。请帮忙!
答案 0 :(得分:0)
iText开发通常会警告不要标记基础PdfReader
读取的同一文件。如果按照OP的代码完成,读写操作可以相互进入,结果是不可预测的。
使用不同的文件进行读取和写入后,OP的解决方案开始工作。
如果首先将源文件作为byte[]
读入内存,然后从该阵列构造PdfReader
,则可以使用相同的文件作为PdfStamper
操作的输出在那个读者身上。但是也不建议使用此模式:如果在标记过程中出现某些问题,原始文件内容可能已被删除,因此您既没有已加盖的原始PDF也没有标记结果PDF。
向客户解释他的文件完全消失可能会令人尴尬......