当前位置: 首页 > 知识库问答 >
问题:

Angular2显示PDF

洪俊能
2023-03-14

我有一个带有ASP.NetWeb API的angular2项目。我有代码从我的数据库中检索到服务器上文档的文件路径。然后我想在浏览器的新选项卡中显示这个文档。有人有什么建议吗?

我很高兴在Angular2(Typescript)或我的API中检索文件并将其流式传输。

这是我尝试在我的API中检索它,但我不知道如何在Angular2中接收它并正确显示它:

public HttpResponseMessage GetSOP(string partnum, string description)
    {
        var sopPath = _uow.EpicorService.GetSOP(partnum, description).Path;
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        var stream = new FileStream(sopPath, FileMode.Open);
        result.Content = new StreamContent(stream);
        result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
        return result;
    }

任何帮助将不胜感激。

非常感谢!!!

共有3个答案

仲孙英才
2023-03-14

角度5

我也有同样的问题,为此我损失了几天时间。

在这里,我的回答可能会帮助其他人,这有助于渲染pdf。

对我来说,即使我提到响应类型:“数组缓冲区”,它也无法接受它。

为此,您需要提及响应类型:“数组缓冲区”作为“json”。(参考资料)

工作码

service.ts

downloadPDF(): any {
return this._httpClient.get(url, { responseType: 'blob' as 'json' })
        .map(res => {
        return new Blob([res], { type: 'application/pdf', });
    });

}

component.ts

this.myService.downloadPDF().subscribe(
    (res) => {
    var fileURL = URL.createObjectURL(res);
    window.open(fileURL);
    }
);

从以下链接引用

https://github.com/angular/angular/issues/18586

谷梁弘深
2023-03-14

角v.5.2.1答案:

*.服务中

downloadPDF(): any {
    return this._httpClient.get(url, { responseType: 'blob'})
            .map(res => {
            return new Blob([res], { type: 'application/pdf', });
        });
  }

然后在< code>*.component.ts中

downloadPDF() {
    let tab = window.open();
    this._getPdfService
      .downloadPDF()
      .subscribe(data => {
        const fileUrl = URL.createObjectURL(data);
        tab.location.href = fileUrl;
      });
  }

在调用服务之前,启动并打开一个新标签是很重要的。然后将这个选项卡url设置为fileurl。

阳兴朝
2023-03-14

首先,您需要为 http 请求设置选项 - 将响应类型设置为响应内容类型.Blob,使用 blob() 将响应作为 blob 读取,并将其类型设置为应用程序/pdf

downloadPDF(): any {
    return this._http.get(url, { responseType: ResponseContentType.Blob }).map(
    (res) => {
            return new Blob([res.blob()], { type: 'application/pdf' })
        }
}

然后,为了获取该文件,您需要< code >订阅该文件,您可以创建新的< code>ObjectURL并使用< code>window.open()在新标签中打开PDF:

this.myService.downloadPDF().subscribe(
        (res) => {
        var fileURL = URL.createObjectURL(res);
        window.open(fileURL);
        }
    );
 类似资料:
  • 我有来自数据库的产品数据包含标题,描述...描述是html格式的字符串,如下所示: 如果应该这样显示: 我应该如何将其正确地显示为html?绑定没有html筛选器。

  • 使用的版本: 角度 2.0.1 角气候 1.0.0-beta.17 我有一个分为3个部分的页面。页面大纲是一个具有自己的布局(包括行)的表,其中一行包含行组件。在IE中,表格显示良好,在Chrome中,来自组件行的所有数据都显示在第一列中。 IE为我提供了我期望的输出 然而,Chrome给了我一个我没有预料到的输出 我可以通过将表数据放入一个组件中来解决这个问题,但a)对我来说会破坏对象,b)我想

  • 本文向大家介绍SpringMVC简单整合Angular2的示例,包括了SpringMVC简单整合Angular2的示例的使用技巧和注意事项,需要的朋友参考一下 本文介绍了SpringMVC简单整合Angular2的示例,分享给大家,具体如下: angular使用的是官方的快速开始的例子 将文件全部拷贝到springmvc的项目中,拷贝过程中可能出现文件路径太长而失败,那就先对整个文件压缩,然后拷贝

  • 使用表情面板增加 mBot 的可玩性。 表情面板可通过 RJ25 线连接到主板上对应的接口。 坐标 如上图所示,表情面板以左上角为坐标 0 点, x ,y 的方向如箭头示意。参数有效范围: x: -15 ~ 15 y: -7 ~ 7 1. 表情面板(接口1)显示图案()持续()秒 在指定接口连接的表情面板显示指定图案,持续一段时间后熄灭。 示例: 按下空格键,mBot 的外接表情面板会显示指定图案

  • Composite Images watermark(['/img/shepherd.jpg', '/img/logo.png']) .image(watermark.image.lowerRight()) .then(function (img) { document.getElementById('composite-image').appendChild(img); }); Al

  • 本文向大家介绍angular2 ng2-file-upload上传示例代码,包括了angular2 ng2-file-upload上传示例代码的使用技巧和注意事项,需要的朋友参考一下 Angular2中有两个比较好用的上传文件的第三方库,一个是ng2-file-upload,一个是ng2-uploader。ng2-uploader是一个轻便的上传文件的支持库,功能较弱,而ng2-file-uplo