关于DOC转HTML的初始代码详见:

在这部分代码即有

wordToHtmlConverter.setPicturesManager()

也通过

wordDocument.getPicturesTable().getAllPictures()

将Document的Pictures保存到硬盘

但实际操作过程中会发现这两个方法得到的Pictures数量是不一致的,后部分代码不包含通过Doc绘制的图片,而前面部分代码能获得这部分图片,于是将这部分代码改造

converter.setPicturesManager(new PicturesManager() {

public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {

try {

FileOutputStream fos=new FileOutputStream(path + suggestedName);

fos.write(content);

} catch (Exception e) {

e.printStackTrace();

}

return suggestedName;

}

});

去掉

wordDocument.getPicturesTable().getAllPictures()

这部分代码。

这样改造能解决图片不一致的问题,却发现另外一个问题,在转成html的时候word中正常的图片能在网页中显示正常的高度和宽度,但是针对通过Doc绘制的图片,img标签是没有高度和宽度的。会发现在html中呈现原始大小与word不保持一致。

通过阅读WordToHtmlConverter源代码发现:

protected void processDrawnObject(HWPFDocument doc,

CharacterRun characterRun, OfficeDrawing officeDrawing,

String path, Element block) {

/* 302*/Element img = htmlDocumentFacade.createImage(path);

/* 303*/block.appendChild(img);

}

这段代码只在html中生成了img标签而没有设置它的高度和宽度。

于是将这个方法改造一下:

protected void processDrawnObject( HWPFDocument doc,

CharacterRun characterRun, OfficeDrawing officeDrawing,

String path, Element block )

{

Element img = htmlDocumentFacade.createImage( path );

float width = (float) (officeDrawing.getRectangleRight() - officeDrawing

.getRectangleLeft()) / 1440F;

float height = (float) (officeDrawing.getRectangleBottom() - officeDrawing

.getRectangleTop()) / 1440F;

img.setAttribute(

"style",

(new StringBuilder()).append("width:").append(width)

.append("in;height:").append(height)

.append("in;vertical-align:text-bottom;")

.toString());

block.appendChild( img );

}

大功告成。

poidoc转换成html乱码,JAVA 利用POI实现DOC转HTML的方法及BUG修改相关推荐

  1. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  2. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  3. java利用poi实现Excel考勤报表的输出

    java利用poi实现Excel考勤报表的输出 实现效果 SXSSFWorkbook超大数据导出 标题.表头.内容有样式 可以多个sheet(满65535行数据换新的sheet) 一度为快 maven ...

  4. java利用POI替换word文档中的标签

    java利用POI替换word文档中的标签 <dependency><groupId>org.apache.poi</groupId><artifactId& ...

  5. java利用poi读取excel_java利用POI读取excel文件的方法

    摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputS ...

  6. JAVA 利用poi EXCLE模板文档导出数据

    JAVA 利用poi EXCLE模板文档导出数据 1.导入jar包 下载地址:添加链接描述 提取码:xqkg 2.EXCLE模板 3.代码示例 package utill;import java.io ...

  7. Java使用POI将doc文档转为Html

    Java使用POI将doc文档转为Html 前提 几个使用到的类 几个方法的理解 converter.setPicturesManager(xxxx) converter.processDocumen ...

  8. java利用实现大数阶乘(三种方法)

    java利用实现大数阶乘(三种方法) 法一: for循环 import java.math.BigInteger; import java.util.Scanner; public class das ...

  9. 左神算法:将搜索二叉树转换成双向链表(Java版)

    本题来自左神<程序员代码面试指南>"将搜索二叉树转换成双向链表"题目. 题目 对二叉树的节点来说,有本身的值域,有指向左孩子节点和右孩子节点的两个指针:对双向链表的节点 ...

  10. java项目编码转换不产生乱码,Java源码乱码问题 编码转换器

    注释:开发背景:导入到myeclipse中的源码是gbk编码,项目是utf-8编码,导致查看源码乱码问题.  package com.test; import java.io.File; impo ...

最新文章

  1. MFC如何打开文件路径
  2. php中如何想时间转为时间戳,php中怎么将时间转换为时间戳
  3. framework之Activity 生命周期解析(基于Android11源码)
  4. oracle11g 启动报错 缺少系统参数
  5. 深度信念网络Deep Belief Networks资料汇总
  6. Linux Ubuntu 修改Grub,添加删除启动项,初步辨析Grub文件。
  7. java接口测试框架搭建_接口自动化测试框架搭建
  8. 九度OJ : 1004 Median
  9. PowerDesigner逆向工程,从数据库导出PDM(包括采坑记录)
  10. yml 后面的配置覆盖前面的
  11. 爬虫进阶 -- 爬虫相关定义、反爬机制及其破解
  12. Atitit 圣爱提拉克斯在会议上 2019年10月中旬的一天,有过这样的事。 这天,地方上风大。出乎人们意料之外,到东海岸一个地方访问的亲爱的领导者圣爱提拉克斯要同人们一道开会。主持人着了慌,
  13. Vue3.0 项目创建
  14. class文件的反编译过程
  15. nxp的bluetooth驱动调试
  16. Office 2010 excel在打开两个表格的时候,仅能在一个窗口显示
  17. 欧几里德游戏(归纳总结)
  18. sketch八款设计插件,画图效率翻倍
  19. CA认证及http实现方法
  20. 微信视频号如何直播游戏效果最好?教你最简单的方法

热门文章

  1. Go语言使用PostgreSQL数据库
  2. MessageDialog MessageDialogPage
  3. CLR Via CSharp读书笔记(11):事件
  4. 8.深入分布式缓存:从原理到实践 --- 分布式Redis
  5. 28.Linux/Unix 系统编程手册(上) -- 详述进程创建和程序执行
  6. 1.Linux 高性能服务器编程 --- TCP/IP 协议族
  7. 30.github 搭建 blog
  8. 81. $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
  9. 用maya怎么做ak47_串串香应该怎么用配料才能做得好吃
  10. 13、MVC 设计思想