替代 PDF 用于动态生成的带有分页符的文档
Posted
技术标签:
【中文标题】替代 PDF 用于动态生成的带有分页符的文档【英文标题】:Alternate to PDF for dynamically generated document with page breaks 【发布时间】:2012-03-28 11:10:09 【问题描述】:我有一个网站,它以客户信息和他们一天订购的东西的形式处理大量数据。现在,由于这个特定站点有数百个客户,并且每天每个客户都有 5-20 个订单。
网站的所有者想要一个页面,其中包含客户交付信息和他们在每个单独页面中的订单列表,以便他们可以打印并将其粘贴在包裹上。但是,每个新的客户信息都需要从新页面开始。
例如:
--起始页---
客户 1 交货信息
客户 1 订单信息
“如果订单信息很短,这里有一些空白”
----下一页----
客户 2 交货信息
客户 2 订单信息
------下一页---
客户 2 订单信息(续)(这可能只有几行,下面可能会留下很大的空白)
“这里有些空白”
----下一页---
客户 3 ...
当我试图输出纯 html 然后打印页面时,页面全乱了,所以我解决了它生成 PDF(我正在使用 MPDF53),这就是我的问题。
问题是生成 PDF 需要很长时间并且占用大量系统资源。我已经不得不增加服务器执行时间才能成功运行(默认为 30 秒)。现在随着客户的增长,列表将继续增长,执行时间也将继续增长。如果 100 个客户列表可以超过 30 秒,我想知道当它达到 1000 个或更多时会是什么。
打印页面本身不包含任何图形,并且 sql 查询的生成速度相当快(这是因为当我输出为 html 时,页面会很快加载)。
是否有任何替代方法可以在 html 文档中设置分页符,以便当我打印此页面时,它会正确遵循分页符或任何其他可以加快 pdf 生成速度的方式,或者我只需要忍受较长的执行时间.
编辑:即使使用分页符,仅使用 html 文档的一个问题是将其保存以供以后记录或参考。
谢谢
【问题讨论】:
你为什么不试试其他的pdf库? 如果其他 pdf 库不适用于 php(我没有使用 php 的经验),我相信您可以在 python 中构建一个简单的服务,或者......使用高效的库并将它们与 REST api 一起使用或其他一些 api。 我会使用 html pdf 创建速度很慢,所以除非你真的需要它,否则不要使用它 【参考方案1】:多年前我也遇到过同样的问题,最终依赖 CSS page-break-after 属性(有关更多信息,请参阅 here)。您可以尝试以 HTML 格式生成页面,并将 page-break-after:always
添加到包含客户信息的 div 中。
我不会依赖它来实现跨所有用户和平台的高度可靠的兼容性,但如果它是一个内部应用程序,那么你可能会指定他们需要使用现代版本的 Firefox、Chrome 或IE。
【讨论】:
它可以作为替代方案,但就像我在编辑中所说的(抱歉之前错过了这一点),客户可能希望将文件保留为记录。 他们可以下载 HTML 文件的副本。你也可以把它写到服务器上的一个带日期戳的日志文件中,这样即使他们当时没有保存副本,他们也可以引用它。【参考方案2】:1) 您可以尝试其他方法来生成 PDF:Convert HTML + CSS to PDF with PHP? 和 Which one is the best PDF-API for PHP?
2) 你可以考虑使用 LaTeX:http://www.mayer.dial.pipex.com/tex.htm
【讨论】:
以上是关于替代 PDF 用于动态生成的带有分页符的文档的主要内容,如果未能解决你的问题,请参考以下文章