PDF格式的全文搜索 - 使用VB .net代码转换

时间:2010-01-04 14:30:12

标签: pdf full-text-search pdf-generation

我有一个自动将Word文档转换为PDF的应用程序。问题是我无法在转换后的PDF中使用全文搜索。而如果通过Microsoft Word应用程序转换,我可以搜索pdf。在此先感谢您的支持。

1 个答案:

答案 0 :(得分:2)

这取决于转换的完成方式。

PDF是一种相当图形格式的中性页面描述语言。这意味着您在最终PDF屏幕上看到的像素可能来自许多不同类型的运算符。

在最好的情况下,文本表示为文本。您可以通过打开PDF并搜索“/类型/页面”(或“/类型/页面”)文本来轻松解决这个问题。这将显示一个页面字典,描述文档中的页面。在该字典中(由<<>>分隔),您将看到类似“/ Resources 15 0 R”的内容。这将告诉您页面级资源的描述位置。“15 0 R”表示“对象的引用15,生成0.所以现在搜索“15 0 obj”(或者更确切地说是文件中的内容),它会带你到另一个字典。在资源字典中,你应该看到这样的东西:

15 0 obj << /Font <</F1 6 0 R /F2 8 0 R>>
   /XObject <</Im0 10 0 R>>
>> endobj

这意味着此页面使用了两种字体和一个外部对象。

如果资源字典中没有/ Font条目,则此页面不使用任何字体,因此无法搜索。如果有一个名为IM或Im或Image的显眼单个XObject,那么您的文档可能是构成页面的单个图像。

总而言之,PDF页面可以通过多种不同方式绘制。可以使用实际字体表示文本。文本可以用路径操作符(即一系列贝塞尔曲线)绘制。文本可以用一个或多个图像绘制。只有第一个将带有文本的全部内涵。

有可能,您的转换程序只是将Word文档打印到图像并在PDF中对图像进行编码。

为了完成搜索本文档的下一个人 - 可以在PDF文档中放置不可见的文本。我编写的代码采用原始图像,通过OCR引擎运行它们,将图像放在PDF上,然后放下OCR引擎返回的不可见文本。隐形文本既可选择又可搜索。

有关详细信息,请参阅第8章(图形)和第9章(文本)中的PDF参考(我交叉检查了Adobe的当前规范)。