CakePhp 2.x TCPDF输出Chrome

Mic*_*zer 2 cakephp google-chrome tcpdf

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

布局 - > pdf.ctp

<?php 
header("Content-type: application/pdf");
echo $content_for_layout;
?>
Run Code Online (Sandbox Code Playgroud)

查看 - > 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');

?>
Run Code Online (Sandbox Code Playgroud)

对于Internet Explorer,此工作正常,PDF显示.

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

%PDF-1.7 %???? 10 0 obj << /Type /Page /Parent 1 0 R /Las....
Run Code Online (Sandbox Code Playgroud)

即使我把它设置为

echo $pdf->Output('filename.pdf', 'F');
Run Code Online (Sandbox Code Playgroud)

将其保存为文件我仍然得到"内容长度:20",并且对于Inline选项"I",我总是得到内容类型的HTML /文本而不是Application/pdf.

任何想法都非常感谢.

提前致谢.

Hof*_*off 5

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

$this->response->type('application/pdf');
Run Code Online (Sandbox Code Playgroud)

蛋糕在准备就绪时会发出标题,因此您不应将它们直接包含在视图/布局文件中.如果要设置标题,则应使用响应的标题方法,例如:

$this->response->header('Location', 'http://example.com');
Run Code Online (Sandbox Code Playgroud)

我不确定这是否能解决你的问题,因为我无法测试它,但我认为它有很好的拍摄效果.