如何通过iTextSharp编辑PDF的大矩形?

时间:2016-07-23 12:57:32

标签: c# pdf itext

我尝试使用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)

它停止工作。请帮忙!

1 个答案:

答案 0 :(得分:0)

iText开发通常会警告不要标记基础PdfReader读取的同一文件。如果按照OP的代码完成,读写操作可以相互进入,结果是不可预测的。

使用不同的文件进行读取和写入后,OP的解决方案开始工作。

如果首先将源文件作为byte[]读入内存,然后从该阵列构造PdfReader,则可以使用相同的文件作为PdfStamper操作的输出在那个读者身上。但是也不建议使用此模式:如果在标记过程中出现某些问题,原始文件内容可能已被删除,因此您既没有已加盖的原始PDF也没有标记结果PDF。

向客户解释他的文件完全消失可能会令人尴尬......