【问题标题】:Render table is not fit inside pdf using DOMPDF in Zend?在 Zend 中使用 DOMPDF 渲染表不适合 pdf?
【发布时间】:2021-05-31 21:34:57
【问题描述】:

我从控制器中获取了以下代码,

        ...
        $this->view->vCount = count($result);
        $this->view->Reportlist = $result;
          // create view object
        $html = new Zend_View();
        $html->setScriptPath(APPLICATION_PATH . '/layouts/scripts/');
        $html->assign('Reportlist', $this->view->Reportlist);
        $html->assign('vCount', $this->view->vCount);

        // render view
        $bodyText = $html->render('getreport.phtml');     
        //echo $bodyText; exit;
        //error_reporting(E_ALL);

        $dompdf = new DOMPDF();
        $dompdf->set_paper("a4","portrait");
        $dompdf->load_html($bodyText);

        $dompdf->set_base_path($_SERVER['DOCUMENT_ROOT']);
        $dompdf->render();
        $dompdf->stream($report_date.".pdf");
        .....

上面的代码用我的 html 内容生成 pdf。但是表格不在pdf中。 HTML 内容仅呈现 pdf 的一半。我们如何使用 DOMPDF 适应 PDF?

【问题讨论】:

  • 不确定“表格不在 pdf 中”是什么意思。您的 PHP 中没有任何看起来有问题的地方。你能发布一个示例 HTML 文档以及生成的 PDF 吗?
  • @Brian 谢谢,其实我的表有 6 列,只有 4 列显示在 pdf 中,剩下的 2 列已经从 pdf 中消失了……我们怎样才能使它完美……
  • 我明白了,所以表格呈现得太宽而无法放在页面上?切换到横向?您只能做很多事情来纠正列宽问题,但如果您可以发布示例文档,我会看看。

标签: php zend-framework dompdf


【解决方案1】:

DOMPDF 在 CSS 和表格方面存在一些问题。最佳做法是避免单元格或行跨度,并且不使用外部 css 文件。此外,仅支持一组有限的 css 规则。查看完整的兼容性列表: http://code.google.com/p/dompdf/wiki/CSSCompatibility

为了解决您的问题,您是否尝试过设置表格的宽度:

<table width="90%">.. Your data here </table>

编辑:尝试将表格放入&lt;div&gt;&lt;/div&gt;。这解决了一些严重的错误

【讨论】:

    【解决方案2】:

    不幸的是,使用 DOMPDF 将表格放入 PDF 是不可能的。 DOMPDF 团队仍在研究它,我可以说它在问题之间排在首位。您可以点击此链接了解有关此错误的更多信息...

    DOMPDF issue

    我建议您使用 MPDF 来解决您的问题。我刚刚检查了 MPDF,效果很好。

    【讨论】:

      【解决方案3】:

      td 元素内的所有内容都应与 td 元素的开始和结束标记在一行中,添加新的换行符会在表格的呈现中中断。

      更改自:

      <tr>
      <td>
          Some of your content<br/>
          some other content
      </td>
      

      致:

      <td>Some of your content<br/>some other content</td>
      

      这应该可以解决问题。

      【讨论】:

        【解决方案4】:

        在页面中放置表格是可能的,您可以为此使用 CSS(内联或头部标签)。

        确保您没有定义像 width="78" 之类的参数的样式表。

        【讨论】:

          猜你喜欢
          • 2021-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-17
          • 2021-08-26
          • 1970-01-01
          • 1970-01-01
          • 2015-07-08
          相关资源
          最近更新 更多