吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9942|回复: 22
收起左侧

[Java 原创] 使用Java实现word文档转图片 在线预览

  [复制链接]
ProgramerFangL 发表于 2019-7-8 16:51
项目上有个需求,要实现上传word,预览的时候用word每一页的图片进行预览。
一共有两种方法。第一种想到的方法是将word先转换为pdf,然后将pdf的每一页都保存为图片;第二种方法是将word直接转换为图片。
在第一种方式实现的过程中发现在文档页数变大时,转pdf时间较长,所以直接使用word转图片方法。
主要使用 aspose-words-*-jdk16.jar。破解版的jar是来自于这个大哥




[Java] 纯文本查看 复制代码
    /**
     * 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;
    }
    /**
     *  文档转图片
     * [url=home.php?mod=space&uid=952169]@Param[/url] 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地址
[Asm] 纯文本查看 复制代码
spring:
  resources:
    static-locations: file:/D:/img_path/





在预览时只需要到对应的图片文件夹下找到相应的文档图片,按图片序号即可实现根据page size 分页预览的功能了,返回如下:
[Asm] 纯文本查看 复制代码
{
  "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。

免费评分

参与人数 2吾爱币 +4 热心值 +1 收起 理由
水滴12 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| ProgramerFangL 发表于 2019-7-9 14:39
tzwhyqq 发表于 2019-7-8 17:56
有代码就更好了。主要那个aspose这个不好找,而且你这种转换,不知道有没有看格式有没有失不对,有些字体会 ...

这个包是我从csdn上找到,转换我试了很多文档,暂时没发现问题
 楼主| ProgramerFangL 发表于 2019-7-9 14:40
phubing 发表于 2019-7-9 09:29
但如果是不知道word文档有多少页呢?请问楼主是如何处理的,谢谢

word文档的页数是在代码里获取的,文档的页数没有影响
阿斯巴德 发表于 2019-7-8 17:26
小飞侠1994 发表于 2019-7-8 17:29
学习了,很棒
feeling 发表于 2019-7-8 17:35
求代码。
ccyf1314 发表于 2019-7-8 17:50


很不错,学习了
luckyme019 发表于 2019-7-8 17:54
感谢分享,学习啦
tzwhyqq 发表于 2019-7-8 17:56
有代码就更好了。主要那个aspose这个不好找,而且你这种转换,不知道有没有看格式有没有失不对,有些字体会有问题。
huangyuhou 发表于 2019-7-8 18:57
666,不错哦
wxx521 发表于 2019-7-8 22:31
学习一下,也不错
挂号信坪萌 发表于 2019-7-8 23:42
学习一下,也不错。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表