【发布时间】:2017-08-16 11:59:57
【问题描述】:
我有一个从 WebApi 2 应用程序提供给 AngularJS 客户端的 PDF 文件。我使用file-saver 将文件保存在客户端,如下所示(在 TypeScript 中):
this.$http.get(`${webUrl}api/pdf?id=${fileDto.id}`)
.then((response: ng.IHttpPromiseCallbackArg<any>) => {
var file = new Blob([response.data], { type: 'application/pdf' });
saveAs(file, 'my.pdf');
});
我这样做的原因是我可以使用不记名令牌来授权对 PDF 的访问(这是通过拦截器添加的)。除非 PDF 文件包含非 UTF8 字符,否则此方法有效。在后一种情况下,文件仍会下载,但当我打开它时,它显示为空白。打开文件我可以看到非 UTF8 字符被替换为 □ 字符。在 JavaScript 中,当我在调试器中检查 response.data 的字符串值时,我看到这些字符由 � 表示。我是否正确地假设,因为文件是从 JavaScript 中的字符串写入的,所以无论我做什么,我都无法从 JavaScript 中正确保存包含非 UTF8 字符的文件?
【问题讨论】:
标签: angularjs pdf utf-8 blob angularjs-http