无法使用Perl和LWP下载PDF

时间:2017-07-27 15:56:56

标签: perl pdf lwp

我正在尝试使用Perl中的LWP :: Simple从联合国网站(安理会决议等)下载大量PDF文档。然而,我没有返回PDF,而是收到了一个HTML错误页面。考虑这个非常简单的例子:

use LWP::Simple;
use strict;

my $url = 'https://documents-dds-ny.un.org/doc/UNDOC/GEN/N16/100/02/PDF/N1610002.pdf';
my $file = 'test.pdf';
getstore($url, $file);

如果我查看“test.pdf”的内容,我发现它们是一个HTML页面。

我还尝试过使用LWP :: UserAgent和cURL的一些技巧,但没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,感谢@SteffenUllrich和@ ikegami让我走上正轨!

这确实是一个cookie问题。修复?打开一个cookie罐,首先访问该站点的主页,然后在jar中存储cookie后访问PDF。

这可以在不使用HTTP :: Cookies的情况下完成。但是,我们需要使用LWP :: UserAgent而不是LWP :: Simple。

下面的最小工作示例:

function pdfreport($id)

{
    $html = '<h1>hi</h1>';

    $pdf = PDF::loadHTML($html)->setPaper('a4')->setOrientation('portrait');

    return $pdf->download('test.pdf');

}

这将生成一个完整的PDF文件。