代码之家  ›  专栏  ›  技术社区  ›  Chuck Burgess

如何将现有视图渲染为PDF格式?

  •  0
  • Chuck Burgess  · 技术社区  · 14 年前

    我设置HTML变量并在视图中使用它: $pdf->writeHTML($html, true, false, true, false, '');

    以下是我尝试过的,它呈现了一个空白屏幕:

    ob_start();
    $this->render('results', 'pdf');
    $data = ob_get_contents();
    ob_end_clean();
    $this->set('html', $data);
    

    $data = $this->results();
    $this->set('html', $data);
    

    但它只显示带单词的PDF OBJECT 在里面。

    如何呈现现有视图,但将输出定向到PDF?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Nik Chankov    14 年前

    我会的

    ob_start();
    ....
    ob_end_clean();
    

    基本上,我用的是 wkhtmltopdf 生成PDF内容。它实际上是独立的,生成的html就像在现代浏览器中一样。

    有一个pdf.ctp格式使用ob\u start()的布局。。。ob\u end \u clean()以收集内容(包括布局)。

    然后我运行wkhtmltopdf命令,输出先前生成的html,然后读取此文件并在浏览器中打印它。

    你可以看到我的/应用程序/视图/布局/pdf.ctp格式 here . 有评论,所以你应该理解它。

    使用这种方法,我可以在PDF中运行整个应用程序:)

    我用这种方法建立了一个网站: http://html-2-pdf.com 所以你可以看到它的作用。

        2
  •  0
  •   Jamal Aziz    14 年前

    尝试使用控制器的afterFilter回调和输出属性。举个例子:

    function afterFilter(){
        $pdf->writeHTML($this->output, true, false, true, false, '');
    }