Мне нужно сгенерировать 270 PDF, и я использую DOMPDF. Проблема в том, что после генерации 20 PDF я получаю внутреннюю ошибку сервера. Я также установил ограничение по времени на ноль.
Каков будет лучший способ создать много PDF?
Чтобы генерировать большое количество документов с использованием Dompdf, я бы вызывал внешний процесс для каждого рендера. Это может быть как быстрее, так и менее ресурсоемким (а именно в отношении использования памяти) [ссылка].
Шаги, которые я использовал в прошлом для аналогичной задачи:
Итак, шаг 2 будет примерно таким:
foreach ($htmldocs as $htmldoc) {
exec("php dompdf.php $htmldoc");
}
И dompdf.php будет сценарий, который создает экземпляр dompdf и отображает HTML-файл.
$dompdf = new Dompdf();
$dompdf->load_html_file($argv[1]);
$dompdf->render();
$filename = basename($argv[1], '.html').'.pdf';
file_put_contents($filename, $dompdf->output());
Информация о бонусе: Когда Я сделал что-то подобное Я на самом деле создавал большой документ с легко определяемыми страницами. В качестве четвертого шага в этом процессе я использовал Pdftk объединить визуализированные PDF документы в один PDF.
$exec_cmd = 'pdftk';
for ($html_doc = 1; $html_doc <= count($html_docs); $html_doc++) {
$exec_cmd .= ' ' . TEMP_DIR . '/' . $filenames[$html_doc] . '.pdf';
}
$exec_cmd .= ' cat output ' . FILESTORE_DIR . '/' . $packet_gen_info['packet_code'] . '.pdf';
exec($exec_cmd, $pdftk_output, $pdftk_return_code);
Вы должны посмотреть на wkhtmltopdf. Это отличный инструмент, и я использую его для создания тысяч PDF-файлов с тысячами страниц без каких-либо проблем.
Синтаксис прост, как может быть:
wkhtmltopdf http://google.com google.pdf
Это сделает PDF с главной страницы Google.