0

我在 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);

但它只显示带有单词的PDF OBJECT

如何渲染现有视图但将输出定向到 PDF?

4

2 回答 2

1

我会做

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

在布局中。对我来说,在控制器中收集数据还为时过早:)

基本上,我使用wkhtmltopdf来生成 PDF 内容。它真的是独立的,并生成在现代浏览器中看起来的 html。

我如何使用它:有一个 pdf.ctp 布局,我使用 ob_start() ... ob_end_clean() 来收集内容(包括布局)。

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

您可以在此处查看我的 /app/views/layouts/pdf.ctp 。有评论所以你应该明白。

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

我最近没有使用 TCPDF,所以我不知道他在做什么。它可能是相似的:)

我已经用这种方法建立了一个网站:http ://html-2-pdf.com ,所以你可以看到它的实际效果。

高温高压

于 2010-08-31T07:16:20.103 回答
0

尝试使用 Controller 的 afterFilter 回调和输出属性。这是一个例子:

function afterFilter(){
    $pdf->writeHTML($this->output, true, false, true, false, '');
}
于 2010-08-31T03:07:27.723 回答