生成数百个PDF

时间:2016-06-06 12:07:43

标签: php pdf dompdf large-data

我需要生成270个PDF并使用DOMPDF。问题是生成20 PDF后我得到一个内部服务器错误。我也将时间限制设置为零。 什么是生成许多pdf的最佳方法?

2 个答案:

答案 0 :(得分:2)

要使用Dompdf生成大量文档,我会为每个渲染生成一个外部进程。这可以更快,更少资源(即内存使用)[ref]。

我过去用于类似任务的步骤是:

  1. 生成每个HTML文档以进行渲染(可选择保存到文件中)。
  2. 生成一个将HTML呈现为PDF的流程。
  3. 如果HTML已保存到文件,请删除HTML。
  4. 所以第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());
    

    奖金信息:I've done something similar当我实际创建一个带有易于定义的页面的大文档时。作为该过程的第四步,我使用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);
    

答案 1 :(得分:1)

你应该看看wkhtmltopdf。它是一个很棒的工具,我已经用它来生成数以千计的PDF文件,没有任何问题。

语法很简单:

wkhtmltopdf http://google.com google.pdf

这将从谷歌主页制作pdf。