如何从angular2 RC5中的API下载PDF?

时间:2016-08-20 00:13:18

标签: http pdf angular arraybuffer

上一个问题有一些很好的解决方法:

Angular 2 download PDF from API and Display it in View

但是现在RC5已经用完了,我们可以使用arrayBuffer()。我似乎无法随心所欲。我如何从一个漂亮的pdf blob:

return this._authHttp.get(this.fileUrl+id)
        .map((res:Response) => res.arrayBuffer())
        .subscribe(
            data => {
                console.log(data);
                var blob = new Blob([data], {type: 'application/pdf'});
                console.log(blob);
                saveAs(blob, "testData.pdf");

        },
            err => console.error(err),
        () => console.log('done')
    );

数据的结果是我预期的两倍。我缺少什么想法?

2 个答案:

答案 0 :(得分:10)

我在下载pdf文件时遇到同样的问题。我浪费了两天时间来解决这个问题,但终于让它工作了。你需要将responseType设置为blob。

PortIndex

并且不要忘记导入ResponseContentType

希望这有助于你

答案 1 :(得分:1)

谢谢你...

这个黑客,改变了我的生活......谢谢。但我做了一个轻微的改变。

        this._authHttp.get(URLx, { responseType: ResponseContentType.Blob })
        .map((res:any) => return res) <-- this line change --!>
        .subscribe( 
            data => {
                var mediaType = 'application/pdf';
                var blob = new Blob([data], {type: mediaType});
                var filename = `Veiculo-Eixos-${veiculoDTO.placa}.pdf`;
                // saveAs(blob, filename);
                var fileURL = URL.createObjectURL(blob);
                window.open(fileURL); // if you want to open it in new tab  
            },
            error =>{
                console.log(error);
            });