首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能加载PDF文档-角8

未能加载PDF文档-角8
EN

Stack Overflow用户
提问于 2020-05-27 12:11:03
回答 1查看 1.4K关注 0票数 0

我试图使用角8在另一个浏览器选项卡中打开PDF。Spring引导API作为字节数组返回PDF:

代码语言:javascript
复制
@GetMapping(value = "/pdf")
public ResponseEntity<byte[]> beve(HttpServletRequest request) {
    return new ResponseEntity<byte[]>(service.getPdf(request), HttpStatus.OK);
}

在角度上,为服务:

代码语言:javascript
复制
  getPdf(): any {
    const httpOptions = {
      'responseType' : 'arraybuffer' as 'json'
    };

    return this.http.get<any>(this.url + "/pdf", httpOptions);
  }

以及调用它的组件:

代码语言:javascript
复制
getPdf() {
    this.service.getPdf().subscribe((response => {
      const file = new Blob([response], { type: 'application/pdf' });

      if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(file, "app.pdf");
      } else {
        const fileURL = URL.createObjectURL(file);
        window.open(fileURL);
      }
    }));
  }

但是,当PDF在一个新的选项卡中打开时,我会得到以下错误:

我做错了什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-06-05 13:58:19

我也遇到过类似的情况。尝试将数组缓冲区转换为base64字符串,它在所有浏览器中都能正常工作。

代码语言:javascript
复制
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(data.data)));
var pdfAsDataUri = "data:application/pdf;base64," + base64String;
windoe.open(pdfAsDataUri);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62042843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档