如何使用 dompdf 在 cakephp 中加载 html 文件

How to load html file inside cakephp using dompdf

我正在使用 dompdf 和 cakephp 3.6 生成从 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>

你可以试试这个。将其放入控制器方法中。 $view_output 是存储 ctp 文件内容的变量。 "elements" 是要渲染的 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');

下面是一个例子,在没有视图显示或输出的情况下,将名为“box”的元素的html存储为变量“text”

举个例子

你可以这样试试

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);
}