Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
изначально корректно работающей с кириллицей
Программа принимает html-код (в виде веб-адреса, пути к файлу либо строки кода) и генерирует на его основе php-файл на сервере.может PDF?
$descriptorspec = [
0 => ['pipe', 'r']; //stdin
1 => ['pipe', 'w']; //stdout
2 => ['pipe', 'w']; //stderr
];
//Обратите внимание на аргументы, которые я передаю при запуске wkthmltopdf
//--disable-smart-shrinking без этого аргумента, всё становится каких-то не правильных пропорций
//--dpi 96 если принудительно не поставить dpi, то размеры указанные в css в милиметрах на печати будут совсем не такими!
//- последний аргумент это прочерк, чтобы передать html через stdin
//bypass_shell (только для Windows): при установке в TRUE процесс будет запущен в обход оболочки cmd.exe
//это нужно для обхода бага https://bugs.php.net/bug.php?id=60181 "proc_open fails to read quoted whitespaced directories in Windows"
$process = proc_open("/path/to/wkthmltopdf --disable-smart-shrinking --margin-left 20mm --dpi 96 -", $descriptorspec, $pipes, null, null, ['bypass_shell' => true]);
if (is_resource($process)) {
//Пишем в stdin html контейнт
fwrite($pipes[0], $html);
fclose($pipes[0]);
//Читаем результаты и ошибки, если они вам нужны в приложении
$stdOut = stream_get_contents($pipes[1]);
$stdErr = stream_get_contents($pipes[2]);
fclose($pipes[1]);
fclose($pipes[2]);
$exitCode= proc_close($process);
}
принимает html контент в POST и возвращает готовый PDF — так и живём.
Генерируем PDF-файлы в веб-проекте: программа wkhtmltopdf