[英]CakePhp 2.x TCPDF Output Chrome
我正在使用带有tcpdf的CakePHP 2.x创建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');
要将其保存为文件,我仍然会得到“ Content Length:20”,并且对于内联,如果选择“ I”,我总是会得到Content-Type HTML / Text而不是Application / pdf。
任何想法都非常感谢。
提前致谢。
不要在布局文件中包含header
调用,而应将以下代码添加到控制器方法中:
$this->response->type('application/pdf');
Cake准备好后会发送标题,因此您不应将其直接包含在视图/布局文件中。 如果要设置标头,则应使用响应的标头方法,例如:
$this->response->header('Location', 'http://example.com');
我不确定这是否可以解决您的问题,因为我无法对其进行测试,但是我认为它有一个不错的选择。
我有相同的问题,并通过在cakephp控制器方法中禁用自动渲染来解决此问题:
$this->autoRender = false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.