gpt4 book ai didi

php - 无法使用 for 循环使用 dompdf 渲染两个 pdf

转载 作者:行者123 更新时间:2023-12-03 09:20:25 25 4
gpt4 key购买 nike

这些 PDF 具有相同的代码和相同的格式,区别在于文本语言。它可以渲染第一个 PDF,但无法渲染第二个 PDF。我使用以下代码对 dompdf 进行了测试,导致错误 500。此外,我使用 Codeigniter 框架。这是 dompdf 的错误还是我的错误?

$lang_array = array("chi","eng");
$i = 0;
foreach($lang_array as $lang)
{
$html = "<!DOCTYPE html><html><body>M</body></html>";
$this->dompdf->load_html($html);
$this->dompdf->set_paper("A4", 'portrait');
$this->dompdf->render();
$output = $this->dompdf->output();
file_put_contents($i.".pdf", $output);
$i++;
}

最佳答案

正如您所见,您无法重用现有的 dompdf 实例。渲染完成后,会创建许多内部对象,但 dompdf 目前没有删除方法。

但这并不是说您不能渲染多个文档。您只需重新实例化 dompdf 即可。通常您会执行如下操作:

foreach ($htmldocs as $index => $html) {
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$output = $dompdf->output();
file_put_contents($index . '.pdf', $output);
unset($dompdf);
}

我过去发现,通过将 dompdf 渲染组件隔离到单独的脚本并生成一个新进程来执行渲染,您可以获得更好的性能。所以你的 foreach 会是这样的:

foreach ($htmldocs as $index => $html) {
file_put_contents($index . '.html', $html);
exec('php dompdf.php ' . $index . '.html');
}

dompdf.php 会是这样的:

$dompdf = new DOMPDF();
$dompdf->load_html_file($argv[1]);
$dompdf->render();
file_put_contents(str_replace('.html', '.pdf', $argv[1]), $dompdf->output());

如何在 Codeigniter 中完成此操作取决于您的实现。您正在引用一个类属性(也许来自 Controller 实例?),所以我怀疑您可能需要稍微重写一下。如果您添加更多实现细节,我们可以进一步指导您。

关于php - 无法使用 for 循环使用 dompdf 渲染两个 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com