use*_*997 1 linux pdf utility verify hyperlink
我有一个PDF文件,我想验证其中的链接是否正确。从某种意义上讲是正确的-所有指定的URL都链接到网页,并且没有任何损坏。我正在寻找一个简单的实用程序或可以轻松完成的脚本?
例:
$ 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
Run Code Online (Sandbox Code Playgroud)
我不知道是否存在类似的东西,所以也用stackoverflow进行了google搜索。但是没有发现任何有用的东西。所以想对任何人有任何想法!
更新:使问题更清楚。
您可以使用 pdf-link-checker
pdf-link-checker是一个简单的工具,可以解析 PDF 文档并检查损坏的超链接。它通过向给定文档中找到的每个链接发送简单的 HTTP 请求来实现这一点。
要使用pip安装它:
pip install pdf-link-checker
Run Code Online (Sandbox Code Playgroud)
不幸的是,一个依赖项 ( pdfminer) 被破坏了。要解决这个问题:
pip uninstall pdfminer
pip install pdfminer==20110515
Run Code Online (Sandbox Code Playgroud)
我建议首先使用linux命令行实用程序'pdftotext'-您可以找到手册页:
该实用程序是PDF处理工具的Xpdf集合的一部分,大多数Linux发行版都提供该工具。参见http://foolabs.com/xpdf/download.html。
安装后,您可以通过pdftotext处理PDF文件:
pdftotext file.pdf file.txt
Run Code Online (Sandbox Code Playgroud)
处理后,一个简单的perl脚本将在结果文本文件中搜索http URL,并使用LWP :: Simple检索它们。LWP :: Simple-> get('http:// ...')将允许您使用以下代码段来验证URL:
use LWP::Simple;
$content = get("http://www.sn.no/");
die "Couldn't get it!" unless defined $content;
Run Code Online (Sandbox Code Playgroud)
我认为,这将完成您想要做的事情。关于如何编写正则表达式以匹配http URL的方法有很多资源,但是一个非常简单的格式如下所示:
m/http[^\s]+/i
Run Code Online (Sandbox Code Playgroud)
“ http后跟一个或多个非空格字符”-假定URL是属性URL编码的。