google-chrome - CakePhp 2.x TCPDF 输出 Chrome

标签 google-chrome cakephp tcpdf

我正在使用 CakePHP 2.x 和 tcpdf 来创建 PDF 文件。我想现在将其输出到浏览器,而不保存。

布局->pdf.ctp

<?php 
header("Content-type: application/pdf");
echo $content_for_layout;
?>

查看->pdf_testing.ctp

<?php
App::import('Vendor', 'xtcpdf');
$pdf = new XTCPDF('P', 'mm', 'USLETTER', true, 'UTF-8', false);

$textfont = 'freesans'; // looks better, finer, and more condensed than 'dejavusans'

$pdf->AddPage();

$pdf->setHeaderData('', '', '', 'RMA#100000');
$pdf->SetTitle('Some Text');
$pdf->SetHeaderMargin(20);
$pdf->SetTopMargin(40);
$pdf->setFooterMargin(20);
$pdf->SetAutoPageBreak(True, PDF_MARGIN_FOOTER);
$pdf->SetAuthor('Any Author');
$pdf->SetDisplayMode('real', 'default');

$pdf->SetTextColor(0, 0, 0);
$pdf->SetFont($textfont, 'B', 20);
$pdf->Cell(0, 14, "TESTING", 0, 1, 'L');
echo $pdf->Output('filename.pdf', 'I');

?>

对于 Internet Explorer,这工作正常并且 PDF 会显示。

使用 Chrome,我只能得到非常用户友好的输出,例如:

%PDF-1.7 %���� 10 0 obj << /Type /Page /Parent 1 0 R /Las....

即使我将其设置为

echo $pdf->Output('filename.pdf', 'F');

要将其保存为文件,我仍然得到“内容长度:20”,并且使用“I”选项表示内联,我总是得到内容类型 HTML/Text 而不是 Application/pdf。

非常感谢任何想法。

提前致谢。

最佳答案

不要在布局文件中包含 header 调用,而是尝试将以下代码添加到 Controller 方法中:

$this->response->type('application/pdf');

Cake 在准备好后会发送 header ,因此您不应将它们直接包含在 View /布局文件中。如果您想设置 header ,您应该使用响应的 header 方法,例如:

$this->response->header('Location', 'http://example.com');

我不确定这是否能解决您的问题,因为我无法测试它,但我认为它有一个很好的机会。

关于google-chrome - CakePhp 2.x TCPDF 输出 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048922/

相关文章:

google-chrome - 设置 svg 渲染的质量

cakephp - 如何学习 Cakephp

cakephp - 如何在 CakePHP 插件中使用 Composer 包

css - TCPDF 不呈现所有 CSS 属性

php - 向 TCPDF 中的单元格添加填充

ajax - 如何使用 casperjs 捕获和处理 XHR 响应中的数据?

javascript - 删除 showModalDialog API

python - 从 Bash 或 Python 获取 google Chrome IndexedDB 中的数据

CakePHP 2.0 在发生异常时不加载自定义助手

css - 样式化 Drupal 的打印模块 PDF