We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

C# 删除PDF文本层,然后再检测检测是否有文本,发现还会有文本,

输入pdf:36.pdf (2.6 MB)
使用下面的代码删除TXT文本层
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(filename);

        //循环遍历所有 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.Operator.TextShowOperator());

            //选择页面上的所有文本
            page.Contents.Accept(operatorSelector);

            //删除所有文本
            page.Contents.Delete(operatorSelector.Selected);

        }

使用下面的代码发现删除的pdf文本层后,还会显示有文本。

       //实例化一个内存流对象来保存从文档中提取的文本
        MemoryStream ms = new MemoryStream();

        //实例化PdfExtractor对象
        Aspose.Pdf.Facades.PdfExtractor extractor = new Aspose.Pdf.Facades.PdfExtractor();

        //将输入PDF文档绑定到提取器
        extractor.BindPdf(filename);

        //从输入的PDF文档中提取文本                                                                                                                                                                                                                                                                                                                                                                                                                                                           
        extractor.ExtractText();

        //将提取的文本保存到文本文件中
        extractor.GetText(ms);

        //检查MemoryStream长度是否大于或等于1
        bool containsText = ms.Length >= 1;

        //从输入的PDF文档中提取图像
        extractor.ExtractImage();

        //获取所有提取的图像
        //while (extractor.HasNextImage())
        //extractor.GetNextImage(@"E:\桌面\36\新建文件夹 (2)\" + DateTime.Now.Ticks.ToString() + "_out.jpg");

        //在while循环中调用HasNextImage方法。当图像结束时,循环将退出
        bool containsImage = extractor.HasNextImage();

        //现在看看这个PDF是纯文本还是纯图像
        if (containsText && !containsImage)
        {

            Console.WriteLine("PDF仅包含文本");

        }
        else if (!containsText && containsImage)
        {

            Console.WriteLine("PDF仅包含图像");

        
        }
        else if (containsText && containsImage)
        {

            Console.WriteLine("PDF包含文本和图像");         
           
        }
        else if (!containsText && !containsImage)
        {

            Console.WriteLine("PDF既不包含文本也不包含图像");

        }

@fhn123456

我们已经使用最新版本的 Aspose.PDF for .NET 22.3 测试了该场景,但没有发现共享问题。

代码示例显示 PDF 仅包含图像