2011-02-17 1 views
0

에 PDF를 다운로드 하시겠습니까? 사용자는 링크를 클릭하고 ("이 페이지를 PDF로 다운로드") 자신의 HD로 pdf를 다운로드합니다.wkhtmltopdf : <a href="http://code.google.com/p/wkhtmltopdf/" rel="nofollow">wkhtmltopdf</a> 또는 <a href="https://github.com/knplabs/snappy" rel="nofollow">snappy</a>을 사용하여 자동 생성 (사용자의 HD로)하는 방법 PDF를 다운로드 하시려면

감사

하비 여기

+0

브라우저에서 파일을 열지 않고 다운로드하는 방법을 묻는 중입니까? –

답변

0

내가 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}\"") 
2

PHP 그것을 할 방법은 다음과 같습니다 PHP 작업 wkhtmltopdf을 얻기의 더 나은 방법이있다, 그러나, 나는 인쇄 할 수 있기를 내 커맨드 라인이 무엇인지 알기 때문에 조금 더 쉽게 결과 페이지를 디버깅 할 수 있습니다. 그것은 단지 코드에 관한 것이 아니라 여백 및 기타 페이지 세부 사항을 수정하는 것에 관한 것입니다. 여기에 wkhtmltopdf 웹 루트에있는 바이너리이며, 마진이 0으로 설정되어, 배경이 꺼집니다 :

$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로 설정하는 것이 중요합니다. 그렇지 않으면 브라우저는 콘텐츠 유형을 PDF로 처리 할 수 ​​있는지 여부를 알 수 없습니다.

Snappy website에는 실제로 이것에 대한 준비가 된 예제가 있습니다.

$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'); 
+2

왜 커뮤니티 위키입니까? – Nenotlep