我遇到的问题可能是实施,但我无法找到正确下载的PDF与不返回响应数据的PDF之间的任何一致性。
我使用的是Snappy的Laravel v5.4.36和v0.4.0。
我在前端使用Angular 5。对PDF的任何请求都是设置responseType:3(Blob)。问题不在于Angular如何解释数据,而是在生成某些PDF时没有返回任何数据。
以下是我在尝试使用$pdf->download
或$pdf->stream
时要回复的内容:
<h1>Hello World</h1>
,我得到的结果(没有)与输出我的多页HTML相同save()
PDF正确生成,我可以毫无问题地查看PDF::loadView('pdfs.reminder', compact('transactions', 'globalData'))
和\View::make('pdfs.reminder', compact('transactions', 'globalData'))
生成HTML。这没有任何效果。以下是我目前正在使用的代码:
private function generatePDF($transactions, $globalData)
{
$html = \View::make('pdfs.reminder', compact('transactions', 'globalData'))->render();
$pdf = \PDF::loadHTML($html);
return $pdf->download('reminder.pdf');
}
值得注意的是,我尝试生成的一些PDF已经有效。但到目前为止,这是1/3的成功率。我对所有人使用相同的请求格式和相同的方法3.没有错误被抛出。
我怀疑可能是生成的PDF的大小导致下载失败。但是,我不认为这是一个仅包含<h1>Hello World</h1>
的PDF问题。在文件大小方面是否存在可能导致此行为的限制?
对此有任何帮助表示赞赏。
问题与Snappy没有关系,调用generatePDF
的方法没有返回generatePDF
的结果。因此,为什么没有返回。由于那段代码不在我的问题中,所以其他人几乎不可能提供帮助。感谢所有尝试过的人。
答案 0 :(得分:2)
E.g
$date = Carbon::now()->format('j F, Y');
$application = Application::find($id);
$data = ['date'=>$date,'application'=>$application]; // data to be passes to view file
$pdf = PDF::loadView('pdfs.reminder', $data)->setPaper('a4');
return $pdf->download('reminder.pdf');
注意:确保在课程开始之前使用PDF类(use PDF;
)。
答案 1 :(得分:0)
你在第一行有<!DOCTYPE html>
吗?
private function generatePDF($transactions, $globalData){
$html = \View::make('pdfs.reminder')->render();
$pdf = \PDF::loadHTML($html);
return $pdf->stream();
}
pdfs.reminder.blade.php
<!DOCTYPE html>
<h1>Hello World</h1>