2

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

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

我在这里上传了一个文件

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

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

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

4

1 回答 1

1

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

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

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

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

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

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

于 2013-01-05T00:29:28.380 回答