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.
任何想法都非常感谢.
提前致谢.
不要在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)
我不确定这是否能解决你的问题,因为我无法测试它,但我认为它有很好的拍摄效果.
| 归档时间: |
|
| 查看次数: |
3066 次 |
| 最近记录: |