浏览器在Laravel中无法正确渲染PDF

guicsvcw  于 2023-06-07  发布在  其他
关注(0)|答案(6)|浏览(150)

本地主机是好的,但当上传到服务器不工作

我的代码

public function printSalesRecord()
{

    $setPaperSize = 'A4';
    $pdf = App::make('dompdf');

    $pdf = PDF::loadView('salesrecord/PrintSalesRecord')->setPaper($setPaperSize)->setOrientation('portraite');

    return $pdf->stream();

}

这是我在浏览器上看到的

% 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]/Count 1/Resources <</ProcSet 4 0 R/Font <>>/MediaBox [0.000 0.000 595.280 841.890]>> endobj 4 0 obj [/PDF/Text] endobj 5 0 obj <</Creator(DOMPDF)/CreationDate(D:20161122092040 + 00 '00')/ModDate(D:20161122092040 + 00' 00')>> endobj 6 0 obj <</Type/Page/Parent 3 0 R/Contents 7 0 R>> endobj 7 0 obj <</Filter/FlateDecode/Length 73>> stream x��2�3 00P@&��B�M���-L�L�,BR���B��5JR�K�Drr�f�B��k��endstream endobj 8 0 obj <</Type/Font/Subtype/Type1/Name/F1/BaseFont/Times-Roman/Encoding/WinAnsiEncoding>> endobj xref 0 9 0 000000000 65535 f 00000000009 00000 n 00000000074 00000 n 000000001 20 00000 n 0000000274 00000 n 0000000303 00000 n 0000000417 00000 n 000000480 00000 n 0000000624 00000 n trailer <</Size 9/Root 1 0 R/Info 5 0 R>> startxref 733%%EOF< /F1 8 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (DOMPDF) /CreationDate (D:20161122092040+00'00') /ModDate (D:20161122092040+00'00') >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 73 >> stream x��2�300P@&�ҹ�B�M���-L�L�,BR����B��5JR�K�Drr�f�B���k��� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj xref 0 9 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000274 00000 n 0000000303 00000 n 0000000417 00000 n 0000000480 00000 n 0000000624 00000 n trailer << /Size 9 /Root 1 0 R /Info 5 0 R >> startxref 733 %%EOF

6kkfgxo0

6kkfgxo01#

请再次检查vendor:publish
您的PDF文件可能包含UTF-8字符。

提示:支持UTF-8

如果你想支持UTF-8,你需要在你的模板文件中添加这个

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

另一种可能性;
是否可以将字体目录从**/BaseFont/dompdf/lib/fonts/Times-Roman更改为/BaseFont/Times-Roman**?

8wtpewkr

8wtpewkr2#

遇到同样的问题,在脚本或函数的末尾添加以下内容:

exit();
gt0wga4j

gt0wga4j3#

尝试将响应头添加到Laravel代码中

Response::header('Content-type', 'application/pdf');

或者将.pdf扩展添加到路由。
或者使用download()函数代替stream()

pb3s4cty

pb3s4cty4#

一些字体导致此错误的主要原因,请确保设置此字体,它将正常工作:)

<style>
            * {
                font-family: DejaVu Sans;
            }
    </style>
m0rkklqb

m0rkklqb5#

%PDF-1.4%下3 0 obj <> stream;@ Sj ÷'d ±´, B±$kÜMIÐûZx óB ù ~ ™ih A tF[M 5 &U ' 쇰 p ó...!#CE1>>>/Parent 4 0 R/MediaBox[0 0 612 792]>> endobj 2 0 obj <> endobj 4 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 000000000 65535 f 0000000252 00000 n 0000000409 00000 n 0000000015 00000 n 0000000499 00000 n 0000000562 00000 n 0000000607 00000 n trailer <<57ab07e646d6b61f18bddc36340ee68e>]/Root 5 0 R/Size 7>> startxref 729%%EOF

im9ewurl

im9ewurl6#

在正在加载的文件中添加对UTF-8的支持。下面是一个为我工作的示例代码

$checkedProducts = $request->input('products');

    $pdf = App::make( 'dompdf.wrapper' );
    $html ='<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"</head><body>
                <div class="container">
                 <div class="row">
                    <div class="col-md-8 col-md-offset-2">
                        <div class="panel panel-default">
                             <div class="panel-heading">Dashboard</div>
                        <div class="panel-body">
                            <table class="table">
                                <thead>
                                    <th>Product Name</th>
                                </thead>
                                <tbody>';
                                    for($i = 0; $i<count($checkedProducts); $i++){
                                        $products = DB::table('products')->where('id', $checkedProducts[$i] )->value('name');
                                        $html.= '<tr><td>'. $products .'</td></tr>';
                                    }

                                $html.= '</tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        </body>
        </html> ';
    $pdf->loadHTML($html);
    return $pdf->download( 'quote.pdf' );  
}

我加载了没有html标签的PDF文件,并得到了与您相同的问题。我添加了它们,还添加了支持UTF-8的 meta标签,工作正常。

相关问题