【问题标题】:How to load html file inside cakephp using dompdf如何使用 dompdf 在 cakephp 中加载 html 文件
【发布时间】:2018-12-19 07:13:58
【问题描述】:

我正在使用带有 cakephp 3.6 的 dompdf 来生成从 HTML 到 PDF 的打印件

我在 drivercontroller 中有一个函数名称 test,我想加载一个在 src\Template\DriverDetails 中创建的 ctp 文件,文件名为 testpdf.ctp

你能帮我建议如何传递完整的文件。

下面是我的代码

public function test()  {
            $html = file_get_contents("testpdf.ctp");            
            $dompdf = new Dompdf();
            $dompdf->loadHtml($html);
            $dompdf->setPaper('A4', 'portrait');
            $dompdf->render();
            $dompdf->stream("invoice.pdf", array("Attachment" =>0));
            exit(0);
        }

src\Template\DriverDetails\testpdf.ctp

<html>
    <body>
        <table>
            <tr><td align="center"><?php echo $id; ?></td></tr>
            <tr><td align="center">Demo Data</td></tr>
        </table>
    </body>
</html>

【问题讨论】:

    标签: php cakephp pdf-generation cakephp-3.0 dompdf


    【解决方案1】:

    你可以这样试试。

    public function test()
    {
        $data = "This can be accessible in view file";
        $builder = $this->viewBuilder();
        $builder->autoLayout(false);
    
        // set your template path [don't use .ctp]
        $builder->template('Users/add');
    
        //Pass data into view file
        $view = $builder->build(['data' => $data]);
    
        //Render view file content and store into variable
        $viewContent = $view->render();
        var_dump($viewContent);
    }
    

    【讨论】:

      【解决方案2】:

      你可以试试这个。把它放在控制器方法中。 $view_output 是存储 ctp 文件内容的变量。 “元素”是要渲染的 ctp 文件。在您的情况下,它是 testpdf

      /* Make sure the controller doesn't auto render. */
       $this->autoRender = false;
      
      /* Set up new view that won't enter the ClassRegistry */
      
      $view = new View($this, false);
      $view->set('text', 'Hello World');
      $view->viewPath = 'elements';
      
      /* Grab output into variable without */
      $view_output = $view->render('box');
      

      下面是一个使用“text”变量存储名为“box”的元素的html的示例,而不显示或输出视图

      Here is an example

      【讨论】:

      • 我没有得到,在哪里指定我的文件名以及如何处理此代码..你能解释一下分步过程吗..
      • 编辑了我的答案。请检查。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2018-09-16
      • 2015-02-23
      • 2012-12-29
      • 2021-12-07
      • 2014-06-01
      • 1970-01-01
      相关资源
      最近更新 更多