objective-c - PDF专搜iOS

标签 objective-c ios search pdf

我知道在 iOS 上有一个很好的 PDF 搜索源,它是 PDFKitten

但我的情况是,我遇到了一些 PDF 文件,该来源不适用于搜索。我尝试在 Mac 上通过“预览”应用程序打开这些文件并尝试搜索,它有效。

我上传了one file here .

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

我检查了源代码,它关心所有显示运算符的文本,包括 Tj、'、''、TJ。我在这些运算符(operator)的回调中放置了一些日志行,但我看到这些回调没有被调用。

你能给我一些建议或想法吗?

最佳答案

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

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

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

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

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

顺便说一下,这个 PDF 结构完全符合 PDF 规范。尽管如此,它看起来像是对 iText 库的不充分使用。像这样使用 iText 的软件作者应该检查他的代码并开始使用更适合的 iText 库类。

关于objective-c - PDF专搜iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162404/

相关文章:

objective-c - 如何确定我使用的是正确版本的核心数据模型?

iphone - objective-c后台进程应用

ios - heightForRowAtIndexPath 行索引与 cellForRowAtIndexPath 行索引不匹配

iphone - IOS中如何停止调用循环功能

PHP 搜索 - 排除以单词中间开始的搜索结果

ios - IBOutlet nil 一切看起来都正常

objective-c - iOS - 文本字段到 int 变量

iphone - iOS 5 自定义标签栏图像垂直对齐

java - 如何使用java从mongodb中完整测试搜索的结果中获取特定字段

arrays - 无法在 Swift 中找到接受 'contains' 类型的参数列表的 '(Array<String!>, String)' 重载