wkhtmltopdfまたはsnappyを使用して生成された pdf を (ユーザーの HD に) 自動的にダウンロードする方法は? ご存知のように、ユーザーはリンク (「このページを PDF としてダウンロード」) をクリックし、PDF を自分の HD にダウンロードします。
よろしく
ハビ
wkhtmltopdfまたはsnappyを使用して生成された pdf を (ユーザーの HD に) 自動的にダウンロードする方法は? ご存知のように、ユーザーはリンク (「このページを 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);
エラーメッセージに関しては、パススルーを実行してもあまり戻ってこないと思いますが、送信したものは何でも実行されます。ヘッダーに関しては、コンテンツ タイプを PDF に設定することが重要です。そうしないと、ブラウザーはそれをどう処理すればよいかわかりません。
SnappyのWeb サイトには、このためだけに用意されたサンプルも用意されています。
$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}\"")