iTextSharp – 裁剪PDF文件(C#)

我想使用iTextSharp和矩形(0,1000,600,155)裁剪PDF文件。 一切都很好,当你打开创建的* .pdf文件时,你只能看到那个裁剪的内容,但是! 如果您解析该pdf,仍然有来自文档不可见部分的信息和文本,我不能接受。 如何完整地删除该数据?

这是我的代码示例:

static void cropiTxtSharp(){ string file ="C:\\testpdf.pdf"; string oldchar = "testpdf.pdf"; string repChar = "test.pdf"; PdfReader reader = new PdfReader(file); PdfDictionary pageDict; PdfRectangle rect = new PdfRectangle(0, 1000, 600, 115); pageDict = reader.GetPageN(1); pageDict.Put(PdfName.CROPBOX, rect); PdfStamper stamper = new PdfStamper(reader, new FileStream(file.Replace(oldchar, repChar), FileMode.Create, FileAccess.Write)); stamper.Close(); reader.Close(); } 

编辑:这是有效的代码,我花了几个小时,但最后我做到了:P
首先,在项目中添加以下内容:

 using iTextSharp.text.pdf; using iTextSharp.text; using iTextSharp.xtra.iTextSharp.text.pdf.pdfcleanup; 

然后你可以使用我的代码:

  static void textsharpie() { string file = "C:\\testpdf.pdf"; string oldchar = "testpdf.pdf"; string repChar = "test.pdf"; PdfReader reader = new PdfReader(file); PdfStamper stamper = new PdfStamper(reader, new FileStream(file.Replace(oldchar, repChar), FileMode.Create, FileAccess.Write)); List cleanUpLocations = new List(); cleanUpLocations.Add(new PdfCleanUpLocation(1, new iTextSharp.text.Rectangle(0f, 0f, 600f, 115f), iTextSharp.text.BaseColor.WHITE)); PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper); cleaner.CleanUp(); stamper.Close(); reader.Close(); } 

不幸的是,如果我想在没有支付许可证的情况下将我的应用程序商业化,我就无法使用该代码,所以我不得不考虑不同的库……

你正在做的是设置页面的CropBox,它对文档的内容完全没有任何作用。 这是设计使然,自从Acrobat 1.0以来总是如此。

您想要做的是被称为编校(或者在您的情况下,由于您要删除矩形边界之外的所有内容,因此需要进行独占编辑)。 正确地做是非常重要的,主要是因为内容的问题部分地与想要编辑的边界(图像,文本和路径)重叠。