java EXCEL或WORD转PDF转图片(base64)
记录EXCEL或WORD转图片
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.4</version></dependency><dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version></dependency><dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-excel</artifactId><version>1.0.3</version></dependency><dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-word</artifactId><version>1.0.3</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>19.0</version></dependency>
/*** 1 word* 2.excel* 看官网需要office的啥服务,我安装的wps就没问题*/String data = DocumentImageUtil.documentImage(params, multipartFiles, null, null);public class DocumentImageUtil {/*** @param params* @param multipartFiles* @param name null转base64 否则文件* @return* @throws IOException*/public static String documentImage(Map<String, Object> params, MultipartFile multipartFiles, String path, String name) throws IOException {BASE64Decoder decoder = new BASE64Decoder();byte[] bytes = new byte[0];if (params.containsKey("base64String")) {bytes = decoder.decodeBuffer(String.valueOf(params.get("base64String")));}if (null != multipartFiles && multipartFiles.isEmpty()) {bytes = multipartFiles.getBytes();}try {ByteArrayInputStream docxInputStream = new ByteArrayInputStream(bytes);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();IConverter converter = LocalConverter.builder().build();String type = params.get("type").toString();if (Integer.valueOf(type) == 1) {converter.convert(docxInputStream).as(DocumentType.MS_WORD).to(outputStream).as(DocumentType.PDF).execute();}if (Integer.valueOf(type) == 2) {converter.convert(docxInputStream).as(DocumentType.MS_EXCEL).to(outputStream).as(DocumentType.PDF).execute();}PDDocument load = PDDocument.load(outputStream.toByteArray());try {List<String> list = new ArrayList<>();if (StringUtils.isEmpty(name)) {list = pdf2Image(load, 300);} else {pdf2ImageFile(load, 300, path, name);}outputStream.close();return StringUtils.join(list.toArray(), ",");} catch (Exception e) {outputStream.close();}} catch (Exception e) {e.printStackTrace();}return null;}/**** base64* PDF文件转PNG/JPEG图片* @param dpi 越大转换后越清晰,相对转换速度越慢,一般电脑默认96dpi*/public static List<String> pdf2Image(PDDocument pdDocument, int dpi) {List<String> list = new ArrayList<>();try {PDFRenderer renderer = new PDFRenderer(pdDocument);int pages = pdDocument.getNumberOfPages();// 获取PDF页数for (int i = 0; i < pages; i++) {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();BufferedImage image = renderer.renderImageWithDPI(i, dpi);ImageIO.write(image, "jpg", outputStream);// PNGbyte[] bytes = outputStream.toByteArray();BASE64Encoder encoder = new BASE64Encoder();String string = encoder.encode(bytes);list.add(string.replaceAll("\\r\\n", ""));pdDocument.close();}} catch (Exception e) {}return list;}/**** 文件* PDF文件转PNG/JPEG图片* @param dpi 越大转换后越清晰,相对转换速度越慢,一般电脑默认96dpi*/public static void pdf2ImageFile(PDDocument pdDocument, int dpi, String path, String name) {List<String> list = new ArrayList<>();try {PDFRenderer renderer = new PDFRenderer(pdDocument);int pages = pdDocument.getNumberOfPages();// 获取PDF页数if (createDirectory(path)) {for (int i = 0; i < pages; i++) {BufferedImage image = renderer.renderImageWithDPI(i, dpi);File file = new File(path + name + ".jpg");ImageIO.write(image, "jpg", file);// PNGpdDocument.close();}}} catch (Exception e) {}}private static boolean createDirectory(String folder) {File dir = new File(folder);if (dir.exists()) {return true;} else {return dir.mkdirs();}}
}
java EXCEL或WORD转PDF转图片(base64)相关推荐
- Java实现Excel和word转pdf加水印,复制及可用
Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...
- 预览word,excel,ppt,pdf、图片————使用vue实现
预览word,excel,ppt,pdf.图片----使用vue实现 需要下载的依赖: template模板实现: 方法的实现: 需要下载的依赖: npm i xlsx // 预览excel插件 np ...
- LayUi集成下载Excel、word、PDF、CSV扩展
LayUi集成下载Excel.word.PDF.CSV扩展 Excel.CSV Word PDF 根据项目需求,主要用的layui这个前段框架,现在需要支持将页面下载为四种格式的文件. Excel.C ...
- 关于java中实现word转pdf
1.java中实现word转pdf几种方式如下 1.使用jacob(Java COM Bridge)操作offfice的方式,基于这种方式无论是水印还是格式都可以完美转换:但是这个方式都只是基于win ...
- ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...
Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...
- java关于对于word或者pdf文件的批量下载实现,其中包括(Java实现创建word文档模板,根据模板导出word文档)
本次需求是,pdf是表格类型的文件,我这里使用了word模板进行处理.但由于是多个文件一起导出,因此全部放到一个目录底下进行打包下载. ## 整体思路 /*** 下载思路:* 1.查询出数据后:* 2 ...
- Java开发中word转pdf那件事
事件背景 由于项目需要,最新开始研究起word转pdf了,本以为应该是一件很简单的事情,网络上应该已经有很成熟的解决方案了,毕竟在电脑上使用wps或office操作只需要另存为pdf即可,结果一顿百度 ...
- java操作Excel、word和pdf
2019独角兽企业重金招聘Python工程师标准>>> 有些时候我们需要读写excel和word,或者将文字转为pdf那我们应该怎么做呢? 如果需要读写excel需要添加包: < ...
- 使用freemarker导出word、pdf、图片
安装openoffic启动服务请参考: java 调用OpenOffice将word格式文件转换为pdf格式 - warrior1234 - 博客园 maven包: <!-- https://m ...
- PHP word ppt pdf 转图片
一.window安装步骤(转载:https://www.cnblogs.com/jinxiblog/p/8053008.html) 个人操作步骤补充: 1.先下载php_imagick扩展,拷贝待ph ...
最新文章
- DATETIME类型和BIGINT 类型互相转换
- 使用Fiddler进行Web接口测试
- 瑞银监控机器人组装法_瑞银公布Model 3后续拆解报告:装配问题严重 噪音勉强能接受...
- 如何维护笔记本电脑的电池
- CSS fixed 定位元素失效的问题
- 利用WebHook实现自动部署Git代码
- 计算机组装流程,电脑组装教程
- 【机器学习】层次聚类-Agglomerative clustering
- 只要方向正确,路远不是事
- 36氪:超级表格想把企业协作做得“轻”一点
- 0004-1-模型好坏评判标准
- matlab画入射系数和透射系数,反射系数和透射系数.ppt
- springboot 与jsonp数据返回
- 无语的index hint:手工分配哈希区,5小时不出结果,优化后20分钟
- python视觉识别线条_简单车道线识别
- badger mremap size mismatch数据库异常
- 到底是什么人在买品牌整机 —— 拯救者刃 7000P 体验评测
- 单选框(radio)实现性别选择,实现选中后取消
- ARP防火墙AntiARP V4.2
- 艾瑞咨询蔡芳:2012移动互联网发展趋势简析