Задать вопрос
@sondor

Почему wkhtmltopdf генерирует кривой pdf через proc_open?

Добрый день тестирую 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;
    }
}


Примеры брал:
отсюда и отсюда
В какую сторону копать?
  • Вопрос задан
  • 575 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
@sondor Автор вопроса
Проблема была в
header('Content-Length: ' . strlen($pdf));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@krypt3r
Обёртки же есть на PHP, например, https://github.com/mikehaertl/phpwkhtmltopdf
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы