2009-02-17 111 views
0

是否可以使用delphi在pdf文件中搜索「文字」?搜索pdf文件中的文字

我有代碼,我可以在許多其他文件中搜索像(EXE,DLL,TXT),但它不適用於PDF文件。

回答

2

這取決於特定PDF的結構。

如果pdf是由圖像(掃描的頁面)組成,那麼您必須對每張圖像進行OCR並在PDF內部構建完整的文本索引。 (要查看它的圖像是否存在,請用記事本打開並查找包含隨機字符的obj標籤)。有幾個實用程序和應用程序可以爲你做這種工作,CVision PDF Compressor是我以前使用過的。

如果pdf是一個標準的PDF,那麼你應該可以像打開任何其他文本文件一樣打開它並搜索這些詞。

Here是將詳細介紹PDF的一些結構的頁面。 This一個SO職位相同。

+0

-1是一個工具。 – alamodey 2009-02-18 00:38:49

0

PDF不只是一個二進制表示。把它看作一個對象樹,其中一個對象節點有一些元數據和一些內容信息。其中一些對象有字符串數據,有些則不。其中一些甚至被加密,有些被壓縮。所以,你的字符串查找程序很難在任何PDF上運行。

2

回答this question中提到的組件/庫應該做你需要的。

1

我只是在做一個這樣的項目。我使用的方法是將PDF文件轉換爲純文本(使用pdftotext.exe),並在結果文本上創建一個索引。我們對word和其他辦公文件也做同樣的工作,效果很好!

直接從德爾福(沒有外部應用程序)直接搜索pdf文件是我覺得更困難。如果您發現任何問題,請在此更新,因爲我也會對此感興趣!

1

我使用的一個選項是使用微軟的ifilter技術,這是用於Windows桌面搜索和許多其他產品,如SharePoint和SQL Server全文搜索。

它支持幾乎任何類似office/office的文件格式,甚至包括dwg,msg,pdf和zip/rar歸檔文件。

最簡單的使用方法是在任何文件上運行FiltDump.exe,然後索引文本輸出。

要了解安裝在PC上的過濾器,可以使用ifilter explorer。 維基百科的ifilters page有一些鏈接。

1

快速PDF庫的GetPageText功能可以爲您提供PDF格式的文字以及頁碼和這些文字的座標 - 有時用於突出顯示。