Cakepdf生成PDF视图

时间:2016-02-07 21:33:36

标签: cakephp pdf

我有Cakepdf的问题。我可以为我的服务器生成.pdfs,但无法在我的浏览器中查看它们。

$CakePdf = new \CakePdf\Pdf\CakePdf();
$CakePdf->template('view', 'default');
$CakePdf->viewVars($this->viewVars);
// Get the PDF string returned
$pdf = $CakePdf->output();
echo $pdf;

只是给我一些像

这样的神秘代码
%PDF-1.3 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R 14 0 R ] /Count 2 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> /XObject << /I1 12 0 R /I2 13 0 R /I3 18 0 R /I4 19 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text /ImageC ] endobj 5 0 obj << /Creator (DOMPDF) /CreationDate (D:20160208165451+00'00') /ModDate (D:20160208165451+00'00') >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Annots [ 10 0 R ] /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 819 >> stream x�}Uˎ�8��+������`O�d$H�<��,�@K�M�5|L�|}���� �-QbwUuus�眶�����HuÚ��ڪc5/�8����t<���g9�Ɂ��p�A�Eԁ��ncx�����M�������"���HEnW]��k�.�Z�;~�������(}xo�4�& V[G^F�=�v�� C��Ġ&�{5^Hj}�ɝ���6� ����rp��U��bUQd�h䊞�u��iP�є� ڀe�'��T��'/��B��K'<@J#�Z94e�ʮLh V�u��%�B�rD\�.Q2�{���0��K3A&hv�rO2*o��О�b��Y5f�k*�`i�2�e�$AͪX׫�=��|'c5ʨR�Z�:QWg�y�s��ҭZ$2Y�,jM}װ��KhJVWUM*I'��W`�2_o����8���>JzPA��R�QR�er2(�»9(]ɪ�Y�)rN�!�����h)��)�bNz�:� I�:Igi� dv�����t_�`�'�C�����JX�c{{{���:�qK�m>�O�5Ku��6a�X%�?f�2V 2n �$� kڸ�o��y����_�Y� endstream endobj xref 0 20 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000351 00000 n 0000000388 00000 n 0000000502 00000 n 0000000584 00000 n 0000001475 00000 n 0000001587 00000 n 0000001694 00000 n 0000001821 00000 n 0000001895 00000 n 0000002860 00000 n 0000003940 00000 n 0000004024 00000 n 0000004307 00000 n 0000004434 00000 n 0000004508 00000 n 0000005473 00000 n trailer << /Size 20 /Root 1 0 R /Info 5 0 R >> startxref 6553 %%EOF

我在Layout / pdf / default.ctp中有我的default.ctp,在我的控制器中有我的视图。根本不会在线创建pdf。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你所拥有的只是常规的PDF源内容,而且你看到它的事实,而不是浏览器将其识别为PDF文档,是因为你没有发送正确的Content-Type报头中。

我使用的内容&#34; 使用插件,如文档中所示&#34;在我的评论中,是自动为您执行此操作的方法,即使用PDF视图+请求处理程序变体。

<强> Readme > Render as PDF (including forced download) in the browser with PdfView (还要检查 https://github.com/FriendsOfCake/CakePdf/issues/147

如果你不这样做,那么你需要自己处理。例如,在控制器操作中,您可以使用响应对象来设置正文内容和所需的类型/标题,例如

// ...
$pdf = $CakePdf->output();

$this->response->body($pdf);
$this->response->type('pdf');
return $this->response;

另请参阅 Cookbook > Request & Response Objects > Response