C# 在pdf文件中搜索字符串

C# 在pdf文件中搜索字符串,c#,.net,string,search,pdf,C#,.net,String,Search,Pdf,我正在做一个学校项目,有几个pdf文件。应该有一个按姓名搜索的功能,我只需输入学生的姓名,所有带有他/她的姓名的pdf文件都应该打开。最好的方法是什么?我在网上寻找解决方案,我想到的只是iTextSharp,它让人更加困惑 这可能吗?也许有人可以给我一个教程的链接,或者别的什么 非常感谢。PDF是一个非常复杂的规范,可能会创建太多变体,因此不可能可靠地解析,除非您使用与创建它时相同的工具来读取它(甚至通常不会)。有几种工具可以将PDF展平为文本字符串(例如pdf2text),可以搜索这些字符串,

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

这可能吗?也许有人可以给我一个教程的链接,或者别的什么
非常感谢。

PDF是一个非常复杂的规范,可能会创建太多变体,因此不可能可靠地解析,除非您使用与创建它时相同的工具来读取它(甚至通常不会)。有几种工具可以将PDF展平为文本字符串(例如pdf2text),可以搜索这些字符串,但不可靠


许多PDF工具只实现了部分规范。一些人建议搜索PDF的最佳方法是将其还原为图像,然后进行OCR

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

  • 建立PDF文件索引
  • 编写一些代码,在执行搜索时使用索引查找相关PDF
  • 编写一些代码,打开找到的PDF,或者在没有找到任何内容时显示警告
为了建立索引,您可以使用一些集成的解决方案,如or或将每个PDF转换为文本,然后自己从文本中建立索引

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

您的问题被标记为与.NET相关,所以您可以尝试建立索引(免责声明:我为Bit Miracle工作)


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

使用iTextSharp。它是免费的,您只需要“itextsharp.dll”

下面是一个从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
现在,您可以轻松地搜索这些文件