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

将SpringBoot生成的PDF保存在Angular中

云隐水
2023-03-14
java prettyprint-override">if(format.equals(Constant.PDF_FORMAT)) {
    ByteArrayInputStream stream = reportPDF.generateReportDocument(dtos);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", "inline; filename=report.pdf");
    return ResponseEntity.ok()
                         .headers(headers)
                         .contentType(MediaType.APPLICATION_PDF)
                         .body(new InputStreamResource(stream));
}
public getReports(type?: string): void {
    this.params['expected-format'] = type;

    if (type === 'json') {
      this.Service.getPilotReports(this.params).subscribe((res) => {
        this.reportsData = res;
        this.pilotBankSpinnerService.closeSpinner();
      });
    } else {
      this.Service.customGetForDownload(this.params).subscribe(
        (data: Blob) => {
          var file = new Blob([data], { type: 'application/pdf' });
          var fileURL = URL.createObjectURL(file);
          window.open(fileURL);
          var a = document.createElement('a');
          a.href = fileURL;
          a.target = '_blank';
          a.download = 'reports.pdf';
          document.body.appendChild(a);
          a.click();          
        },
        (error) => {
          console.log('getPDF error: ', error);
         
        }
      );
    }
}
public customGetForDownload<blob, T>(url: string, params: any): any {
    const headers = new HttpHeaders({ 'Content-Type': 'application/json', responseType: 'blob' });
    const httpParams = this.http.constructParams(params);
    const absoluteUrl = this.getAbsoluteUrl(url);
    return this.httpClient.get(absoluteUrl, {
      headers: headers,
      params: httpParams,
      responseType: 'blob' as 'json',
      observe: 'response',
    });
}

共有1个答案

通迪
2023-03-14

首先,我看到一个语法错误:

  • 方法调用中缺少参数:ByteArrayInputStream stream=ReportPDF.GenerateReportDocument(dtos,);(逗号后)

您的InputStreamResource是一种有效的方法,但是在使用它时应该有信心。

    null
    null
    null

记住:输入用于读取(例如从请求中),输出用于写入(例如到响应中)。因此,您需要一个输出类型,如byte[]bytearrayoutputstream等作为响应体。

当将输入读入ByteArrayInputStream流时,可以使用Apache-Commons ioutils:ioutils.copy(in,out);从该输入复制到输出流。或者只返回字节数组:byte[]data=stream.readallbytes();

参见:Java InputStream to Byte Array和ByteBuffer Baeldung

 类似资料:
  • 我正在尝试下载一个运行时生成的PDF文件(使用iTextPDF生成的PDF文件)在Springboot服务,并希望通过angular 6.0在新选项卡中打开该文件。我试着遵循这个,如何下载一个在我的服务器(springboot)上生成的angular的pdf文件?但错误为“无法加载PDF文档”。代码出了什么问题? Springboot服务:

  • “我想下载一个从基于spring的restful web服务发送的.pdf文件到我的angular应用程序。如何下载,我的angular应用程序或Spring Boot上是不是缺少了一些代码?” 我正在从angular 6应用程序向spring-boot服务器发送一个HTTP GET请求,该服务器生成一个.pdf文件,然后将这个.pdf文件作为blob发送给我,但当我试图在angular侧创建一个

  • 问题内容: 使用该插件,我将创建一个文件并基于单击按钮生成下载。我想将文件保存到服务器上,而不是启动下载。因此,当单击按钮时,我希望将文件保存在: 我知道我需要使用将文件发布到服务器。但是,查看文档并没有看到对任何数据类型的支持。 我的代码: 基于此xml文档保存示例,我尝试了以下操作: 这将下载文件而不是保存文件。如何保存文件? 问题答案: 我设法使用来解决此问题,方法如下: upload.ph

  • 问题内容: 绘图模块 主模块 我想将所有图plot1,plot2,plot3保存到一个PDF文件中。有什么办法可以实现?我不能在主模块中包含该功能。 有一个名为的函数,但只有将其与绘图模块一起放置时,该函数才起作用。还有其他方法可以实现吗? 问题答案: 没关系,有办法做到这一点。 ------绘图模块------ ----- mainModule ---- ----- mainModule ---

  • 问题内容: 我读过多个有关使用mgo保存文件的博客,但找不到满足特定需求的解决方案,请大声喊叫! 下面在MongoDb中插入对象: 下面能够保存文件: 现在,在插入对象之前,我需要将上述文件设置为: 我的结构对象: 用外行术语来说,问题是:如何使用mgo驱动程序通过GoLang结构在mongoDb中插入文件(从HTML表单接收)? 谢谢阅读!:) 更新: PDF存储在MongoDB中,如下所示:

  • 问题内容: 我有一个Java类,正在使用iText库生成PDF文件。现在,根据我的需要,我必须将生成的PDF文件保存到MySQL数据库表中,但是我不知道该怎么做。 我担心的是: 我应该在PDF表的MySQL列中使用哪种 数据类型 来保存PDF文件 哪个查询会将生成的PDF文件插入数据库 目前,我正在生成PDF文件,并将其存储到本地磁盘的硬编码文件路径中。 这是我的Java PDF生成代码: 请帮我