浏览器无法在Laravel中正确呈现PDF

时间:2016-11-22 09:31:31

标签: laravel pdf views dompdf

On my localhost on my server

Localhost很好,但上传到服务器时无法正常工作

我的代码

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<< /类型/目录/概述2 0 R /页3 0 R>> endobj 2 0 obj<< /类型/轮廓/计数0>> endobj 3 0 obj<< / Type / Pages / Kids [6 0 R] / Count 1 / Resources<< / ProcSet 4 0 R / Font<< / 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<< /类型/页面/父母3 0 R /内容7 0 R>> endobj 7 0 obj<< / Filter / FlateDecode / Length 73>>流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预告片<< /大小9 /根1 0 R /信息5 0 R>> startxref 733 %% EOF

3 个答案:

答案 0 :(得分:0)

请仔细检查供应商:发布

看起来你的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 吗?

答案 1 :(得分:0)

尝试将响应标头添加到您的Laravel代码

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

或者只需在您的路线中添加.pdf分机。

或使用download()功能代替stream()

答案 2 :(得分:0)

在要加载的文件中添加对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标签,并且运行良好。