使用aspose.word.for.java解析word文档图片并替换
/**
*需要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文档图片并替换相关推荐
- JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库
转载自 JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库 开发环境:struts2+ spring + hibernate 数据库:oracle 需求:在HTML编 ...
- xml教程之java解析xml文档
1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...
- C#解析Markdown文档,实现替换图片链接操作
前言 又是好久没写博客了 其实也不是没写,是最近在「做一个博客」,从2月21日开始,大概一个多星期的时间,疯狂刷进度,边写代码边写了一整系列的博客开发笔记,目前为止已经写了16篇了,然后上3月之后工作 ...
- java解析各种文档格式_java读取各类型的文件
用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-dev.jar/lucene ...
- java解析pdf文档(前面写了docx的解析所以也思考写一份pdf的解析)--PdfReader底层分析
一.直接将前篇docx文档转成pdf文档用于测试 二.由于使用pdf文档所以需要引入一个新的依赖 <!--itextpdf是生成PDF文档的一个java类库--> <dependen ...
- java解析xml文档_Java解析xml文件
读xml文件: xml文件内容: Java Eclipse Swift Xcode C# Visual Studio 代码: package XMLParse; import java.io.File ...
- java 前言中不允许有内容,Java解析XML文档给出了“序言中不允许的内容”。
这个问题已经在这里有了答案: Prolog SAXParserException中不允许包含内容 5个答案 我正在用Java编写 ...
- Java解析Excel文档,2003和2007版本不兼容问题
网上查了一下,对于这两个版本,有对应的api,稍不注意就会报: org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplie ...
- java 解析word模板为xml, 动态填充数据到xml,最后输出word文档
java 解析word模板为xml, 动态填充数据到xml,最后输出word文档 在项目中, 一开始是使用java Apache poi 根据word模板生成word报表, 后面发现框架有个低版本的p ...
最新文章
- windows cmd color颜色设置
- opencv sobel导数
- Julie Desk:这个帮你安排会议的AI助手刚刚融了250万欧元
- 今日推荐:如何设计一个支撑数亿用户的系统
- hdu 3320 计算几何(三维图形几何变换)
- Java 计算两个日期时间差,天数、时、分、秒
- oracle rollup分组没有数据时为0_Hive 入门数据分析基础 5
- dart string 转 bool_Dart语法篇之集合操作符函数与源码分析(三)
- linux: 批量修改文件夹及文件夹下文件的名字
- 地表最强mysql命令行连接工具mycli
- Laravel核心解读--异常处理
- jquery 设置 select 默认值方法
- nginx+tomcat+msm实现seesion共享
- jquery模拟虚拟键盘带中文拼音输入_线上中文教学,这些设备越早知道越早受益!...
- mimic-iii数据库_财务会计应用程序数据库III:完成基础结构
- java解析魔兽争霸3录像_《魔兽争霸》的录像,为什么长达半小时的录像大小只有几百 KB?...
- MySQL读写分离、MySQL锁机制
- 图像质量评价(IQA)综述
- C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形
- 用java编写一个美元汇率转换,编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...