输入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既不包含文本也不包含图像");
}