php - 在 Symfony 中,有没有办法一次创建 pdf 文件页面?

标签 php symfony pdf-generation twig

我有带 TWIG 模板引擎的 Symfony 框架。我正在制作 1000 页的 pdf

<dynamic-page>...content in for-loop...</dynamic-page>`

然而,当使用 ps_facade 写入磁盘时,它给我内存耗尽的 fatal error 。那么,有什么方法可以以 5 页为单位创建此 pdf 吗?

经过研究,我发现使用包含 5 页数据的模板,然后将其写入文件应该可行。但那样我将无法添加页码,因为页码应该是 1-1000。我的页脚代码如下所示,

<placeholders>
    <footer>
        <div height="30px" width="100%">
        <hr/>
        <div float="left">Blah Blah</div>
        <div float="left" margin-left="350px"><page-info format="Page %s of %s"></div>
        </div>
    </footer>
</placeholders>

最佳答案

您应该为 long processes like this 使用消息系统. RabbitMQ 可以胜任这项工作。

  1. 您的用户请求 pdf
  2. 您立即告诉他他的请求已被考虑在内,工作完成后他会收到一封电子邮件,或者他可以稍后回来
  3. 消费者看到该工作,并启动 pdf 生成(不必在 php 中)。

优点: 由于进程不是web版php运行的,所以没有memory_limit和max_execution时间限制 如果作业已经在运行,您可以告诉您的用户,而不是为同一个 pdf 启动另一代。由于人们在不耐烦时经常刷新页面,这对您的服务器来说确实是一个巨大的优势(更少的 CPU 使用率)。

缺点: 您必须设置一个消息传递服务器并学习一些东西。但这真的是一个骗局吗?

关于php - 在 Symfony 中,有没有办法一次创建 pdf 文件页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12790414/

相关文章:

PHP Mini 离线网络服务器?

php - Symfony 3.4,FOSUserBundle : SQL Errors with postgresql

php - 语法错误或访问冲突 : 1140 Mixing of GROUP columns laravel

php - CURLOPT_NOPROXY 不影响 PHP

php - 从两个已经连接的表中查询

validation - 如何验证symfony2实体集合中的唯一实体

symfony - 生成唯一的 id - Doctrine - symfony2

php - html2fpdf 中的多页表格

java - iText : PDFPTable - Not able to insert data in specific column

java - 使用 iText 外部 CSS 将 HTML 转换为 PDF