Php 生成数百个PDF

Php 生成数百个PDF,php,pdf,dompdf,large-data,Php,Pdf,Dompdf,Large Data,我需要生成270 PDF,我使用DOMPDF。问题是,在生成20PDF之后,我得到了一个内部服务器错误。我也把时间限制设为零。 生成许多pdf的最佳方法是什么?您应该看看。这是一个很好的工具,我一直在使用它生成数千个PDF,包含数千个页面,没有任何问题 语法非常简单: wkhtmltopdf http://google.com google.pdf 这将从google主页生成pdf。要使用Dompdf生成大量文档,我将为每个渲染生成一个外部进程。这既可以更快,也可以更少地占用资源(即在内存使用

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

您应该看看。这是一个很好的工具,我一直在使用它生成数千个PDF,包含数千个页面,没有任何问题

语法非常简单:

wkhtmltopdf http://google.com google.pdf

这将从google主页生成pdf。

要使用Dompdf生成大量文档,我将为每个渲染生成一个外部进程。这既可以更快,也可以更少地占用资源(即在内存使用方面)[]

我过去在类似任务中使用的步骤是:

  • 生成要呈现的每个HTML文档(可选地保存到文件)
  • 生成一个将HTML呈现为PDF的进程
  • 如果HTML已保存到文件中,请删除该HTML
  • 第二步是这样的:

    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());
    
    额外信息:当我实际创建一个具有易于定义页面的大型文档时。作为该过程的第四步,我使用将呈现的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);
    
    $exec_cmd='pdftk';
    
    对于($html_doc=1;$html_doc可能一次一个?@MarkBaker我将pdf生成while..中,表中有270条记录“500内部服务器错误”状态代码(或空白页)这意味着您的脚本正在抛出错误,但您尚未将PHP配置为显示错误消息。这是您在继续之前需要解决的问题,因为如果没有错误消息的帮助,很难正确编写代码。错误报告的经验法则是在开发中显示并在生产中登录。作为起点,我建议您它是计算机中的系统范围的
    php.ini
    文件,您可以在其中开发和调整
    错误报告
    显示错误
    指令()@Caio脚本将由cronjob执行,但目前我正在运行browser@Eliana因此,试着运行在colose…php script.php中,看看是否有效。您注意到了什么?值得注意的是,wkhtmltopdf运行的是实际的(无头)浏览器,因此它既不是轻量级的,也不是特别快。它可能不是批处理的好选择,尤其是在作业不涉及复杂布局的情况下。当然,它确实取决于要转换的数据。复杂布局可能不好看。您也可以使用
    tcpdf
    手动布局页面。这样您可以获得更多的页面对最终结果进行分析,但生成/编码它也需要花费更多的精力。如果您有一个运行时应用程序,它可能会更快。@cb0我动态生成输出…因此我有一个变量$output=“my html”我需要将pdf保存到文件夹中。在这种情况下,我可以这样做:wkhtmltopdf$output/folder/mypdf.pdf还是不可以?看看这个awnser:来自Michael Härtl。他描述了如何在php中使用它,而不使用html文件,而是在变量中使用html代码。@Eliana我不会将复杂的字符串作为命令行参数传递,最好使用标准的inpu或者临时文件。不管怎样,不要只是重写你的整个应用程序,甚至连现在出了什么问题都不知道。