PDF文件删除全部TXT文本层

您好,感谢您的查看和帮助!

1,我在使用最新的API,下面的代码可以删除PDF上面的文本层,您还有其他更简便更好的方法吗?

        //https://docs.aspose.com/pdf/net/replace-text-in-pdf/
        // 打开文档
        Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("input.pdf");

        //循环遍历所有 pdf 文档页
        for (int i = 1; i <= pdfDocument.Pages.Count; i++)
        {
            Aspose.Pdf.Page page = pdfDocument.Pages[i];
            Aspose.Pdf.OperatorSelector operatorSelector = new Aspose.Pdf.OperatorSelector(new Aspose.Pdf.Operators.TextShowOperator());
            //选择页面上的所有文本
            page.Contents.Accept(operatorSelector);
            //删除所有文本
            page.Contents.Delete(operatorSelector.Selected);
        }

        pdfDocument.Save("out.pdf", Aspose.Pdf.SaveFormat.Pdf);

2,获得PDF文本层,您还有其他更简便的方法吗?

             //打开PDF文件
            Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(filename);

            //创建文本吸收器对象来提取文本
            Aspose.Pdf.Text.TextAbsorber textAbsorber = new Aspose.Pdf.Text.TextAbsorber();

            textAbsorber.ExtractionOptions = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Pure);
            //将比例因子设置为0.5足以拆分大多数文档中的列
            //设置为零允许算法自动选择比例因子
            textAbsorber.ExtractionOptions.ScaleFactor = 0.5; /* 0; */

            //接受所有页面的吸收器
            pdfDocument.Pages.Accept(textAbsorber);

            string extractedText = textAbsorber.Text;

3,API这个方法:public JpegDevice(PageSize pageSize, Resolution resolution, int quality);里面的PageSize 如何传递参数?

错误代码:
PageSize pageSize=new PageSize();
pageSize.Width=66.6;
pageSize.Height=100;

Aspose.Pdf.Devices.JpegDevice jpegDevice = new Aspose.Pdf.Devices.JpegDevice(pageSize,resolution, 50);

@fhn123456

1- 您也可以使用下面的代码片段来从 PDF 中删除所有文本:

Document pdfDocument = new Document(dataDir + @"input.pdf");

foreach (var page in pdfDocument.Pages)
{
 TextFragmentAbsorber absorber = new TextFragmentAbsorber();
 absorber.Visit(page);
 absorber.RemoveAllText(page);
}

2- 您已经在使用更简单的方法从 PDF 中提取文本。您是否遇到任何问题?

3- 请使用以下代码段指定页面大小:

JpegDevice jpegDeviceLarge = new JpegDevice(PageSize.A4, new Resolution(150), 100);

您好,感谢您的回复和帮助!

1,您给我提供的代码,我发现更精简,谢谢您。

2,很久以前使用API 17.7版本,有些PDF提取文本,程序会一直卡在下面这行代码中,一直卡着,后来我就采用了Itextsharp,提取文本,我发现Itextsharp提取文本,有些PDF无法提取到TXT,我又换回Aspose.Pdf,使用最新的API希望不会出现之前的问题。

   //接受所有页面的吸收器
   pdfDocument.Pages.Accept(textAbsorber);

3,public JpegDevice(PageSize pageSize, Resolution resolution, int quality);里面的PageSize,只能使用AIP内部的页面大小,如果我想自定义页面大小public JpegDevice(int width, int height, Resolution resolution, int quality);需要使用这个AIP对吗?

@fhn123456

1- 感谢您的反馈。

2- 当然,请花点时间测试一下,如果您遇到任何问题,请随时告诉我们。

3- 是的,您对该方法的理解是正确的。

好的,感谢您的帮助和解答!您的帮助是我继续使用下去的动力。