前言

java web的word在线编辑实现过程可以分解为两步:

  • 将word转为html
  • 将前台修改完的html转为word文档
    注:只支持docx文档,即word2007

一、查看docx文件结构

首先将一个docx文档重命名为zip格式的文件,然后双击打开,就可以看到文件结构
其中word目录中存放的是该文档的各种xml文件以及图片资源

二、查看xml内容

这里我们先查看主要的配置文件document.xml,
可以看到document.xml的结构,在body下,所有的内容都在p(段落)中,除开tbl(表格),

<w:p><!--段落属性--><w:pPr><!--段落样式,确定是标题几,与style.xml中的样式对应--><w:pStyle w:val="3"/><w:bidi w:val="0"/><!--段落对齐方式--><w:jc w:val="center"/><!--块样式--><w:rPr><!--字体样式:字体、字体大小--><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><!--块--><w:r><!--块属性--><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><!--块内容--><w:t>Word文档在线编辑功能说明</w:t></w:r>
</w:p>

具体的每个标签是什么含义,可以访问WordprocessingML进行查看。

三、document.xml中的单位转换

在document.xml中会出现属性值为数值,比如:

<w:p><w:pPr><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:ind w:left="420" w:leftChars="0" w:firstLine="420" w:firstLineChars="0"/><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>除表格外、所有的内容都需要在p标签内(包括图片),如图:</w:t></w:r></w:p>

其中的<w:ind w:left=“420” w:leftChars=“0” w:firstLine=“420” w:firstLineChars=“0”/>,代表此段落的缩进距离,相当于css中的margin, left=“420”,换算为html中可识别单位为 420/1440*72 pt

<w:p><w:pPr><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr><w:ind w:left="425" w:leftChars="0" w:hanging="425" w:firstLineChars="0"/><w:jc w:val="left"/><w:rPr><w:rFonts w:hint="default"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>标题,如图</w:t></w:r></w:p>

上段落中的ind多了一个hanging属性,表示减去向左缩进425,此时转换时需要left-hanging,然后再进行换算;

再者是图片尺寸的换算:

 <w:p><w:pPr><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:ind w:leftChars="0" w:firstLine="420" w:firstLineChars="0"/><w:jc w:val="left"/></w:pPr><w:r><w:drawing><!--表示图片的上下左右间距--><wp:inline distT="0" distB="0" distL="114300" distR="114300"><wp:extent cx="4132580" cy="815975"/><wp:effectExtent l="0" t="0" r="1270" b="3175"/><wp:docPr id="1" name="图片 1"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"></a:graphicFrameLocks></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="1" name="图片 1"/><pic:cNvPicPr><a:picLocks noChangeAspect="1"/></pic:cNvPicPr></pic:nvPicPr><pic:blipFill><a:blip r:embed="rId5"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><!--表示图片的尺寸--><a:ext cx="4132580" cy="815975"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r></w:p>

其中<a:ext cx=“4132580” cy=“815975”/>的换算是 cx/9525

