【发布时间】:2011-06-26 01:19:38
【问题描述】:
我正在处理一个包含多个 pdf 文件的学校项目。应该有一个按名称搜索的功能,我只需输入学生的名字,所有带有他/她名字的 pdf 文件都应该打开。做这个的最好方式是什么?我在网上寻找解决方案,但我想出的只是 iTextSharp,这让我更加困惑。
这可能吗?也许有人可以给我一个教程的链接,或者什么。 :) 非常感谢。
【问题讨论】:
我正在处理一个包含多个 pdf 文件的学校项目。应该有一个按名称搜索的功能,我只需输入学生的名字,所有带有他/她名字的 pdf 文件都应该打开。做这个的最好方式是什么?我在网上寻找解决方案,但我想出的只是 iTextSharp,这让我更加困惑。
这可能吗?也许有人可以给我一个教程的链接,或者什么。 :) 非常感谢。
【问题讨论】:
使用 iTextSharp。它是免费的,您只需要“itextsharp.dll”。
http://sourceforge.net/projects/itextsharp/
这是一个从 PDF 中读取文本的简单函数。
Public Shared Function GetTextFromPDF(PdfFileName As String) As String
Dim oReader As New iTextSharp.text.pdf.PdfReader(PdfFileName)
Dim sOut = ""
For i = 1 To oReader.NumberOfPages
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)
Next
Return sOut
End Function
现在您可以轻松搜索这些文件了。
【讨论】:
PDF 是一个非常复杂的规范,可能会创建如此多的变体,以至于无法可靠地解析,除非您使用与创建它时使用的工具相同的工具来阅读它(而且通常甚至不是这样)。有几种工具可以将 PDF 展平为文本字符串(例如 pdf2text),并且可以搜索这些工具,但不可靠。
许多 PDF 工具只实现了部分规范。有人建议搜索 PDF 的最佳方法是将其缩小为图像,然后进行 OCR。
【讨论】:
我认为你的任务可能会被拆分如下:
要建立索引,您可以使用一些集成的解决方案,如Apache Lucene 或Lucene.Net 或将每个 PDF 转换为文本并自己从文本构建索引。
其他两个步骤相当简单,取决于第一步使用的语言/技术。
您的问题被标记为与 .NET 相关,因此您可以尝试 Docotic.Pdf library 进行索引构建(免责声明:我为 Bit Miracle 工作)。
Docotic.Pdf 可用于从 PDF 文件中提取文本作为纯文本或文本块的集合以及每个块的坐标。
【讨论】: