读取 PDF 文件的组件很多,准备拿来读取电子发票中的内容,起初也没在意,随便选了一款,后来发现,各组件差异还挺大。
PdfSharp
读出来中文是乱码,放弃。
PDFBox
有些出运行时错误,说认不到编码;有些能够读取(含中文),读出来一个单元格一个,且不是按顺序来的。读个字符串,还要写很长一串代码。
iText
有些文件读不全,同样顺序也是乱的。
FreeSpire.PDF
Spire.PDF 是收费的,FreeSpire.PDF 是免费的,据说只能处理 5 页以下的 PDF,但对电子发票来说够了。
能正常读、格式和看到的一致(从左至右、从上到下)、代码简洁。
PdfDocument doc = new PdfDocument("D:\\itpow.pdf"); foreach (PdfPageBase page in doc.Pages) { _text.Text += page.ExtractText() + "<br>"; }
不过各个电子发票的格式还是不一样的,比如有的使用全角冒号,有的使用半角冒号,有的冒号后面有个空格,有的使用全角括号,有的使用半角括号,有的将 2 个标题列在 1 行等等,需要做兼容识别。
FreeSpire.PDF 可直接在 NuGet 中添加,命名空间为:Spire.Pdf。
其系列产品还有:FreeSpire.Doc、FreeSpire.XLS、FreeSpire.Office、FreeSpire.PDFViewer、FreeSpire.Presentation、FreeSpire.DocViewer。
Aspose.PDF
没试了,而且这款也是收费的,最低 $999。