在pdf文件中搜索字符串

时间:2011-02-12 11:30:35

标签: c# .net string search pdf

我正在开展一个有几个pdf文件的学校项目。应该按名称功能搜索,我只需输入学生的姓名,所有带有他/她姓名的pdf文件都应该打开。做这个的最好方式是什么?我在网上寻找解决方案,我想出的就是iTextSharp,它让人更加困惑。

这可能吗?也许有人可以给我一个教程或其他东西的链接。 :) 非常感谢你。

3 个答案:

答案 0 :(得分:4)

使用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

现在,您可以轻松搜索这些文件。

答案 1 :(得分:3)

PDF是一个非常复杂的规范,可以创建如此多的变体,除非您使用相同的工具来读取它,否则无法可靠地进行解析(通常甚至不会这样)。有几种工具可以将PDF压缩成文本字符串(例如pdf2text),也可以搜索这些但不可靠。

许多PDF工具只实现了一些规范。有人建议搜索PDF的最佳方法是将其缩小为图像,然后将其缩小。

答案 2 :(得分:2)

我认为您的任务可能会分为以下几种:

  • 构建PDF文件索引
  • 编写一些代码,使用索引在执行搜索时定位相关的PDF
  • 编写一些代码,打开找到的PDF,或者如果找不到任何内容则显示警告

要构建索引,您可以使用某些集成解决方案,例如Apache LuceneLucene.Net,或将每个PDF转换为文本并根据文本构建索引。

其他两个步骤相当简单,取决于第一步中使用的语言/技术。

您的问题被标记为与.NET相关,因此您可以尝试Docotic.Pdf library进行索引构建(免责声明:我为Bit Miracle工作)。

Docotic.Pdf可用于从纯文本或具有每个块的坐标的文本块集合中提取PDF文件中的文本。