2011-02-12 433 views
5

我正在研究一個有多個pdf文件的學校項目。應該有一個名字搜索功能,我只需輸入學生的姓名,並打開所有他/她的名字的PDF文件。做這個的最好方式是什麼?我在網上尋找解決方案,所有我想出來的是iTextSharp,這使得更加困惑。在pdf文件中搜索字符串

這可能嗎?也許有人可以請給我一個教程鏈接,或者其他什麼。 :) 非常感謝。

回答

3

PDF是一個非常複雜的規範,可以創建如此多的變體,除非您使用相同的工具讀取它以創建它(並且通常甚至不是那麼),否則無法可靠地進行解析。有幾種工具可以將PDF壓縮成文本字符串(例如pdf2text),並且可能會搜索這些文件,但它不可靠。

許多PDF工具只實現了一些規範。有些人認爲搜索PDF的最佳方式是將其縮小爲圖像,然後進行OCR。

2

我覺得你的任務可作如下劃分:

  • PDF文件的

    • 構建索引寫一些代碼將使用索引來定位每當執行搜索
    • 寫一些代碼相關的PDF將打開發現PDF或顯示一個警告,如果什麼也沒有找到

    要建立索引你可以使用一些集成解決方案,像Apache LuceneLucene.Net或將每個PDF轉換爲文本並從文本中自行建立索引。

    其他兩個步驟相當平凡,取決於第一步中使用的語言/技術。

    你的問題被標記爲與.NET相關,所以你可以嘗試Docotic.Pdf library建立索引(免責聲明:我爲Bit Miracle工作)。

    Docotic.Pdf可用於從PDF文件中以純文本或以每個塊的座標爲文本塊的集合提取文本。

  • 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 
    

    現在您可以輕鬆搜索這些文件。