【问题标题】:PDF special searching iOSPDF 特别搜索 iOS
【发布时间】:2012-12-19 04:51:08
【问题描述】:

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

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

我上传了one file here

您可以通过“预览”应用打开此文件并搜索“ra”一词来检查。它工作完美。如果你把这个文件拖到源PDFKitten并做一些配置让源打开它,然后尝试搜索,它不起作用。

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

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

【问题讨论】:

    标签: objective-c ios search pdf


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回答。我现在明白了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多