PDF特别搜索iOS

时间:2013-01-04 18:02:16

标签: objective-c ios search pdf

我知道有一个很棒的源可以在iOS上进行PDF搜索,它是PDFKitten

但我的情况是我遇到了一些PDF文件,这些来源不适用于搜索。我试图通过Mac上的“预览”应用程序打开这些文件并尝试搜索,但它可以正常工作。

我上传了one file here

您可以通过'预览'应用打开此文件进行检查,然后搜索单词'ra'。它完美无缺。如果您将此文件拖到源PDFKitten并进行一些配置以便源打开它,然后尝试搜索,它就不起作用。

我查看了源代码,它关注所有显示运算符的文本,包括Tj,','',TJ。我在这些操作员的回调中放置了一些日志行,我看到这些回调没有被调用。

你能提出一些建议或意见吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解代码,PDFKitten只会在页面的/ Resources字典的/ Font条目中查找字体。至少这是我对方法fontCollectionWithPage of Scanner的解释,setFont in pdfScannerCallbacks查询结果以设置当前字体对象。

此外,Do运算符(即用于将XObject资源的内容注入页面内容的运算符)没有回调。除非CGPDFScannerScan解释此操作符,否则根本不会扫描包含的XObject的内容。这符合您的观察结果,即文本设置操作符回调永远不会被调用。

但是,您的文件mundo1.pdf在其页面的/ Resources词典中没有任何立即/字体条目。而是将每个页面的所有实际内容分别包装到单个/ XObject资源中。这些XObject又有自己的/ Resources字典,其中包含一个/ Font条目,用于定义用于相应页面的字体。

因此,PDFKitten对文件中使用的字体一无所知,特别是关于它们的编码,因此无法从PDF内容中提取文本。也许它甚至没有看到要解释的PDF内容。

因此,我建议您在PDFKitten问题管理​​网站上发布此问题。

顺便说一下,这个PDF结构完全符合PDF规范。尽管如此,它似乎没有充分利用iText库。使用类似iText的软件的作者应该检查他的代码并开始使用更适合的iText库类。