java实现word(docx)在线编辑(word转html,html转word)——解读document.xml结构相关推荐

  1. 图片转word表格在线教学,想知道图片转word表格怎么转吗?

    有时我们会收到一份图片形式的Word文件,要求我们进行转换.那么我们在办公时遇到图片转word表格怎么转呢?其实很多人第一反应会是手动录入,但是现在有很多方法都能直接将文字进行提取并使用.又有哪些能够 ...

  2. gridfs文件服务器,OWA实现Word在线编辑(以GridFs存储文件)

    OWA全称Office Web App,是用来做Office文档预览的一个很好的工具,通过一些配置文件的设置还可以实现Excel.PowerPoint的在线编辑功能,但对Word在线编辑并不支持.Gi ...

  3. Office word excel电子表格在线编辑的实现方法

    Office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件. IIS(6.0)支持webdav,这在IIS管理器的web服务扩展中可以看到.利用IIS作为webdav ...

  4. Word处理控件Aspose.Words功能演示:在 Python 中将 Word DOCX 或 DOC 转换为 PDF

    Word 到PDF是最流行和执行最广泛的文档转换之一.DOCX或DOC文件在打印或共享之前会转换为 PDF 格式.在本文中,我们将在 Python 中自动将 Word 转换为 PDF.步骤和代码示例将 ...

  5. pdf转换成word转换器在线怎么用

    pdf转换成word转换器在线怎么用 导读:为什么PDF文件转换出来的Word文档时图片呢?为什么转换出来的文档时空白或是乱码.在线PDF转换成Word转换器哪个好?这是大家处理PDF文件格式转换过程 ...

  6. java office在线编辑_国外10个最受欢迎的 Java 开发的 CMS 系统

    CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本.CMS的功能并不只限于 ...

  7. pdf转换成word转换器在线使用效果

    pdf转换成word转换器在线使用效果 pdf转换成word转换器在线的转换效果如何? 目前国内专门针对PDF文件格式转换的软件当中,由于受到了PDF文件自身的转换技术的限制,其实际的转换效果一直不能 ...

  8. java语言编译_java在线编译-编译,java

    本教程分享:<java在线编译>, java在线编译网站或工具有哪些? 你做了很多了吧!很好,继续学吧! class.forName():加载的是指定的一个类 .class文件是由JAVA ...

  9. weboffice功能的实现:在线编辑,保护文档部分编辑,显示,下载

    点聚Weboffice IE 上的用法: Weboffice7文件夹是weboffice的文件: .cab是一个压缩形式的文件,里面包含了安装信息,IE会自动安装. Main.js是weboffice ...

最新文章

  1. 字节跳动李航:自学机器学习,研究AI三十载,他说AI发展或进入平缓期
  2. Unity 2017 Game Optimization 读书笔记(3)Scripting Strategies Part 3
  3. 反爬虫机制和破解方法汇总
  4. tsql是mysql中的吗_Mysql中的sql是如何执行的
  5. Realme真我X7系列首发骁龙860? 副总裁辟谣:大家散了吧
  6. 腾讯云首次披露云原生智能数据湖全景图,数据湖之争再起波澜
  7. linux之秘钥登录
  8. oracle中-1002,安装Oracle RAC时, 碰到到了PRKC-1002错误
  9. java post 注册_使用post request python注册帐户
  10. android 分区 PT,Android:pt 、sp、dp之间的换算
  11. findfont: Font family ['DejaVu Sans'] not found. Falling back to DejaVu Sans.
  12. 非正态独立小样本统计检验方法的选择
  13. sscanf 实现_医保 | 好消息!门诊慢病实现山东省内联网结算啦~
  14. java求4位会员卡号之和中奖,日常作业2018.12.25
  15. Centos7 -- 用三种方法设置代理服务器上网
  16. 建立桌面文件管理格子_win10如何创建桌面格子_win10怎么建立桌面文件管理格子...
  17. 小米10pro第二个摄像头下面_小米10 Pro拍照翻车?暂不支持超广角超级夜景,官方回应...
  18. 人脸识别登录:加强系统认证
  19. Python批量复制一个文件夹中的全部excel数据并粘贴至一个excel文件中-openpyxl模块
  20. Centos 安装Firefox

热门文章

  1. 理解WPF中的视觉树和逻辑树
  2. 逻辑回归和决策树_结合逻辑回归和决策树
  3. 论文阅读 “Adaptive Tool Path Planning Strategy for Freeform Surface Machining using Point Cloud Article”
  4. 从Hadder看蛋白质分子中的加氢算法
  5. R语言系统教程(三):多维数组和矩阵
  6. html5导航栏向应折叠,超实用!网站导航栏设计形式总结
  7. 安卓音频系统之一音频基础
  8. Win10系统上搭建GIT本地服务器
  9. 面试题:看数字找规律
  10. jq 隔行变色(横、纵)