2016-08-27 4 views
0

私はwkhtmltopdfを使用してサーバー側でpdfsを生成し、画像にテキストを適用するにはPHP gd libを使用しています。両方ともREST API経由で送信され、ユーザーがダウンロードできるようにします(pdfとjpgのさまざまな方法があります)。AngularFileSaverは壊れたファイルを保存します

クライアントでは、BlobとFileSaverサービスを使用するwebpackにAngularFileSaverを使用していますが、保存されたファイルが破損しているため(pdfが空でjpgで画像を表示できないため)うまく動作しません。

私は他のプロジェクトでwkhtmltopdfを使用していたので、サーバー側のスクリプトでは問題ではないと確信していました。ここで

は私のクライアント側のコードです:

$.ajax({ 
    type: 'GET', 
    url: '/cloud/files/pdf', 
    headers : { 
    'Authorization' : 'some_token', 
    'Content-Type' : 'application/pdf' 
    }, 
    responseType : 'blob' 
}).done(function(data) { 
    var fileName = "sample.pdf"; 
    var file = new Blob([data], {type: 'application/pdf'}); 
    FileSaver.saveAs(file, fileName); 
}); 

私はブロブの異なる「タイプ」属性を試みたが、また、AJAXのresponseType(BLOBまたはarrayBuffer)と結果は常に同じでした。

私はこのことについて何時間も読んだ後、何が間違っているかも考えていません。私は誰かが私にいくつかの手がかりを与えることができると確信しています:)

答えて

0

jQueryのajaxとresponsetypeは決して働いたことがありません。バイナリデータとjQueryレスポンスは常にテキストであるため、保存されたファイルが破損する可能性があります.jQueryから離れてXHRを使用するかフェッチしてください。

fetch(url, { 
    headers: {Authorization : 'some_token'} 
}) 
.then(res => res.blob()) 
.then(blob => saveAs(blob, 'sample.pdf')) 
関連する問題