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

Rub*_*las 3 pdf http arraybuffer angular

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

Angular 2从API下载PDF并在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')
    );
Run Code Online (Sandbox Code Playgroud)

数据最终是我预期的两倍.我缺少什么想法?

小智 10

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

return this._authHttp.get(this.fileUrl+id , 
                         { responseType: ResponseContentType.Blob })
    .map((res:Response) => res.blob())
    .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')
);
Run Code Online (Sandbox Code Playgroud)

并且不要忘记导入ResponseContentType

希望这对你有所帮助