如何使用 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);
}
我正在使用 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);
}