使用Java实现word文档转图片 在线预览

项目上有个需求,要实现上传word,预览的时候用word每一页的图片进行预览。

一共有两种方法。第一种想到的方法是将word先转换为pdf,然后将pdf的每一页都保存为图片;第二种方法是将word直接转换为图片。

在第一种方式实现的过程中发现在文档页数变大时,转pdf时间较长,所以直接使用word转图片方法。

主要使用 aspose-words-*-jdk16.jar。破解版的jar是来自于这个大哥

    /**
     * licence 验证
     * @return
     * @throws Exception
     */
    public static boolean getLicense() throws Exception {
        boolean result = false;
        try {
            InputStream is = com.aspose.words.Document.class
                    .getResourceAsStream("/com.aspose.words.lic_2999.xml");
            License aposeLic = new License();
            aposeLic.setLicense(is);
            result = true;
            is.close();
        } catch (Exception e) {
            logger.error("License 获取失败");
            e.printStackTrace();
            throw e;
        }
        return result;
    }
    /**
     *  文档转图片
     * @param inPath 传入文档地址
     * @param outDir 输出的图片文件夹地址
     */
    public static void doc2Img(String inPath, String outDir){
        try {
            if (!getLicense()) {
                throw new Exception("com.aspose.words lic ERROR!");
            }
            logger.info(inPath + " -> " + outDir);
            long old = System.currentTimeMillis();
            // word文档
            Document doc = new Document(inPath);
            // 支持RTF HTML,OpenDocument, PDF,EPUB, XPS转换
            ImageSaveOptions options = new ImageSaveOptions(SaveFormat.PNG);
            int pageCount = doc.getPageCount();
            for (int i = 0; i < pageCount; i++) {
                File file = new File(outDir+"/"+i+".png");
                logger.info(outDir+"/"+i+".png");
                FileOutputStream os = new FileOutputStream(file);
                options.setPageIndex(i);
                doc.save(os, options);
                os.close();
            }
            long now = System.currentTimeMillis();
            logger.info("convert OK! " + ((now - old) / 1000.0) + "秒");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

在spring boot项目配置文件中配置文件存储目录为resource地址

spring:
  resources:
    static-locations: file:/D:/img_path/

在预览时只需要到对应的图片文件夹下找到相应的文档图片,按图片序号即可实现根据page size 分页预览的功能了,返回如下:

{
  "succeed": true,
  "model": {
    "list": [
      "http://192.168.250.247:8888/be62bd8c-0a1a-47f8-8abc-839c22c0072a/img/0.png",
      "http://192.168.250.247:8888/be62bd8c-0a1a-47f8-8abc-839c22c0072a/img/1.png",
      "http://192.168.250.247:8888/be62bd8c-0a1a-47f8-8abc-839c22c0072a/img/2.png"
    ],
    "page": 1,
    "size": 3,
    "totalCount": 103,
    "totalPage": 35
  },
  "message": ""
}

实现功能,OVER。

你可能感兴趣的:(使用Java实现word文档转图片 在线预览)