当前位置: 首页 > 知识库问答 >
问题:

iTextSharp-裁剪PDF文件(C#)

董康平
2023-03-14

我想使用iTextSharp和rectangle(0,100,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();
    }
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<PdfCleanUpLocation> cleanUpLocations = new List<PdfCleanUpLocation>();
        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();
    }


不幸的是,如果我想在不支付许可证的情况下将我的应用程序商业化,我就不能使用这些代码,所以我不得不考虑不同的库...

共有1个答案

蔡理
2023-03-14

您正在做的是设置页面的CropBox,这对文档的内容没有任何影响。这是经过设计的,从Acrobat1.0开始就一直是这样。

您想要做的是所谓的编辑(或者在您的情况下,排他编辑,因为您希望删除矩形边界之外的所有内容)。要做到正确,这绝对不是一件小事,主要是因为内容与要编辑的边界(图像、文本和路径)部分重叠。

 类似资料:
  • 我有一个小问题,我正在努力寻找一个解决办法。长话短说,我必须用itext从pdf中删除每个页面的顶部。我用成功地做到了这一点,但问题是,这会通过删除顶部使页面变小。 有人能帮我实现这一点,使页面大小保持不变。我的想法是用一个白色矩形覆盖顶部页面,但经过多次尝试,我没有做到这一点。 这是我用来裁剪页面的当前代码。

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题

  • 在上载PDF过程开始之前,我需要检查PDF是否具有以下属性,

  • 我试图在一个PDF文件,其中有一个矢量图形的中心,但它有文字和其他标志周围的页面,我不需要。我只需要提取文件的向量部分,到目前为止,我所能做的就是创建一个CropBox,然后将CropBox转换为位图。 这导致只提取页面中心的图形,但缺点是它是位图。一旦我使用cropbox创建了PDF,如果我在窗口中打开它,它显示了我所需要的,但是当我将其导入CorelDraw或Adobe Illustrator

  • 我已经编写了执行以下操作的代码: 以特定页面大小(例如8.5英寸x 11英寸)的PDF为例 为此,我使用方法从原始PDF获取当前页面,然后使用方法将原始页面放置到新PDF的当前页面上。 我的新挑战是,在将原始PDF添加到新PDF之前,我需要裁剪它。例如,假设我想在强制使用之前将原始PDF裁剪2英寸。输入PDF仍然是8.5英寸x11英寸,新PDF仍然是17英寸x11英寸,但新PDF中原始PDF的两个

  • 问题内容: 我正在尝试裁剪图像,然后将裁剪后的图像粘贴到另一个图像的中心。理想情况下,我希望裁切后的图像小于粘贴的图像,以便在粘贴的图像周围有一个边框,但我不知道这样是否可行。 这是我尝试过的方法(以及由此产生的错误消息): 我可以看到“区域”的大小已设为(0,0),但我不明白为什么。 任何对此的帮助将非常感谢 问题答案: 裁剪方法的PIL文档指出: 返回当前图像的矩形区域。该框是一个四元组,定义