3

その中のリンクが適切かどうかを確認したいPDFファイルがあります。ある意味で適切-指定されたすべてのURLはWebページにリンクされており、何も壊れていません。簡単なユーティリティや簡単にできるスクリプトを探していますか?!

例:

$ 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

そのようなものが存在するかどうかわからないので、stackoverflowでもグーグル&検索しました。しかし、まだ有用なものは見つかりませんでした。だから、誰もがそれについて何か考えを持っていることを望みます!

更新:質問を明確にするため。

4

5 に答える 5

6

使用できますpdf-link-checker

pdf-link-checkerは、PDFドキュメントを解析し、壊れたハイパーリンクをチェックするシンプルなツールです。これは、特定のドキュメントで見つかった各リンクに単純なHTTPリクエストを送信することによって行われます。

pipでインストールするには:

pip install pdf-link-checker

残念ながら、1つの依存関係(pdfminer)が壊れています。それを修正するには:

pip uninstall pdfminer
pip install pdfminer==20110515
于 2017-02-11T16:46:44.843 に答える
5

最初にLinuxコマンドラインユーティリティ「pdftotext」を使用することをお勧めします-manページを見つけることができます:

pdftotextのマニュアルページ

このユーティリティは、PDF処理ツールのXpdfコレクションの一部であり、ほとんどのLinuxディストリビューションで利用できます。http://foolabs.com/xpdf/download.htmlを参照してください。

インストールすると、pdftotextを介してPDFファイルを処理できます。

pdftotext file.pdf file.txt

処理されると、結果のテキストファイルでhttp URLを検索し、LWP::Simpleを使用してそれらを取得する単純なperlスクリプト。LWP :: Simple-> get('http:// ...')を使用すると、次のようなコードスニペットを使用してURLを検証できます。

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

それはあなたがやりたいことを成し遂げるだろうと私は思います。http URLに一致する正規表現を作成する方法については多くのリソースがありますが、非常に単純なものは次のようになります。

m/http[^\s]+/i

「httpの後に1つ以上の非スペース文字が続く」-URLがプロパティURLエンコードされていると仮定します。

于 2011-11-19T00:51:06.033 に答える
1

あなたの質問には2行の質問があります。

リンクにhttp://や有効なTLDコードなどの重要な情報が含まれていることの正規表現検証をお探しですか?もしそうなら、正規表現の専門家が立ち寄るか、URLを処理するための既存の正規表現がたくさん含まれているregexlib.comを見てください。

または、Webサイトが存在することを確認したい場合は、Python + Requestsをお勧めします。これは、Webサイトが存在するかどうかを確認するためのチェックをスクリプトで記述し、エラーコードを返さないためです。

それは私が仕事でほとんど同じ目的のために現在取り組んでいる仕事です。自動的に処理される約54kのリンクがあります。

于 2011-11-12T00:02:51.813 に答える
0
  1. リンクを収集するには
    、APIを使用してリンクを列挙するか、テキストとしてダンプして結果をリンクするか、htmlPDFMinerとして保存します

  2. それらをチェックするように要求してください:
    あなたのニーズに応じてたくさんのオプションがあります。

于 2011-11-12T14:18:58.813 に答える
0

https://stackoverflow.com/a/42178474/1587329のアドバイスは、このシンプルなツールを作成するためのインスピレーションでした(要点を参照)。

'''loads pdf file in sys.argv[1], extracts URLs, tries to load each URL'''
import urllib
import sys

import PyPDF2

# credits to stackoverflow.com/questions/27744210
def extract_urls(filename):
    '''extracts all urls from filename'''
    PDFFile = open(filename,'rb')
    PDF = PyPDF2.PdfFileReader(PDFFile)
    pages = PDF.getNumPages()

    key = '/Annots'
    uri = '/URI'
    ank = '/A'

    for page in range(pages):
        pageSliced = PDF.getPage(page)
        pageObject = pageSliced.getObject()
        if pageObject.has_key(key):
            ann = pageObject[key]
            for a in ann:
                u = a.getObject()
                if u[ank].has_key(uri):
                    yield u[ank][uri]


def check_http_url(url):
    urllib.urlopen(url)


if __name__ == "__main__":
    for url in extract_urls(sys.argv[1]):
        check_http_url(url)

保存してfilename.py、として実行しpython filename.py pdfname.pdfます。

于 2018-12-11T06:08:16.547 に答える