【问题标题】:How to get PDF through API in angular service如何在角度服务中通过 API 获取 PDF
【发布时间】:2018-10-24 05:44:48
【问题描述】:

我在服务器上设置了一个基于 Java 的 API。 URL = "ex.com"

它有一个返回 PDF 文件的端点。 URL = "ex.com/pdf"

它需要一个带有参数的 POST 请求,该参数指定正在请求哪个 PDF。 params = { location: "report.pdf"}

我希望能够使用 Angular Http.post observable 来获取 PDF,但它不断抛出 HttpErrorResponse Http failure during parsing for http://ex.com/pdf ... Unexpected token % in JSON at position 0 at JSON.parse。但它是一个 PDF,我不希望它被解析为 JSON。

这是我的代码:

params = {location: "report.pdf"};
return this.http.post<Response>("http://ex.com/pdf", params)
    .subscribe(
         data => {
            var file = new Blob([data], {type: 'application/pdf'});
            var fileURL = URL.createObjectURL(file);
            window.open(fileURL);
         }
     );

端点与 PostMan 一起使用。我可以使用“发送和下载”选项成功获取 PDF 文件。所以我只需要弄清楚如何在 Angular 中处理。感谢您的帮助。

【问题讨论】:

  • 和http错误响应信息是?...
  • 那么您似乎返回了无效的 JSON 数据
  • 对不起.. 错误是“ex.com/pdf 解析期间 Http 失败”
  • @mast3rd3mon 重点在于它不是 JSON。它是一个PDF。端点有效。我只需要弄清楚如何获得角度来使用它。
  • 如果它没有返回 JSON,那么你应该将它作为 base64 发送,这样它就很容易使用

标签: angular typescript


【解决方案1】:

试试这样的...

首先,你需要 file-saver 节点包所以运行 npm install --save file-saver.

然后,尝试使用类似的方法,我复制粘贴用于类似操作的代码

public downloadPDF(): any {
    var mediaType = 'application/pdf';
    this.http.post(this.myUrl, {location: "report.pdf"}, { responseType: 'blob' }).subscribe(
        (response) => {
            var blob = new Blob([response], { type: mediaType });
            saveAs(blob, 'report.pdf');
        },
        e => { throwError(e); }
    );
}

这对我有用,但只是为了保存文件。

让我知道它是否有效!


更新 - ANGULAR7 & FILESAVER V.^2.0.1+


我刚刚从 Angular v.6 和 Filesaver v. 在这个新版本中,您必须更改导入来源:

import { saveAs } from 'file-saver/FileSaver';

import { saveAs } from 'file-saver';

其他一切都像以前的版本一样工作!

【讨论】:

  • 所以我通过创建 URL 并将其放入 iframe 中使其工作。当我尝试执行 window.open 时,如果它看起来像打开选项卡然后立即关闭它,即使关闭了弹出窗口阻止程序......至于保存......我也试过了,但下载的 pdf 没有打开。它只是说“无法打开 pdf”
  • hmmm nvm 现在似乎可以工作了。出于某种原因,它在文件中创建了带有文本“[Object object]”的pdf。这是 obv 不是 pdf 文件。但是我知道为什么我一定做错了什么,因为它现在可以使用 Save
  • 广告拦截器导致弹出窗口不起作用。仅供未来人参考。
  • @Curtis 等等,我正试图了解目前的情况......所以......它现在有效吗?您是否仍然面临任何问题?
  • 是的,它有效。我无法执行 saveAs 并获取 pdf,或 winodw.open 并在新选项卡中查看 pdf。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多