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

How to redact a large rectangle of a PDF by iTextSharp?

我尝试使用 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 来测试,如果我将 Rectangle 更改为

new Rectangle(77f,77f,200f,200f)

它会很好用...但是当我变回较大的矩形时:

new Rectangle(77f,77f,600f,600f)

它停止工作了。请帮忙!

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

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


如果首先将源文件作为 byte[] 读入内存,然后从该数组构造 PdfReader,则可以使用与 [=13= 的输出相同的文件] 在 reader 上运行。但也不推荐这种模式:如果在盖章过程中出现问题,原始文件内容可能已经被删除,所以你既没有未盖章的原始PDF,也没有盖章结果PDF。

不得不向客户解释他的文件已经永远消失了可能会很尴尬...