PDF 是 Portable Document Format 的简称,意为“可携带文档格式”,是由 Adobe Systems 用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。PDF 文件以 PostScript 语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即 PDF 会忠实地再现原稿的每一个字符、颜色以及图象。
鉴于 PDF 文件格式比较复杂,一般通过第三方组件来对 PDF 进行操作,本文使用的是 itext7 。
NuGet: https://www.nuget.org/packages/itext7/
通过 NuGet 引入 itext7 组件之后,可以使用以下代码提取 PDF 文件中的文字:
using System.Collections.Generic; using iText.Kernel.Pdf; using iText.Kernel.Pdf.Canvas.Parser; using iText.Kernel.Pdf.Canvas.Parser.Listener; public static class PdfHelper { public static IEnumerable<string> ExtractText(string filename) { using (var r = new PdfReader(filename)) using (var doc = new PdfDocument(r)) { for (int i = 1; i < doc.GetNumberOfPages(); i++) { ITextExtractionStrategy strategy = new LocationTextExtractionStrategy(); string text = PdfTextExtractor.GetTextFromPage(doc.GetPage(i), strategy); yield return text; } } } }
示例代码:
var lines = PdfHelper.ExtractText("{PDF文件路径}").ToList();
需要注意的是:如果你的 PDF 文件是基于图片的扫描版,那么本文的代码是无法提取到文字的,你需要的是 OCR 技术。
多谢指正。
.NetFramework 4.7.2中需要增加一个using:
using System.Collections.Generic;
否则,IEnumerable会报错。
大佬强啊,这法宝,我收了