私はこれに非常に類似した問題を抱えています PDF Blob-コンテンツが表示されないポップアップウィンドウ 、しかし、私はAngular 2.を使用しています、しかし、Angular 2では動作しません。エラーは、タイプRequestOptionsArgsにreponseTypeが存在しないことです。私はBrowserXhrで拡張しようとしましたが、まだ動作しません( https: //github.com/angular/http/issues/8 )。
私のコードは:
createPDF(customerServiceId: string) {
console.log("Sending GET on " + this.getPDFUrl + "/" + customerServiceId);
this._http.get(this.getPDFUrl + '/' + customerServiceId).subscribe(
(data) => {
this.handleResponse(data);
});
}
そして、handleResponseメソッド:
handleResponse(data: any) {
console.log("[Receipt service] GET PDF byte array " + JSON.stringify(data));
var file = new Blob([data._body], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
FileSaver.jsからsaveAsメソッドも試しましたが、同じ問題です。pdfが開きますが、コンテンツは表示されません。ありがとう
PDFのコンテンツのダウンロードと表示に多くの問題がありました。おそらく1〜2日で修正するのに無駄だったので、正常にダウンロードする方法の実例を投稿しますPDFまたは開く新しいタブで:
myService.ts
downloadPDF(): any {
return this._http.get(url, { responseType: ResponseContentType.Blob }).map(
(res) => {
return new Blob([res.blob()], { type: 'application/pdf' })
}
}
myComponent.ts
this.myService.downloadPDF().subscribe(
(res) => {
saveAs(res, "myPDF.pdf"); //if you want to save it - you need file-saver for this : https://www.npmjs.com/package/file-saver
var fileURL = URL.createObjectURL(res);
window.open(fileURL); / if you want to open it in new tab
}
);
[〜#〜] note [〜#〜]
Http
クラスを拡張してheaders
をすべてのリクエストなどに追加する場合、ダウンロードの問題が発生する可能性があることにも言及する価値がありますPDF = RequestOptions
をオーバーライドします。これはresponseType: ResponseContentType.Blob
を追加する場所であり、これによりThe request body isn't either a blob or an array buffer
エラーが発生します。
アンギュラー5
私はそれで数日失った同じ問題を抱えていました。
ここで私の答えは他の人を助けるかもしれません、それはpdfをレンダリングするのを助けました。
私にとっては、responseType: 'arraybuffer'として言及しても、それを取ることができませんでした。
そのためには、responseTypeとして言及する必要があります: 'json'として 'arraybuffer'。( Reference )
作業コード
downloadPDF(): any {
return this._http.get(url, { responseType: 'blob' as 'json' }).subscribe((res) => {
var file = new Blob([res], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
}
以下のリンクから参照
ああ、文字列の最後に変数を追加することでファイル名を変更できます。そのためsaveAs(res, "myPDF.pdf");
になる
saveAs(res, "myPDF_"+someVariable+".pdf");
someVariableはカウンターであるか、個人的なお気に入りの日付時刻文字列です。