@TOCJava使用word文档转换图片或pdf格式,需要使用(spire.doc-3.5.2.jar),有水印(这个是付费的,没有找到破解,但是能转图片)。
使用场景:
1、需要spire.doc包,这个可以去maven库搜素下载即可。我感觉应该也会有破解的,但是我没有搜到,所以先写着,等以后有时间找到破解版的时候再对本篇文章进行更新。2、需要转一下MultipartFile文件。我这里是由File转MultipartFile,很多博客有写这两个的区别的,感兴趣的可以自己去搜索一下呀。
直接上代码吧:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import javax.imageio.ImageIO;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.ImageType;
public class test2 {
//测试方法
public static void main(String[] args) {
//String filePath = "C:/Users/Administrator/Desktop/1.docx";
MultipartFile multipartFile = null;
try {
multipartFile = getFile();
} catch (IOException e) {
e.printStackTrace();
}
changeDocToImg(multipartFile, multipartFile.getName());
}
/**
* @Description 返回MultipartFile文件
* @return org.springframework.web.multipart.MultipartFile
* @date 2019/1/5 11:08
* @auther dell
*/
public static MultipartFile getFile() throws IOException {
String filePath = "C:/Users/Administrator/Desktop/1.docx";
File file = new File(filePath);
FileItem fileItem = new DiskFileItem(file.getName(), Files.probeContentType(file.toPath()),false,file.getName(),(int)file.length(),file.getParentFile());
byte[] buffer = new byte[4096];
int n;
try (InputStream inputStream = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()){
while ( (n = inputStream.read(buffer,0,4096)) != -1){
os.write(buffer,0,n);
}
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
System.out.println(multipartFile.getName());
return multipartFile;
}catch (IOException e){
e.printStackTrace();
}
return null;
}
/**
* word转换图片
* @param file 上传的文件
* @param imgName 生成的文件名
* @return
*/
public static void changeDocToImg(MultipartFile file, String imgName) {
try {
Document doc = new Document();
//加载文件 第二个参数 FileFormat.Auto 会自动去分别上传文件的 docx、doc类型
doc.loadFromStream(file.getInputStream(), FileFormat.Auto);
//上传文档页数,也是最后要生成的图片数
Integer pageCount = doc.getPageCount();
// 参数第一个和第三个都写死 第二个参数就是生成图片数
BufferedImage[] image = doc.saveToImages(0, pageCount, ImageType.Bitmap);
// 循环,输出图片保存到本地
for (int i = 0; i < image.length; i++) {
File f = new File("I:/img/" + imgName + "_" + (i + 1) + ".png");
ImageIO.write(image[i], "PNG", f);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
有不懂的可以留言啦
提示:
这个不记得是再哪里找到的方法了,所以就没有原文路径的输出啦。