Java使用word文档转换图片或pdf格式(spire.doc),这个是有水印的

@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();
        }
    }
	
}

有不懂的可以留言啦

提示:
这个不记得是再哪里找到的方法了,所以就没有原文路径的输出啦。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值