/**
*需要import的包有如下
*import com.aspose.words.Document;
*import com.aspose.words.DocumentBuilder;
*import com.aspose.words.ImageData;
*import com.aspose.words.Node;
*import com.aspose.words.NodeCollection;
*import com.aspose.words.NodeType;
*import com.aspose.words.Shape;
*import com.aspose.words.ShapeType;
*
*aspose.words.for.java 版本 3.1.0
*
* 将word文档中wmf图片导出并替换为标签
*
* @param fileName
*            文档完整名
* @return 修改后的文件名
*/
public String exportWmfFromDoc(String fileName) {try {Document doc = new Document(filePath + fileName);// 新建文档对象NodeCollection shapeCollection = doc.getChildNodes(NodeType.SHAPE,true);// 查询文档中所有wmf图片Node[] shapes = shapeCollection.toArray();// 序列化String imgPath = "";if (shapes.length > 0) {// 如果文档存在图片File file = new File(imagePath+ fileName.substring(0, fileName.lastIndexOf(".")));if (file != null) {if (file.exists() || file.mkdir()) {// 创建文档图片保存文件夹imgPath = file.getAbsolutePath() + "\\";} else {throw new Exception("文档图片保存路径不可写,请检查路径:\"" + imagePath+ "\"");}}for (Node node : shapes) {Shape shape = (Shape) node;if (shape.getShapeType() == ShapeType.OLE_OBJECT) {// 如果shape类型是ole类型ImageData i = shape.getImageData();// 获得图片数据String imageName = imageName() + ".wmf";i.save(imgPath + imageName);// 导出图片File f = new File(imgPath + imageName);if (f.exists()) {imageName = wmfToPNG(f.getAbsolutePath());log.debug("f.path--->" + f.getAbsolutePath());Exec.saveMinPhoto(imageName, imageName, (double)38, (double)0);if (f.canWrite()) {f.delete();}} else {log.error("图片不存在!");continue;}// log.info("f.name--->" + f.getName());DocumentBuilder builder = new DocumentBuilder(doc);// 新建文档节点builder.moveTo(shape);// 移动到图片位置builder.write("[img]"+ fileName.substring(0, fileName.lastIndexOf("."))+ "/"+ f.getName().substring(0,f.getName().lastIndexOf(".")) + ".png"+ "[/img]");// 插入替换文本shape.remove();// 移除图形} else if (shape.getShapeType() == ShapeType.IMAGE) {// 如果shape类型是ole类型ImageData i = shape.getImageData();// 获得图片数据String imageName = imageName() + ".png";i.save(imgPath + imageName);// 导出图片File f = new File(imgPath + imageName);if (f.exists()) {DocumentBuilder builder = new DocumentBuilder(doc);// 新建文档节点builder.moveTo(shape);// 移动到图片位置builder.write("[img]"+ fileName.substring(0, fileName.lastIndexOf("."))+ "/"+ f.getName().substring(0,f.getName().lastIndexOf("."))+ ".png" + "[/img]");// 插入替换文本shape.remove();// 移除图形} else {log.error("图片不存在!");continue;}}}String extName = fileName.substring(fileName.lastIndexOf("."));String mainName = fileName.substring(0, fileName.lastIndexOf("."));doc.save(filePath + mainName + "_done" + extName);// 保存修改后的文档// log.info("filename---->" + mainName + "_done" + extName);return mainName + "_done" + extName;}} catch (Exception e) {e.printStackTrace();}return null;}

原帖:http://www.oschina.net/code/snippet_97818_8443

使用aspose.word.for.java解析word文档图片并替换相关推荐

  1. JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库

    转载自  JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库 开发环境:struts2+ spring + hibernate 数据库:oracle 需求:在HTML编 ...

  2. xml教程之java解析xml文档

    1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...

  3. C#解析Markdown文档,实现替换图片链接操作

    前言 又是好久没写博客了 其实也不是没写,是最近在「做一个博客」,从2月21日开始,大概一个多星期的时间,疯狂刷进度,边写代码边写了一整系列的博客开发笔记,目前为止已经写了16篇了,然后上3月之后工作 ...

  4. java解析各种文档格式_java读取各类型的文件

    用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-dev.jar/lucene ...

  5. java解析pdf文档(前面写了docx的解析所以也思考写一份pdf的解析)--PdfReader底层分析

    一.直接将前篇docx文档转成pdf文档用于测试 二.由于使用pdf文档所以需要引入一个新的依赖 <!--itextpdf是生成PDF文档的一个java类库--> <dependen ...

  6. java解析xml文档_Java解析xml文件

    读xml文件: xml文件内容: Java Eclipse Swift Xcode C# Visual Studio 代码: package XMLParse; import java.io.File ...

  7. java 前言中不允许有内容,Java解析XML文档给出了“序言中不允许的内容”。

    这个问题已经在这里有了答案: Prolog SAXParserException中不允许包含内容                                     5个答案 我正在用Java编写 ...

  8. Java解析Excel文档,2003和2007版本不兼容问题

    网上查了一下,对于这两个版本,有对应的api,稍不注意就会报: org.apache.poi.poifs.filesystem.OfficeXmlFileException:  The supplie ...

  9. java 解析word模板为xml, 动态填充数据到xml,最后输出word文档

    java 解析word模板为xml, 动态填充数据到xml,最后输出word文档 在项目中, 一开始是使用java Apache poi 根据word模板生成word报表, 后面发现框架有个低版本的p ...

最新文章

  1. windows cmd color颜色设置
  2. opencv sobel导数
  3. Julie Desk:这个帮你安排会议的AI助手刚刚融了250万欧元
  4. 今日推荐:如何设计一个支撑数亿用户的系统
  5. hdu 3320 计算几何(三维图形几何变换)
  6. Java 计算两个日期时间差,天数、时、分、秒
  7. oracle rollup分组没有数据时为0_Hive 入门数据分析基础 5
  8. dart string 转 bool_Dart语法篇之集合操作符函数与源码分析(三)
  9. linux: 批量修改文件夹及文件夹下文件的名字
  10. 地表最强mysql命令行连接工具mycli
  11. Laravel核心解读--异常处理
  12. jquery 设置 select 默认值方法
  13. nginx+tomcat+msm实现seesion共享
  14. jquery模拟虚拟键盘带中文拼音输入_线上中文教学,这些设备越早知道越早受益!...
  15. mimic-iii数据库_财务会计应用程序数据库III:完成基础结构
  16. java解析魔兽争霸3录像_《魔兽争霸》的录像,为什么长达半小时的录像大小只有几百 KB?...
  17. MySQL读写分离、MySQL锁机制
  18. 图像质量评价(IQA)综述
  19. C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形
  20. 用java编写一个美元汇率转换,编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...

热门文章

  1. 2021年低压电工新版试题及低压电工证考试
  2. 纯css绘制齿轮加载动画
  3. autojs自定义Switch
  4. 获取post请求的几种常见方式
  5. 齐岳定制|Cyclopropene-PEG-Xylan|环丙烯-聚乙二醇-木聚糖
  6. 架构之美【kubernetes、Prometheus、微服务、LVS负载均衡】
  7. 笔记本电脑键盘失效修复方法,我搞了好久
  8. windows脚本编制引擎_实现一个脚本引擎
  9. 新装Kali需安装的常用软件(不定期更新)
  10. D2 日报 2019年5月20日