所需依赖

      <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version></dependency><!--word 操作--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.3</version></dependency><!--其他格式转换为PDF --><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>xdocreport</artifactId><version>1.0.6</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext-rtf</artifactId><version>2.1.7</version></dependency>

2、上传文件到本地文件夹中

    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)public ResponseEntity<Object> uploadFileToLocal(@RequestParam("multipartFile") MultipartFile multipartFile) {if (multipartFile == null) {return ResponseEntity.status(HttpStatus.NO_CONTENT).build();}File file = null;try {File dir = new File(basePath);if (!dir.exists()) {dir.mkdir();}file = new File(basePath + File.separator + multipartFile.getOriginalFilename());if (!file.exists()) {multipartFile.transferTo(file);}} catch (IOException e) {e.printStackTrace();}return ResponseEntity.ok(FileVo.builder().size(multipartFile.getSize()).path(file.getAbsolutePath()).build());}

basePath为定义的常量: private static final String basePath = “C:\tempFile”;

3、在线预览Word文档

 @GetMapping("/showWord")public void showWord(@RequestParam("path")String path, HttpServletResponse response) throws IOException {FileInputStream in = new FileInputStream(path);ByteArrayOutputStream out = new ByteArrayOutputStream();ServletOutputStream outputStream = response.getOutputStream();byte[] buffer = new byte[1024 * 4];int n = 0;while ((n = in.read(buffer)) != -1) {out.write(buffer, 0, n);}byte[] fileByte = out.toByteArray();XWPFDocument doc = new XWPFDocument(new ByteArrayInputStream(fileByte));PdfOptions options = PdfOptions.create();// 中文字体处理options.fontProvider((familyName, encoding, len, style, color) -> {try {BaseFont bfChinese = createFont();Font fontChinese = new Font(bfChinese, len, style, color);if (familyName != null) {fontChinese.setFamily(familyName);}return fontChinese;} catch (Exception e) {e.printStackTrace();return null;}});PdfConverter.getInstance().convert(doc, out, options);outputStream.write(out.toByteArray());outputStream.flush();    }private BaseFont createFont() {//仿宋体String font_cn = getChineseFont();BaseFont chinese = null;try {chinese = BaseFont.createFont(font_cn, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);} catch (IOException e) {e.printStackTrace();} catch (com.lowagie.text.DocumentException e) {e.printStackTrace();}return chinese;}private String getChineseFont() {URL resource = this.getClass().getClassLoader().getResource("font/msyh.ttc");String urlString = resource.toString();String font = urlString.substring(urlString.indexOf("file:") + "file:".length() + 1);return font + ",0";}

“font/msyh.ttc” 是放在resources目录font文件夹下面的一个字体文件,字体文件可在网上下载或者直接copy电脑中自带的字体文件。

Word文件转换为Pdf预览时,主要是对字体格式进行处理,默认的字体格式有可能再预览时无法显示字体,所以直接做了统一处理。

注意:当压缩包运行项目到服务器上的时候,预览会报错,无法查找到字体文件,我们需要再此时进行特定处理,可以先将字体文件上传至服务器,服务器运行时直接读取服务器绝对地址路径下的字体文件即可。

4、预览效果

SpringBoot实现本地上传Word文档并在线预览相关推荐

  1. java通过POI和jacob实现word文档的在线预览和下载

    通过POI和jacob可以实现word文档的在线预览和下载. 首先,引入以下maven依赖. <dependency><groupId>org.apache.poi</g ...

  2. java word在线预览_java 生成word文档并且在线预览的问题

    富文本? 用iText或者PD4ML直接转换为pdf [code="java"] String outputFile = "D:/Test/demo_3.pdf" ...

  3. Freemaker导出word文档并实现预览

    文章目录 使用freemaker进行生成word文档并实现预览 一.导入依赖 二.导出word文件步骤 1.将word文档转成ftl文件 2.文件数据绑定 三.导出html文件步骤 四.解析文件并生成 ...

  4. java 预览word文档_Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  5. java零碎要点010---Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  6. 前端实现pdf,word,doc等Office文档格式在线预览

    在做一些后台管理或者h5页面的时候 通常会遇到Office文档格式的在线预览功能.虽然看似简单,里面却隐藏着很大的坑.简单是因为现在有各种插件可以下载实现,坑是因为涉及到一些兼容性和安全性等各种千奇百 ...

  7. WEB端和微信小程序端的文档文件在线预览方法

    文件的在线预览方式汇总 文件在线预览功能可以提高用户体验,值得加入. 一般常见的文件有office套装.pdf.txt.md.和音视频. 音视频的预览是单独一块,今天主要说说文档文件的在线预览功能. ...

  8. java poi预览word文档_apache poi操作office文档----java在线预览txt、word、ppt、execel,pdf代码...

    在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputStream bis = null; URL url = null; HttpURLConnection ...

  9. 使用PageOffice实现文档(word,excel,pdf)在线预览编辑

    最近发现一款不错的插件的PageOffice,地址是:http://www.zhuozhengsoft.com/Technical/ 他可以实现word,excel.pdf在线预览以及在线编辑.虽然商 ...

最新文章

  1. 为什么很努力进步却不明显
  2. 语义分割中的深度学习方法全解:从FCN、SegNet到各版本DeepLab
  3. python微控制器编程从零开始-Python微控制器编程从零开始 使用MicroPython
  4. Batch Normalization的细致理解
  5. C语言实现字符串匹配的Rabin-Karp算法(附完整源码)
  6. [css] 在页面中的应该使用奇数还是偶数的字体?为什么呢?
  7. php 指定域名的cookie,php如何设置cookie对整个域名有效?
  8. jmeter导出测试报告
  9. 黄河水利职业技术学院焦作大学计算机谁好,注意丨你可能上了个假大学!填报志愿需谨慎,全国381所“野鸡大学”曝光,河南6所...
  10. java—数据库连接池看这篇就够了
  11. detours介绍与使用
  12. DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》软考考试简介及其知识点架构总结、课程讲解目录(立项-整体-范围-进度-成本-质量-人力资源-沟通-干系人-风险-采购等)
  13. 计算机硕士论文的框架应该怎么写,计算机硕士论文提纲模板 计算机硕士论文框架怎样写...
  14. 生产环境RedisCPU飙高怎么办
  15. 【数据库】SQL Server的使用教程
  16. 深拷贝和完全拷贝对比的探究
  17. 华为深度Linux系统使用教程,华为笔记本OEM版本Linux系统安装深度商店(deepin-appstore)的方法...
  18. 为什么python编译fourth = raw.input(‘Year: ‘)[3]时会报错
  19. 球半比分,美职业:费城联合-华盛顿联 7月9日
  20. 数据分析师需要具备哪些技能?如何拿到月薪20K+数据分析师OFFER?

热门文章

  1. 计算机 / 数据库相关日语词汇
  2. 备品管理方案怎么写_生产设备备品备件管理制度范文
  3. 公益创投|流动儿童心理支持项目介绍会志愿者服务交流会
  4. 浙大毕业典礼上研究生替直博生哥们在线“征婚”,网友:浙大是吧?来了!...
  5. 2022年熔化焊接与热切割操作证考试题库及模拟考试
  6. bzoj4393[Usaco2015 Dec]Fruit Feast*
  7. kaggle-地震预测-LANL Earthquake Prediction
  8. 微信 Ubuntu个人服务器环境搭建
  9. 单片机51和stm32编程步骤一样吗?
  10. 详解OSI七层网络模型 TCP/IP四层模型