【发布时间】:2010-01-04 14:30:12
【问题描述】:
我有一个自动将 Word 文档转换为 PDF 的应用程序。问题是我无法在转换后的 PDF 中使用全文搜索。而如果它是通过 Microsoft Word 应用程序转换的,我可以在 pdf 中搜索。提前感谢您的支持。
【问题讨论】:
标签: pdf full-text-search pdf-generation
我有一个自动将 Word 文档转换为 PDF 的应用程序。问题是我无法在转换后的 PDF 中使用全文搜索。而如果它是通过 Microsoft Word 应用程序转换的,我可以在 pdf 中搜索。提前感谢您的支持。
【问题讨论】:
标签: pdf full-text-search pdf-generation
这取决于转换是如何完成的。
PDF 是一种相当图形格式的中性页面描述语言。这意味着您在最终 PDF 中在屏幕上看到的像素可能来自多种不同类型的运算符。
在最好的情况下,文本被表示为文本。您可以通过打开您的 pdf 并搜索文本“/Type /Page”(或“/Type/Page”)轻松解决这个问题。这将向您显示在文档中的页面上描述的页面字典。在该字典中(由 > 分隔,您将看到类似“/Resources 15 0 R”的内容。这会告诉您描述页面级资源的位置。“15 0 R”表示“对第 0 代对象 15 的引用. 所以现在搜索“15 0 obj”(或者更准确地说是你文件中的内容),它会带你到另一个字典。在资源字典中,你应该看到如下内容:
15 0 obj << /Font <</F1 6 0 R /F2 8 0 R>>
/XObject <</Im0 10 0 R>>
>> endobj
这意味着此页面使用了两种字体和 1 个外部对象。
如果资源字典中没有 /Font 条目,则该页面没有使用任何字体,因此不可搜索。如果有一个显眼的单个 XObject 命名为 IM、Im 或 Image,那么您的文档很可能是构成页面的单个图像。
总而言之,可以通过多种不同方式绘制 PDF 页面。可以用实际字体表示文本。可以使用路径运算符(即一系列贝塞尔曲线)绘制文本。可以用一个或多个图像绘制文本。只有第一个才会承载文字的全部内涵。
很可能,您的转换程序只是将 Word 文档打印为图像并将图像编码为 PDF。
为了让下一个搜索此文档的人更完整 - 可以在 PDF 文档中放置不可见的文本。我编写了获取原始图像的代码,通过 OCR 引擎运行它们,将图像放在 PDF 上,然后放置由 OCR 引擎返回的不可见文本。不可见的文本既可选择又可搜索。
有关更多信息,请查看第 8 章(图形)和第 9 章(文本)中的 PDF 参考(我交叉检查了 Adobe 的当前规范)。
【讨论】: