我对Cakepdf有意见。我可以生成. pdf到我的服务器,但不能在浏览器中查看它们。
$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。有什么想法吗
2条答案
按热度按时间yptwkmov1#
你所拥有的只是普通的PDF源内容,而你看到它的事实,而不是浏览器将其识别为PDF文档,是因为你没有发送正确的
Content-Type
头。我在评论中提到的“* 使用文档中所示的插件 *”是自动为您做这件事的方法,即使用PDF视图+请求处理程序变体。
自述>使用PdfView在浏览器中渲染为PDF(包括强制下载)(同时勾选**https://github.com/FriendsOfCake/CakePdf/issues/147**)
如果你不这样做,那么你需要自己处理。例如,在一个控制器动作中,您可以使用response对象来设置主体内容和所需的类型/头,如
另请参阅Cookbook > Request & Response Objects > Response
tp5buhyn2#
这里有一个简短的PDF预览示例,用于CakePhp 4.3和CakePdf 4.1,它适合我:
发票控制员:
布局“invoiceLayout”:
这里belongt您的HTML设计为您的发票PDF
Template“view”
这里属于内容,应该加载到“invoiceLayout”例如产品
布局“pdfPreview”:
希望这可以帮助其他人。