我正在使用Laravel 5.2,使用Dompdf“barryvdh / laravel-dompdf”:“^ 0.7.0”。 第一步,我正在创建一个带有HTML输入的PDF文件,并将其保存在存储路径中,这很好。后来我有一个链接,可以帮助使用Response类在浏览器中呈现这个保存的PDF文件。 该代码段如下所示 -
$filename = 'file.pdf';
$path = storage_path($filename);
return \Response::make(file_get_contents($path), 200, [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="'.$filename.'"'
]);
这在我的本地计算机上运行正常,但在预生产和生产服务器上抛出错误,并显示警告消息“无法加载PDF”。
请理解你出了什么问题需要你的帮助。或者,我有什么办法可以在浏览器中加载PDF文件吗?
非常感谢您的帮助。
答案 0 :(得分:0)
使用laravel中的响应类
return response()->download($pathToFile);
OR
return response()->file($pathToFile);
使用dompdf方法链接
return PDF::loadFile(public_path().'/myfile.html')->save('/path-to/my_stored_file.pdf')->stream('download.pdf');
修改强> 从dompdf源,stream方法只需要一个文件路径
public function stream($filename = 'document.pdf' ){
$output = $this->output();
return new Response($output, 200, array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="'.$filename.'"',
));
}
所以你可以尝试dompdfobj->stream($filepath);
OR
我在网上找到了
$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; ' . $fileName,
];
return Response::make(File::get($filePath . $fileName), 200, $headers);
答案 1 :(得分:0)
使用laravel return response()->file('/path_tofile/document.pdf');
您也可以通过向响应添加Accept-Ranges
标头并将其设置为bytes
来完成此操作,如下所示:
$headers = [
'Content-Type' => 'application/pdf',
'Accept-Ranges' => 'bytes',
];
return \Response::make('/path_tofile/document.pdf', 200, $headers);