Добрый день тестирую wkhtmltopdf на Win через openserver.
Pdf корректно формируется, если выполняю:
exec("C:\wkhtmltopdf\bin\wkhtmltopdf.exe -q http://example.com/ my.pdf");
Когда пытаюсь через потоки сделать, pdf получается битым
$html = file_get_contents("http://example.com/");
$descriptorspec = array(
0 => array("pipe", "r"), // stdin это канал, из которого потомок будет читать
1 => array("pipe", "w"), // stdout это канал, в который потомок будет записывать
2 => array("pipe", "w"), // stderr это файл для записи
);
$process = proc_open("C:\wkhtmltopdf\bin\wkhtmltopdf.exe -q - -", $descriptorspec, $pipes, null, null, ['bypass_shell' => true]);
if (is_resource($process)) {
fwrite($pipes[0], $html);
fclose($pipes[0]);
$pdf = stream_get_contents($pipes[1]);
$errors = stream_get_contents($pipes[2]);
fclose($pipes[1]);
fclose($pipes[2]);
$return_value = proc_close($process);
if ($errors) {
echo 'PDF generation failed: ' . $errors;
} else {
header('Content-Type: application/pdf');
header('Content-Length: ' . strlen($pdf));
echo $pdf;
}
}
Примеры брал:
отсюда и
отсюда
В какую сторону копать?