我正在尝试使用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的一些技巧,但没有成功。有什么想法吗?
答案 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文件。