解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」

解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

         前一段时间遇到一个问题,就是将html转成word文档,里面有图片,表格,和各种形式的文字。刚开始的做法是将html代码取出来,然后以留的形式进行保存,后缀名为.doc。当我转成之后发现一切完美,但是图片出现了问题:

        1.图片大小、像素有问题。

       2.(最严重的)图片存在word的是一个链接而已。

       当我们在断网的情况下(或者拷贝到两一台电脑上)打开word文档的时候 实际上看到的图片是一个链接,也就是说图片转化的不成功。

      其实从本质上来说,我们可以看一下转化之后所谓的word文档的格式,(点击另存为,看文件类型)发现其实转化之后的文档的文件类型仍然是.html的格式。只有当我们再次另存为并且选择文件类型为.doc格式的时候 才能做到真正意义上的转化,并且图片不会出现上述问题。原因大致是html转word的时候中间会经过一步处理,先将html的文件转成了xml文件,然后在转成.doc格式,同时将html的图片转成了Base64编码的格式(替换了图片的链接)存在了xml文件里。(我们可以打开将任意一篇.doc格式的word文档另存为成.xml文档后分析带有图片的那部分代码。)

      于是乎浏览网上各种大神的解决办法,发现并没有一个很好的解决方法。网上的关于html转化word的解决办法总结起来有以下几种情况:

       1.用ASPOSE.WORDS控件来处理。(涉及到了asp。。还有神马控件。。扩展性太差,,果断不深入这个方法。废弃之。)

       2.把html文件里面的图片转成Base64格式存储。

       好像是涉及到了上面所叙述的html转word的原理部分,但是那是word做的事,鬼知道当我们在选择将word另存为.doc格式的时候word做了什么操作。。。。我们都知道html标签里的图片形式为:<img src=”xxxxxxx” />  将图片转成Base64编码容易,但是并不是将Base64编码的图片简单的放到src=“xxxxx”里面就行了,需要能让word读懂。  转成能让word读懂的格式就更不容易了(也就是前文提到的那个xml文件)。因为图片有很多格式(.jpg/.png等等),还要涉及到word里特殊的标签(类似这种<img src=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA…” />)。。。。 所以在尝试了之后也放弃了。

      3.用POI 这个jar包 

说这个的更是扯。 Apache的POI对图片的处理不友好,甚至有的版本根本就不支持。在入坑很久之后,果断放弃。。。

      4. javacdoc 的包  

        亲测 不可以。以上4中方法是网上讨论最多的,我从09年的帖子一直翻到17年的,总结下来的。。发现并没有找到解决办法。。最后不得已,决定自己解析html文档,转化word。最终成功转化,实现了自己想要的结果。实现起来也很简单,只是解析了一下word而已。

      5.利用freemaker模板。

      这个可以解决,但是要大动干戈。实际开发的过程中不会因为一点问题就换模板的。这样不利于开发和维护。

解决思路:

      设法解决转成word的时候另存为时候看到的文件类型不是.html格式的就ok,这样的话就不会以图片链接的形式放在word里面。

解决办法:(相关demo和jar包后面会给出)

     1.先 用jsoup的包将html格式化。(此处用于解析html代码。方便后面用itext包调用)

     2.利用iText的jar包,这个jar包是转化pdf用到的,但是转化成word也能用。保存后在word里面的文件类型是.rtf格式的。能够完美解决问题。

成功后的结果:

   解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」

文件类型:

      解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」


Demo地址: 

http://download.csdn.net/download/wht21888/10120532

(年少无为,卖码为生,需要一点点资源币。委屈   具体的方式在Demo里有,有什么问题或者你有更好的方式  欢迎加QQ:749938275 一起讨论)

    

     





     



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182968.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 银行家算法c语言加注释,银行家算法 C语言编程[通俗易懂]

    银行家算法c语言加注释,银行家算法 C语言编程[通俗易懂]匿名用户1级2011-06-02回答银行家算法程序代码#include#include#include#defineFALSE0#defineTRUE1#defineW10#defineR10intM;//总进程数intN;//资源种类intALL_RESOURCE[W];//各种资源的数目总和intMAX[W][R];//M个进程对N类资源最大资…

    2022年7月22日
    9
  • java getmethods_method

    java getmethods_methodpublicclassDynamicInvoker{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDynamicInvokerapp=newDynamicInvoker();app.sayHello(“张三”,2);try{try{app.getClass().getMethod(…

    2022年9月23日
    2
  • 去除字符串中的双引号「建议收藏」

    去除字符串中的双引号「建议收藏」str为“123”如果一个双引号:str1=str.replace(“\””,””).replace(“\””,””);如果不确定有多少个双引号:str2=str.replace(/\”/g,””);此方法为替换,也可用于去除制定字符,如:Stringstr=”12/3″;str1=str.replace(“\/”,””);str2=str.replace(/\//g,

    2022年5月23日
    50
  • 建立数据库链接_html连接数据库

    建立数据库链接_html连接数据库建立数据库链接CREATE[public]DATABASELINK数据库链接名CONNECTTO用户名IDENTIFIEDBY密码USING数据库连接字符串;说明:   1.一般情况PUBLIC由数据库管理员来创建;个人用户可以不加public,是私有的数据库链接;   2.数据库连接字符串可以用NET8EASYCONFIG或者直接修改TNSNAMES.OR

    2022年9月2日
    6
  • plsql 连接oracle数据库详细配置「建议收藏」

    plsql 连接oracle数据库详细配置「建议收藏」第一次用这种方式连接oracle数据库,自己百度搞了快两个小时才弄好,百度的资源也不靠谱,看了好多都不完整,搞完了报各种错误,各种连不上数据库,自己整理下资料,希望给其他的同行予以借鉴,不能保证每个人都能操作成功!毕竟有时真的得看人品了,呵呵!第一步:先安装plsql客户端,plsql客户端是必须的,我的是同事给的plsql(英文版客户端)安装很简单(下一步下一步…….)就不做说明!

    2022年9月17日
    5
  • 更改nginx默认端口_centos启动nginx

    更改nginx默认端口_centos启动nginx在基于CentOS或RHEL的Linux发行版中,需要安装policycoreutils软件包并添加SELinux对Nginx所需的以下规则以绑定到新端口。这里需要先安装semanage再安装policycoreutils软件包。安装semanage命令:yuminstallsemanage如果提示Nopackagesemanageavailable执行如下命令:yumprovidessemanage以上命令执行成功后,再执行:yum-yinstallpoli

    2025年10月7日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号