我在CakePHP中使用TCPDF应用程序作为供应商。我按照说明进行了一切设置。我能够生成有效的PDF,效果很好。现在我想获取已存在的HTML呈现视图的结果并从中创建PDF。
我设置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);
但它只显示带有OBJECT
字样的PDF。
如何渲染现有视图,但将输出定向到PDF?
答案 0 :(得分:1)
我愿意
ob_start();
....
ob_end_clean();
在布局中。对我来说,收集控制器中的数据还为时过早:)
基本上,我使用wkhtmltopdf来生成PDF内容。它非常独立,可以在现代浏览器中生成html。
我是如何使用它的: 有一个pdf.ctp布局,我使用ob_start()... ob_end_clean()来收集内容(包括布局)。
然后我用先前生成的html的输出运行wkhtmltopdf命令,然后读取此文件并在浏览器中打印。
您可以看到我的/app/views/layouts/pdf.ctp here。有评论所以你应该理解它。
通过这种方法,我可以用PDF运行我的整个应用程序:)
我最近没有使用TCPDF所以我不知道他在做什么。它可能类似:)
我使用这种方法构建了一个网站:http://html-2-pdf.com因此您可以看到这一点。
HTH
答案 1 :(得分:0)
尝试使用Controller的afterFilter回调和输出属性。这是一个例子:
function afterFilter(){
$pdf->writeHTML($this->output, true, false, true, false, '');
}