1
我嘗試使用FileSaver從服務器上下載生成的PDF。但是,這不是工作。下載生成的PDF使用客戶端的FileSaver和服務器端的Snappy
在Laravel框架中,我使用Snappy從HTML創建PDF文件。
$pdf = \PDF::loadView('pub.view', $data);
//$pdf->save('myfile.pdf'); //It's saved successfully.
return $pdf->download('printing.pdf');
從客戶端,我使用AngularJS的$資源服務獲取PDF文件。
printPDF: {
method: 'GET',
headers: {
accept: 'application/pdf'
},
responseType: 'arraybuffer',
cache: true,
transformResponse: function (data) {
var pdf;
if (data) {
pdf = new Blob([data], {
type: 'application/pdf'
});
}
return {
response: pdf
};
},
url:'/u/:id/exportTopdf',
params:{id:'@id'}
}
服務器響應後,FileSaver會保存該文件。
myService.printPDF({id: myId},
function successCallback(response){
saveAs(response, 'filename.pdf'); //FileSaver function
}, function errorCallback(response){
});
運行時,這個問題是發生在瀏覽器控制檯:
`TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided`.
我覺得FileSaver使得這個問題,但我不知道如何解決它。
我修好了。我的問題是響應不是blob文件。響應是對象。我必須在響應中提取blob數據並存入saveAs函數。我通過瀏覽器的下載器下載它。但是,FDM(免費下載管理器)在瀏覽器下載後會抓住它。我如何讓FDM在瀏覽器之前捕獲它? –
FDM(免費下載管理器)無法下載blob文件。 –