2011-11-11 29 views
0

我有一個PDF文件,我想驗證鏈接是否正確。在某種意義上適當 - 所有指定的URL都鏈接到網頁,並且沒有任何內容被破壞。我正在尋找一個簡單的實用程序或腳本,它可以很容易地做到這一點?!如何驗證PDF文件中的鏈接

例子:

$ testlinks my.pdf 
There are 2348 links in this pdf. 
2322 links are proper. 
Remaining broken links and page numbers in which it appears are logged in brokenlinks.txt 

我不知道類似的東西是否存在,所以一派&計算器中搜索也。但是沒有找到有用的東西。所以想要任何人有任何想法!

更新:使問題明確。

回答

4

我建議您先使用Linux命令行實用程序「pdftotext」 - 你可以找到手冊頁:

pdftotext man page

該實用程序的PDF處理工具的xpdf集合的一部分,可用在大多數Linux發行版上。請參閱http://foolabs.com/xpdf/download.html

一旦安裝,您可以通過pdftotext處理PDF文件:

pdftotext file.pdf file.txt 

一旦處理,一個簡單的Perl腳本,搜索http網址生成的文本文件,並使用LWP::Simple檢索它們。 LWP ::簡單 - >獲取(「HTTP:// ...」),將允許您使用的代碼片段,如驗證網址:

use LWP::Simple; 
$content = get("http://www.sn.no/"); 
die "Couldn't get it!" unless defined $content; 

這將完成你想要做什麼,我想。有豐富的資源如何寫正則表達式匹配的HTTP URL,而是一個非常簡單的一個是這樣的:

m/http[^\s]+/i 

「HTTP後面跟着一個或多個不空格字符」 - 假設網址屬性URL編碼。

+0

無論如何,我會用這些實用程序寫我自己的腳本! – user379997

1

有兩個查詢與您的問題。

你在尋找正則表達式驗證鏈接是否包含關鍵信息,例如http://和有效的TLD代碼?如果是這樣,我相信一個正則表達式專家會放棄,或者看看regexlib.com,其中包含大量用於處理URL的現有正則表達式。

或者你想驗證一個網站存在,那麼我會推薦Python + Requests,因爲你可以腳本檢查,看看網站是否存在,並不返回錯誤代碼。

這是一個我目前在工作中完成相同目的的任務。我們有大約54k鏈接自動處理。

+0

我的問題是驗證鏈接是否沒有壞掉!謝謝。我已經正確更新了這個問題。 – user379997

+0

當到達它們時,斷開的鏈接是否被定義爲不正確的http語法或HTTP錯誤? –

+0

http錯誤 - 沒有這樣的頁面錯誤! – user379997

0
  1. 收集鏈接方式:
    使用API​​,或者傾倒文字和linkifying的結果,或者保存爲HTML PDFMiner枚舉鏈接。

  2. 請求檢查它們:
    根據您的需要,有太多的選項。

0

您可以使用pdf-link-checker

PDF鏈接檢查器是一個簡單的工具,分析了斷開的超鏈接PDF文檔和檢查。它通過向給定文檔中找到的每個鏈接發送簡單的HTTP請求來完成此操作。

要在GNU/Linux的安裝:

pip install pdf-link-checker 

不幸的是,一個依賴(pdfminer)被打破了。修復它:

pip uninstall pdfminer 
pip install pdfminer=20110515