【问题标题】:PHP Reporting With Templates带有模板的 PHP 报告
【发布时间】:2011-03-29 15:42:53
【问题描述】:

我正在寻找有关如何在 PHP 中进行一些报告的建议。具体来说,我需要 PDF 渲染,并且我想尽可能地将演示文稿与我的代码分开(某种模板?)。

我最近在工作中收到了一个 PHP4 代码库,我负责升级到 PHP5。目前的报告是通过 TCPDF 创建的,它是由直接从 PHP 生成的 HTML 驱动的。事实证明,升级过程极具挑战性。我在使用 TCPDF 时遇到了多个问题,它只会进入无限循环并且永远不会返回。通过一些故障排除和论坛帖子,似乎我们正在做一些 TCPDF4 和 PHP4 没有问题但 TCPDF5 和 PHP5 有问题的东西。不幸的是,我没有在我们违反的任何规则上出错,而​​是无限挂起。我们的内部代码可以使用一些重构,我觉得重写可以缓解许多这些问题,但是我现在不反对超越 TCPDF。

我们的代码还混合了许多 HTML 生成和其他报告功能。我真的很想将其分开,以便在编辑或创建报告时几乎不需要 PHP 代码。我不需要什么太花哨的报告。需要在单个选项卡上支持基本数据表和多个水平窗格。有图表,但它们目前是由单独的包生成的,只是作为图像直接读取。关于重新做这些报告的最佳方法的建议?谢谢。

【问题讨论】:

    标签: php pdf reporting


    【解决方案1】:

    您可以使用 PHP 作为模板引擎,并且可以将 HTML 输出转换为 PDF。

    以下是 PHP 模板的选项:

    • 使用Smarty,它非常简单,并且有自己的模板语言,但我认为它对于您的使用有点过头了。
    • 或者您可以只使用普通的 PHP,只需将模板代码放入一个单独的目录并创建一个函数 render_template('template_name.php') 或类似的东西。

    就您而言,我认为您可以编写自己的类来处理报告。这里只是一个简单的用法草图:

    <?php
     $report = new Report(1234);    // report id
     $report->template = 'default'; // or something different
     $report->addField('Users', array('Claire', 'Fred', 'Kevin'), array('renderArray' => true));
     $report->addField('Note', '<p>This report was generated automatically.');
    

    所以,最终你可以使用这个简单草图背后的一些简单想法。

    我希望我正确理解了您的问题,并且我可以帮助您回答这个问题。

    【讨论】:

    • 是的,我想你理解得很好。我去看看 Smarty,谢谢。
    【解决方案2】:

    我使用多个类创建了一些动态 PDF:将 PDF 和 Pdf 设计与数据访问和管理分开

    我有一个抽象类,您可以将其用于所有报告。此类处理 PDF 生成(所有设置),您可以设计一些样式(“writeTitle1()”)或辅助方法来呈现数据。例如“写报告表()” 如果你打算保留一个转换 html2pdf 的系统,这个类也可以生成一些 html,或者调用任何模板引擎。 在我的设计中,这个类通常包装了 PDF 引擎。 (我经常用Cezpdf)

    然后对于每个报表,一个子类,专注于数据管理:获取和格式化数据,然后调用渲染方法。

    这是获得一些可见性的第一步:独立层。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多