我正在使用带有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。

任何想法都非常感谢。

提前致谢。

===============>>#1 票数:5 已采纳

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

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

Cake准备好后会发送标题,因此您不应将其直接包含在视图/布局文件中。 如果要设置标头,则应使用响应的标头方法,例如:

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

我不确定这是否可以解决您的问题,因为我无法对其进行测试,但是我认为它有一个不错的选择。

===============>>#2 票数:0

我有相同的问题,并通过在cakephp控制器方法中禁用自动渲染来解决此问题:

$this->autoRender = false;

  ask by Michael Grenzer translate from so

未解决问题?本站智能推荐:

关注微信公众号