0
Angularアプリケーションでは、ボタンをクリックするとPDFを開く必要があります。 AngularコンポーネントのPDF blobを開く
は、私が最初の場所で thisポストによって与えられた指示に従ったので、私は今、これらの2つの方法があります:サービスに呼び出し側コンポーネント
public PrepareDownload(){
this._certificateService
.GetPdf(args)
.subscribe(
result => {
this.BlobUri = URL.createObjectURL(result);
}
}
public Download() {
window.open(this.BlobUri);
}
で
public GetPdf() : any {
var headers = new Headers();
headers.append("Content-Type", "application/json");
var payload = {id:215};
return this._http.post(this.requestUri,
JSON.stringify(payload),
{ headers: headers,
responseType: ResponseContentType.Blob })
.map((response: Response) =>
{
return new Blob([response.blob()], { type: 'application/pdf' });
});
}
GetPdfの応答には配列が含まれています[ 37,80,68,70,45,49,46,...]
のようになります。残念ながら、ダウンロードメソッドが呼び出されると、結果は無効なpdfと思われます。 firefoxでファイルをダウンロードしてtxtファイルに名前を変更すると、内容はバイナリではなく、完全なバイト配列が文字列として認識されます。
ブロブの再ラッピングが必要であるとは思わないので、 '(response:Response)=> response.blob()'が普通に働いていました。 –
タイプヘッダーを追加しないと、ブラウザはpdfビューアでこれを開こうとしません。これらのヘッダーを追加するには、私は再ラップします。 –
さて、サーバーが正しいContent-Typeを最初に返すようにしてください。 –