Tar*_*don 22
这样做可能会有一些困难.问题是PDF是一种重视良好排版的演示格式.假设你只想输出一个单词:点击.
PDF渲染引擎可能会将其输出为2个单独的调用,如此伪代码所示:
moveto (x1, y); output ("T")
moveto (x2, y); output ("ap")
Run Code Online (Sandbox Code Playgroud)
这样做是因为字母T和a之间的默认字距调整(字母间间距)可能不被渲染引擎接受,或者它可能是在字符之间添加或删除一些微空间以获得完全对齐的线.最终导致的结果是,在PDF中找到的实际文本片段通常不是完整的单词,而是它们的一部分.
Dav*_*ond 15
看看DotNet上的Tika,可通过Nuget获取:https://www.nuget.org/packages/TikaOnDotnet.TextExtractor/
这是使用IKVM的非常好的Tika java库的包装器.非常易于使用,可处理PDF以外的各种文件类型,包括新旧办公格式.它将根据文件扩展名自动选择解析器,因此它很简单:
var text = new TextExtractor().Extract(file.FullName).Text;
Run Code Online (Sandbox Code Playgroud)
更新:此解决方案的一个注意事项是IKVM上的开发已经结束.从长远来看,我不确定这意味着什么.http://weblog.ikvm.net/2017/04/21/TheEndOfIKVMNET.aspx