相对来说world、pdf转图片还是比较简单的,world、pdf转html坑是最多的。不过我们这篇文章只写world、pdf转图片,后者我将会用另一篇文章就行讲述。

原理: world、Excel转图片   就是先将内容转成pdf   在将pdf转成图片

话不多说 直接贴代码

首先就是 必须要有的依赖包

<!--PDF/excel/world转图片--><dependency><groupId>net.sf.jacob-project</groupId><artifactId>jacob</artifactId><version>1.14.3</version></dependency><!--<dependency>--><!--<groupId>com.aspose</groupId>--><!--<artifactId>aspose-cells</artifactId>--><!--<version>8.5.2</version>--><!--</dependency>--><dependency><groupId>com.sun.pdfview</groupId><artifactId>PDFRenderer</artifactId><version>0.9.1</version></dependency>
  • import java.io.File;public class FileManage {public static void listRoots() {// 将根目录存入File数组roots中File[] roots = File.listRoots();// 打印出根目录try {for (int i = 0; i < roots.length; i++) {// 打印出根目录下的文件File[] rootfile = roots[i].listFiles();if(rootfile!=null){for (File rf : rootfile) {//  System.out.println(rf);
    //        System.out.println("------------------------------------");}}}} catch (RuntimeException e) {// TODO 自动生成 catch 块e.printStackTrace();}}// 删除指定文件或一些文件public void deleteFiles(String path, String inname, String inextension) {boolean status = true;FileManagerFilter fmf = new FileManagerFilter(inname, inextension);File file = new File(path);File[] filelist = file.listFiles(fmf);// System.out.println(filelist.length); 此语句用于测试if (filelist.length != 0) {for (File fl : filelist) {// boolean delfil = fl.delete();System.out.println(fl + (fl.delete() ? " 成功" : " 没有成功")+ "被删除!");}} else {System.out.println("根据您所给的条件,没有找到要删除的文件!");}}// 删除所有目录下所有文件,但是目录没有删除,哈哈其实效果一样public void deletAllFile() {FileManage fmqq53227117 = new FileManage();File[] roots = File.listRoots();for (int i = 0; i < roots.length; i++) {if (roots[i].isDirectory()) {fmqq53227117.deleteFiles(roots[i].toString(), "*", "*");}}}//d:\ceshi.pdfpublic  void deleteFile(String filePath) {FileManage.listRoots();FileManage fm = new FileManage();// 此句表示删除G:\下的所有以"Fi"开头的,以"java"结尾的文件// 删除指定文件,请慎用!!!本机环境下有G:\盘File file = new File(filePath);//获取文件名 带后缀String filename = file.getName();//获取文件后缀String suffix =filename.substring(filename.indexOf(".")+1);//获取文件名  不带后缀String name = filename.substring(0, filename.indexOf("."));System.out.println(name+suffix);fm.deleteFiles("D:\\", name, suffix);//删除所有目录下文件, 请慎用此方法!!!!!!!!!!!!!!!!!//fm.deletAllFile();}public static void main(String args[]) {FileManage.listRoots();FileManage fm = new FileManage();// 此句表示删除D:\下的ceshi文件,以"pdf"结尾的文件fm.deleteFiles("D:\\", "ceshi", "pdf");}
    }

//用到的工具类

import java.io.File;
import java.io.FilenameFilter;public class FileManagerFilter implements FilenameFilter {private String name;private String extension;public FileManagerFilter(String name, String extension) {this.name = name;this.extension = extension;}public boolean accept(File dir, String filename) {boolean fileOK = true;String str;char c;if (name == "*"&&extension=="*") {return fileOK = true;}//遍历filename字符串for(int i=0;i<filename.length();i++){//找出filename字符串中的每个字符c =filename.charAt(i);//转换为string类型str = String.valueOf(c);if (name != null&&str.equals(".")) {// 不大解理"&="的运行过程,//找出文件夹中name相同的fileOK &= filename.substring(0, filename.indexOf(".")).equals(name);//匹配以name开头的文件名称
//            fileOK &= filename.startsWith(name);}}if (extension != null) {//匹配以extension 结尾的文件后缀fileOK &= filename.endsWith('.' + extension);}return fileOK;}}

下面的这段代码 是我在项目实战中用到的  仅供参考  强烈建议大家不要盲目的粘贴复制 ,这些代码 是不全的  况且文件定义的规则也是不一样的 只是让大家看看 我是怎么在项目中用这个封装好的工具类。

大家可以先启动一下 上面的 main方法 慢慢的找一下 规则 理解一下

//源文件全路径String docfile = path;//获取文件全名  带后缀String filename = null;//文件名  不带后缀String name = null;File file = new File(docfile);//获取文件名 带后缀filename = file.getName();//获取文件名  不带后缀name = filename.substring(0, filename.indexOf("."));//        System.out.println(name+"name");//用于存放图片的目录SimpleDateFormat formatter = new SimpleDateFormat("/YYYYMM/YYYYMMDD/hhmmss-");String dateString = formatter.format(new Date());String paths = dateString + UUID.randomUUID().toString().replaceAll("-", ""); // 相对路径String spath = paths + name;String outFile = getUploadPath()+spath;//如果目录不存在,就创建新的目录if (!new File(outFile).isDirectory()) {new File(outFile).mkdirs();}//存放PDF的路径和PDF的文件名String toFile = getUploadPath()+ paths + name;//实例化对象WorldToJPGFormatToJPG wj = new FormatToJPG();//将world文件转换为PDF文件   并返回PDF文件的全路径   17 表示文件格式为PDFString filePath = wj.wordToPDF(docfile, toFile, 17);try {//将PDF文件转换为JPG文件pathList = wj.pdfToJPG(filePath, outFile);//删除pdf文件
//                new FileManage().deleteFile(filePath);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}

到这里第一种方法已经结束了

ps:大家可以启动一下 main方法测试一下 在线上调用工具类的时候 千万不忘记把 System级别的打印给删除掉

上述是测试代码。是不是非常简单 也不需要什么依赖包

下面我说另外一种转图片的方法  是用的 oppenOffice

包依赖:这个包需要的话 可以去csdn下载 ,也可以加群 去文件里面自行下载

QQ群号:         808249297

下载链接:https://download.csdn.net/download/weixin_41036106/10711571


import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import java.io.File;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;public class OfficeToPDF {public void docToPdf(File inputFile, File outputFile){//启动服务String OpenOffice_HOME = "C:/Program Files (x86)/OpenOffice 4";// 这里是OpenOffice的安装目录if(OpenOffice_HOME.charAt(OpenOffice_HOME.length()-1)!='/'){OpenOffice_HOME+="/";}Process pro = null;OpenOfficeConnection connection = null;// 启动OpenOffice的服务String command = OpenOffice_HOME + "program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";// connect to an OpenOffice.org instance running on port 8100try{pro = Runtime.getRuntime().exec(command);connection = new SocketOpenOfficeConnection(8100);connection.connect();// convertDocumentConverter converter = new OpenOfficeDocumentConverter(connection);System.out.println(inputFile+"="+outputFile);converter.convert(inputFile, outputFile);}catch(Exception ex){System.out.println("程序出错了");ex.printStackTrace();}finally{// close the connectionif(connection!=null){connection.disconnect();connection = null;}pro.destroy();}System.out.println("生成"+outputFile.getName());}//生产pdf线程static class TestThread extends java.lang.Thread{private File inputFile;private File outputFile;public void run(){OfficeToPDF t = new OfficeToPDF();t.docToPdf(inputFile, outputFile);System.out.println(outputFile.getName()+"文件已生成");}public void setInputFile(File inputFile) {this.inputFile = inputFile;}public void setOutputFile(File outputFile) {this.outputFile = outputFile;}}}

根据自己的文件生成规则  建立输入 输出路径  (跟上述一样 也是 自己在项目中的代码  请忽粘贴,仅供参考)

SimpleDateFormat formatter = new SimpleDateFormat("/YYYYMM/YYYYMMDD/hhmmss-");String dateString = formatter.format(new Date());String paths = dateString + UUID.randomUUID().toString().replaceAll("-", ""); // 相对路径String spath = paths + attachment.getAttachName();String outFile = getUploadPath()+spath+".pdf";OfficeToPDF wordToPDF = new OfficeToPDF();wordToPDF.docToPdf(new File(path), new File(outFile));//实例化对象WorldToJPGFormatToJPG wj = new FormatToJPG();//将PDF文件转换为JPG文件String pathJPG =getUploadPath()+ paths+"JPG" + attachment.getAttachName();try {pathList = wj.pdfToJPG(outFile, pathJPG);} catch (IOException e) {e.printStackTrace();}

大家可能 很男理解这几段代码  我解释一下  我之所以 用完 oppenOffice 这个工具类  在用方法一 讲的 那个工具类 原因就是 我这边 是将excel 转pdf   现在就是在把生成的pdf用第一种方法 转成 图片

下片文章我将为大家讲述一下  world、PDF、excel如何生成 html

欢迎大家加java交流群,有问题我们可以一同探讨。

群号:808249297

二维码:

Java中world、PDF、Excel转图片相关推荐

  1. java中生成pdf,插入图片,页眉、页脚、表格

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java中生成pdf,插入图片,页眉.页脚.表格 import com.lowagie.text.*; import com.lowagie.te ...

  2. java 合并pdf,如何在Java中合并PDF

    如何在Java中合并PDF 为小型企业和大型企业,保持 您的 重要 文件, 组织将提高您的工作流程,并成倍增长你的组织的工作效率. PDF文档由于其接受的输入格式的类型的安全性和灵活性,通常是共享大量 ...

  3. 你知道如何快捷地在Java中使用现有Excel数据创建PPT图表吗?

    Spire.Office for .NET是一套企业级的涵盖 E-iceblue 所有 .NET Office 组件的集合.使用 Spire.Office for .NET,开发人员可以创建大量的用于 ...

  4. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  5. Java 中调用 Apache API 实现图片文件的 压缩 与 解压 实例

    < Java 中调用 Apache API 实现图片文件的 压缩 与 解压 > 为什么不直接使用 Java JDK 中自带的 API 呢?必须使用 Apache API 实现文件的压缩与解 ...

  6. java实现word,pdf,excel,图片添加水印

    gitee项目地址:https://gitee.com/betelnutandwine/meutilswatermark: java实现pdf,word,excel,ppt,图片加水印 jar地址:s ...

  7. 朝花夕拾:Java中实现对EXCEL文件的读取

    在项目中实现读取EXCEL文件中的数据是实现工作项目中数据读取的常用方式.这个对于之前无论写C/C++还是后来写Java来读取txt数据的我来说都是一个新的方式.新的技巧,相信对刚入手的很多小伙伴都是 ...

  8. Java Word转PDF Excel转PDF

    前提:Windows环境 在项目中,有需求Word转PDF或者Excel转PDF,例举一个简单有效的转换工具. Windows环境亲测有效. Maven项目依赖: <!-- https://mv ...

  9. Java 中如何过滤 Excel 文件

    现有Excel文件emp.xlsx,部分数据如下: EID NAME SURNAME GENDER STATE BIRTHDAY HIREDATE DEPT SALARY 1 Rebecca Moor ...

  10. java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印

    接上一篇,pdf跟tif 是一起做的 java实现 1.给PDF文件添加图片水印: public static void waterMark1(String inputFile,String outp ...

最新文章

  1. 如何得到Mysql每个分组中的第N条记录
  2. 如何理解soft target这一做法?
  3. 文件内容统计——Linux wc命令
  4. 稳定匹配算法python实现
  5. Creating a Java VM from Android Native Code
  6. Android之android.graphics.drawable.Drawable.Callback回调接口
  7. 浅入浅出 Android 安全:第四章 Android 框架层安全
  8. Android 系统(232)---减小 OTA 大小
  9. 坐标计算机在线使用,caslo计算器计算坐标的方法
  10. c语言扩展编译器,TKStudio内置51编译器SDCC对C语言的扩展(2)
  11. sap事务代码如何收藏_SAP仓库管理模块事务代码大全
  12. ps4玩android游戏,PS4更新7.0系统:手机秒变手柄,远程遥控畅玩游戏
  13. [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k2
  14. 将Oracle的字符集由AMERICAN_AMERICA.ZHS16GBK修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  15. RAPID常用数据类型
  16. Python数据可视化——词云图
  17. 解决vue弹窗被遮罩层遮挡和关闭弹窗后遮罩层不消失的两个问题
  18. 【python爬虫错误】Max retries exceeded with url
  19. A. ABC String.
  20. opengl在windows10下的安装和使用

热门文章

  1. 如何言语上更好的激励别人?
  2. arm服务器还是x86架构的服务器,哪个稳定?
  3. 《文明6》引言科普 引言出处讲解 【转】
  4. Python算法题笔记
  5. react函数式组件传值之父传子
  6. mysql 法语字符比较_法语比较级如何表达?超全整理
  7. Excel图表导出为图片,最终转为eps矢量图
  8. iPhone突然黑屏开不了机怎么办?3种解决方法分享
  9. 一篇文章带你搞懂微信小程序的开发过程
  10. 千锋深圳校区相亲会 双蛋之夕不再孤单