vue导出pdf(接口)

简介: vue导出pdf(接口)

get请求

export function getPdf(id) {
   
  const InfoRequestDTO = {
   
        consumer: store.getters.QLMConfig.application_id,
        language: store.getters.language,
        serialNo: uuid.v1(),
        tag: id
      };
  return request({
   
    url: store.getters.QLMConfig.qlm_gateway_url + "/specialwork/ZxjlGxcx/getPdf",
    method: 'get',
    params:InfoRequestDTO,
    headers: {
   
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    responseType: 'arraybuffer'
  })
}

调用:

daochu(id) {
   
      this.loading = true;
      getPdf(id).then(
        data => {
   
          this.loading = false;
          let blob = new Blob([data], {
    type: 'application/vnd.ms-pdf' })
          let objectUrl = window.URL.createObjectURL(blob) // 创建URL
          let link = document.createElement('a')
          link.style.display = 'none'
          link.href = objectUrl
          link.download = '突出贡献与创新申报表.pdf' // 自定义文件名
          document.body.appendChild(link)
          link.click() // 下载文件
          window.URL.revokeObjectURL(objectUrl) // 释放内存

          // const url = window.URL.createObjectURL(new Blob([data], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }))
          // const link = document.createElement('a')
          // link.style.display = 'none'
          // link.href = url;
          // link.setAttribute('download', '突出贡献与创新申报表.pdf')
          // document.body.appendChild(link)
          // link.click()
          // document.body.removeChild(link)
        }
      )
    },
后端:
Controller
   /**
     * 导出申报表
     *
     * @param response
     * @return
     */
    @ApiOperation(value = "导出申报表", notes = "导出申报表")
    @GetMapping(value = "/getPdf")
    public void getPdf(HttpServletRequest request, HttpServletResponse response) {
   
//        Map<String, Object> root = new HashMap<String, Object>(); // 创建数据模型
        try {
   
            String fileName = System.currentTimeMillis() + (int) (Math.random() * 90000 + 10000) + "";
            printFile("ndbg.ftl", root, fileName + ".doc", "C://specialworktempfile/", "C://specialworktempfile/");
            new PdfConverter().doc2pdf("C://" + fileName + ".doc", "C://" + fileName + ".pdf");
            //pdf
            String pdffilePath = "C://" + fileName + ".pdf";
            File pdffile = new File(pdffilePath);
            //doc
            String docfilePath = "C://" + fileName + ".doc";
            File docfile = new File(docfilePath);

            if (pdffile.exists()) {
   
                FileDownload.fileDownload(response, "C://" + fileName + ".pdf", "申报表" + ".pdf");
                pdffile.delete();
            } else {
   

            }
            if (docfile.exists()) {
   
                docfile.delete();

            } else {
   

            }
        } catch (Exception e) {
   
            e.printStackTrace();
        }
}

工具类中核心代码

/**
     * @param response
     * @param filePath //文件完整路径(包括文件名和扩展名)
     * @param fileName //下载后看到的文件名
     * @return 文件名
     */
    public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception {
   
        if (fileName == null) {
   
            fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
        }

        File file = new File(filePath);
        if (file.exists()) {
   
            byte[] data = FileUtil.toByteArray2(filePath);
            fileName = URLEncoder.encode(fileName, "UTF-8");
            //fileName = new String(fileName.getBytes(), "GBK");
            response.reset();
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type");

            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            response.addHeader("Content-Length", "" + data.length);
            //response.setContentType("Content-Type:application/force-download");
            response.setContentType("application/octet-stream;charset=UTF-8");
            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
            outputStream.write(data);
            outputStream.flush();
            outputStream.close();
            response.flushBuffer();
        } else {
   
            throw new RuntimeException("未找到文件");
        }
    }
目录
相关文章
|
7月前
|
机器学习/深度学习 文字识别 Shell
高效率办公PDF批量处理:批量OCR识别PDF区域文字内容,用PDF内容批量改名或导出表格的货物运单应用案例
针对铁路货运物流单存档需求,本项目基于WPF与飞桨OCR技术,实现批量图片多区域文字识别与自动重命名。用户可自定义识别区域,系统提取关键信息(如车号、批次号)并生成规范文件名,提升档案管理效率与检索准确性,支持PDF及图像文件处理。
1113 48
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
10月前
|
缓存 测试技术 网络安全
05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡
05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡
179 0
05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡
|
文字识别
【PDF提取全自动改名】如何批量提取PDF指定区域的文字内容,用内容批量给PDF命名或者导出表格,学会全自动解放双手
在生活和工作中,我们常需处理大量PDF文件,如银行单据、税收单据等。手动处理效率低下,而使用“咕嘎批量PDF多区域内容提取重命名导表格系统”可快速完成数千份文档的处理,大幅提高效率。该工具通过获取PDF各区域内容坐标,导入并处理文件,最终将信息提取至表格,并根据关键信息对PDF进行重命名,方便管理和查找。
2782 47
|
人工智能 JSON 搜索推荐
猫步简历 - 开源免费AI简历生成器 | 一键导出PDF/JSON
猫步简历是一款免费开源的AI简历生成器,帮助用户轻松创建独特、专业的简历。支持导出超高清PDF、图片、JSON等多种格式,并提供AI智能创作、润色和多语种切换等功能。拥有海量模板、高度定制化模块及完善的后台管理系统,助力求职者脱颖而出。官网:https://maobucv.com,GitHub开源地址:https://github.com/Hacker233/resume-design。
3788 10
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
4604 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
前端开发 API
前端界面生成PDF并导出下载
【10月更文挑战第21天】利用合适的第三方库,你可以在前端轻松实现界面生成 PDF 并导出下载的功能,为用户提供更方便的文档分享和保存方式。你还可以根据具体的需求进一步优化和定制生成的 PDF 文件,以满足不同的业务场景要求。
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
2002 0
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
2784 0
|
10月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
1325 40

热门文章

最新文章