Я нашел в Интернете учебник о том, как создать форму Wkhtmltopdf, в которой вы можете ввести URL своего веб-сайта, и он автоматически создаст PDF.
Сначала мне нужно было скачать исполняемый файл wkhtmltopdf-amd64 по адресу:
http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2
Есть два кода:
Форма (вставлена в index.php):
<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>
Файл 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"; Теперь я получил сообщение об ошибке на новой странице: Предупреждение: система () была отключена по соображениям безопасности в /home/.../domains/.../public_html/.../wkhtmltopdf.php в строке 40
Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/.../domains/.../public_html/.../wkhtmltopdf.php:40) в / home / ... /domains/.../public_html/.../wkhtmltopdf.php в строке 43
Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/.../domains/.../public_html/.../wkhtmltopdf.php:40) в / home / ... /domains/.../public_html/.../wkhtmltopdf.php в строке 44
Предупреждение: файл чтения (/tmp/output.pdf) [function.readfile]: не удалось открыть поток: такого файла или каталога нет в /home/.../domains/.../public_html/stage/wkhtmltopdf. PHP на линии 45
(... мои домены.)