如何自动下载(到用户的 HD)使用wkhtmltopdf或snappy生成的 pdf ?您知道.. 用户单击链接(“将此页面下载为 PDF”)并将 pdf 下载到他/她的 HD。
问候
哈维
PHP:有更好的方法让 wkhtmltopdf 与 PHP 一起工作,但是,我希望能够打印出我的命令行,以便我可以更轻松地调试生成的页面。这不仅仅是关于代码,而是关于正确设置页边距和其他页面细节。这里的 wkhtmltopdf 是 web 根目录中的二进制文件,边距设置为零,背景关闭:
$do_it=$_SERVER["DOCUMENT_ROOT"]."/wkhtmltopdf --dpi 600 -B 0 -L 0 -R 0 -T 0 --no-background http://".$_SERVER['SERVER_NAME']."/".$filename." ".$_SERVER["DOCUMENT_ROOT"]."/".$pdf_url;
//var_dump($do_it); // uncomment to see your wkhtmltopdf parameters...
$whatever=passthru($do_it);
header('Content-disposition: attachment; filename='.$pdf_url);
header('Content-type: application/pdf');
readfile($pdf_url);
当涉及到错误消息时,我认为在运行 passthru 时不会有太多回报,但是,无论您发送什么,它都会运行。至于标题,将内容类型设置为 PDF 很重要,否则浏览器将不知道如何处理它。
Snappy 网站实际上也有一个现成的例子。
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');
这是我在 RoR 中的做法
filename = "MyNew.pdf"
fullpath = "#{RAILS_ROOT}/tmp/charts/#{filename}"
# system issues a shell command
system "/usr/local/bin/wkhtmltopdf \"http://localhost/page/to/pdf?download=t\" #{fullpath}"
send_data(File.read(fullpath), :type => 'application/pdf', :filename => filename, :disposition => "attachment;filename=\"#{filename}\"")