java项目中的文档转换案例实战——Word转换为PDF
Posted 北溟溟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java项目中的文档转换案例实战——Word转换为PDF相关的知识,希望对你有一定的参考价值。
前言
由于在开发中需要适配不同的多端应用,在文件相关处理中也会存在相同的问题,需要将文档转换为不同的格式展示,本节我们主要通过一个小案例实现在java环境下实现Word2003(doc)、 Word2007(docx)转换为PDF用于在线展示。
正文
- 引入word转换为pdf的pom工具包
<!-- docx/doc转换pdf--> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-local</artifactId> <version>1.1.5</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-word</artifactId> <version>1.1.5</version> </dependency>
- 后端转换代码
@ApiOperation(value = "word转换为pdf") @PostMapping(value = "wordToPdf") public void wordToPdf(HttpServletResponse response, @RequestPart("file") MultipartFile file) try String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1); response.reset(); response.setHeader("Content-Disposition", "inline; filename=" + URLEncoder.encode(IdWorker.getIdStr() + ".pdf", "UTF-8")); ServletOutputStream outputStream = response.getOutputStream(); InputStream inputStream = file.getInputStream(); IConverter converter = LocalConverter.builder().build(); if(ext.equals("docx")) converter.convert(inputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); if(ext.equals("doc")) converter.convert(inputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute(); inputStream.close(); outputStream.close(); catch (IOException ioException) ioException.printStackTrace();
- vue前端代码
<template> <div class="container"> <div class="title"> <span>Word转换PDF示例</span> <el-divider direction="vertical"></el-divider> <router-link to="home"> <span style="font-size: 18px;">退出</span> </router-link> </div> <el-divider>Test Staring</el-divider> <div style="text-align: center;"> <el-upload ref="upload" class="upload-demo" drag :http-request="myUploadFile"> <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__tip" slot="tip">只能上传docx文件,且不超过50MB</div> </el-upload> </div> </div> </template> <script> export default name: "WordToPdf", data() return , methods: //文件上传成功的回调 myUploadFile(data) const formData = new FormData(); formData.append("file", data.file); this.$http.post('/fileTransfer/wordToPdf', formData, responseType: 'blob', headers: 'Content-Type': 'multipart/form-data', , ).then(res => const blob = new Blob([res.data], type: 'application/pdf'); let timestamp = (new Date()).valueOf(); const fileName = timestamp + '.pdf' if ('download' in document.createElement('a')) // 非IE下载 const elink = document.createElement('a') elink.download = fileName elink.style.display = 'none' elink.href = window.URL.createObjectURL(blob) document.body.appendChild(elink) elink.click() window.URL.revokeObjectURL(elink.href) // 释放URL 对象 document.body.removeChild(elink) else // IE10+下载 navigator.msSaveBlob(blob, fileName) ).catch(error => this.$message.error(error); ); </script> <style scoped lang="scss"> .container padding: 10px; .title font-size: 20px; font-weight: bold; </style>
- 验证结果
结语
ok,本节内容到这里就结束了,我们下期见。。。。。。
以上是关于java项目中的文档转换案例实战——Word转换为PDF的主要内容,如果未能解决你的问题,请参考以下文章
java项目中的文档转换案例实战——Word2007版本转换为HTML网页
java项目中的文档转换案例实战——Word2003(doc)版本转换为HTML网页
java项目中的文档转换案例实战——Word2003(doc)版本转换为HTML网页