웹 사이트 URL을 입력 할 수있는 Wkhtmltopdf 양식을 만드는 방법에 대한 인터넷 자습서를 찾았습니다. 그러면 자동으로 PDF가 작성됩니다. 합니다 (index.php를 붙여 넣은)wkhtmltopdf가 웹 사이트의 PDF를 만들지 않습니다
형태 :
<form action="http://localhost:8888/dev.crm/wkhtmltopdf.php" method="POST">Website:
<input name="url" size="30" type="text" value="http://www.examplewebsite.com" />
<input type="submit" value="transform into a pdf" /> </form>
http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2
두 개의 코드가 있습니다
먼저 나는에서 간부 파일 wkhtmltopdf - AMD64를 다운로드했다 wkhtmltopdf.php 파일 (wkhtmltopdf.php에 붙여 넣음) :
<?php
/****************************
BEGIN CONFIG
****************************/
// path to the program wkhtmltopdf
$conf['wkhtmltopdf'] = "http://www.mydomain.com/var/wkhtmltopdf-amd64";
// arguments for the programma wkhtmltopdf
// for example: --margin-top 50 --margin-bottom 30
// look: http://code.google.com/p/wkhtmltopdf/w/list
$conf['wkhtmltopdf_arg'] = "";
/****************************
END CONFIG
****************************/
// reads url
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
if (!preg_match($pattern, $_REQUEST['url'])) {
die("no valid URL");
}
// temporary file
$output = "http://www.mydomain.com/dev.crm/tmp/output.pdf";
// gets the html of the document
$html = file_get_contents($_REQUEST['url']);
// gets the title of document
preg_match("/\<title\>(.+)\<\/title\>/is", $html, $matches);
// looks if there is a title
if (empty($matches[1])) {
$matches[1] = "output.pdf";
}
// create pdf from html
system($conf['wkhtmltopdf'] . " " . $conf['wkhtmltopdf_arg'] . " " . $_REQUEST['url'] . " " . $output);
// output pdf to the browser
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=\"" . $matches[1] . ".pdf\"");
readfile($output);
// remove pdf
unlink($output);
exit(0);
?>
양식은 완벽하게 작동하며 wkhtmltopdf.php를 호출하지만, 어떻게 든 제 서버는 wkhtmltopdf-amd64를 사용하지 않습니다. 변환을 PDF 단추로 누르면 웹 페이지가로드되지만 PDF 파일을 열려고 시도하지만 오류가 발생합니다. '파일'.... pdf '는 열기가 불가능합니다. 비었다. PDF를 저장하지만 PDF 크기는 0 바이트입니다.
누구든지이 문제를 어떻게 해결할 수 있는지 알고 계십니까? 내 웹 서버에서 wkhtmltopdf-amd64 파일을 사용하지 않는다고 생각합니다.
// 갱신
내가 형태로 내가 로컬 호스트 URL을 붙여 보았다. 나는 그 라인을 변경했다 :
output = "/ tmp/output.pdf"; 이제 새 페이지에서 오류가 발생했습니다. 경고 : system()이 보안상의 이유로 /home/.../domains/.../public_html/.../wkhtmltopdf.php on 40 행에 비활성화되었습니다.
경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 (/home/.../domains/.../public_html/.../wkhtmltopdf.php:40에서 출력 시작됨) /home/.../domains /.../public_html/.../wkhtmltopdf.php on line 43
경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 (/home/.../domains/.../public_html에서 출력 시작됨) /.../wkhtmltopdf.php:40)
라인 44 /home/.../domains/.../public_html/.../wkhtmltopdf.php에 경고 : ReadFile을 (/ TMP/출력. pdf) [function.read file] : 스트림을 열지 못했습니다. /home/.../domains/.../public_html/stage/wkhtmltopdf.php on line 45
(the ...은 내 도메인 임). 난 정말 당신이 할 수있다 몇몇 URL로 출력 그래서,이 솔루션은 서버에 출력을하는 것입니다 생각하지 않습니다
$output = "/tmp/output.pdf";
:)
내 게시물을 업데이트했습니다. 이제 오류가 발생합니다. –
경고 : 보안상의 이유로 system()이 비활성화되었습니다. 시스템 호출을 사용할 수없는 것으로 보입니다. 당신은 php.ini에서 그것을 변경할 수 있습니다 –
어떻게 php.ini에서 그것을 변경한다는 것을 의미합니까? 나는 내 HTML 파일 안에 그 파일이 없다. 그 안에 무엇을 넣어야합니까? 여전히 작동하지 않습니다. –