html展示word文件,html怎么转换成word文档

将word转换为html的方法研究

因为最近有需求,有可能通过word转html,所以初步调查后整理如下。

问题的描述

不把问题说清楚就谈解决方案是不明智的,所以先把问题说清楚:

目前网上有一套word文件,后台提供上传入口。上传后,您必须分析内容并支持在富文本编辑器中编辑。word文档中有一个空白处,可以在编辑器中填充生成新的数据。原始单词和新生成的单词最终将保持pdf格式。

我是这样分析的:

第一个方案

Word必须上传,并且可以在编辑器中编辑,所以word必须迁移到html。

最终的word必须生成为pdf,第一步生成的html必须生成为pdf,以保证格式。

第二个方案

因为我之前就知道那个word会生成pdf,所以我很自然的就想能不能不用html直接转换成pdf。这可以减少代码的复杂性和错误。本来机器切换次数越多,误差越大。

但是根据问题的描述,导入的单词其实就像一个模板。我们需要能够编辑它,但是这个方法可能无法调整内容,所以保留了这个方法。

word到html

所有方法仅描述具体实现,详情可在官网查询。

Unoconv工具依赖于LibreOffice或者OpenOffice,两者都是基于开源软件,通常是LibreOffice(可能是针对protocol,Debian等的分发视图。)

我的环境是Centos。解压缩后,使用以下命令安装下载的rpm软件包:

cd目录

美味安装。/*.每分钟转数

Rpm -ivh。/*.这里没有使用rpm,因为rpm命令不能解决依赖性问题。百胜会解决的。

Unoconv安装

下面有链接,直接下载解压。目录中有unoconv命令,请直接执行。

处理问题:

运行unoconv命令后:

/opt/libre office 6.2/program/python。平静的边缘:/lib64/libc.so.6:找不到版本“glibc _ 2.14”(必需)

看来LibreOffice要依赖更高版本的glibc了。注意:glibc是整个系统的基础,请不要轻易动。这里是带备份的docker环境,所以我简单地试了一下:

检查当前的glibc版本:

strings/lib 64/libc . so . 6 grep glibc _

请看yum源代码的版本:

rpm -qa grep glibc

没有GLIBC_2.14的版本。从此链接下载,下载并按照以下步骤安装。(没有备份。请小心。) :

cd目录

建设。/configure-prefix=/usr/local/glibc-2.14

生成-j4

sudo make安装

导出LD _ library _ path=/usr/local/glibc-2.14/lib 3360 $ LD _ library _ path

注意:由于此安装非常慢,这些步骤没有完全执行。

Glibc很难升级,只好降级LibreOffice。我的系统glibc最高版本是2.12,所以又下载了5.4.7。找不到官方说明。完全是感情用事。

安装完成后,启动office服务。没必要开始。基于c/s架构的性能更好。

cd目录。/soffice-no logo-headless-accept= socket,host=127.0.0.1,port=8100urpStarOffice。服务管理器

启动后,可能会出现以下问题。

/opt/libre office 5.4/program/Soffice。平静的边缘:error while加载共享库3360 libcairo.so.23360不能打开共享库

解决方案:

yum安装ibus

在这一点上,我的想法有点无知。看看yum源码里有没有这个软件(4.3.7版)安装。之后,只需卸载之前安装的版本。

之后,在启动命令中,遇到了一些问题,以及相应的解决方法:

问题

Java ldx:找不到ajavaruntimeenvironment!

警告:失败

从javaldx读取路径

解决方案:

Yum -y安装libreoffice-base问题

/usr/lib 64/libre office/program/soft fice。平静命运X11错误:无法打开显示

解决方案:

安装libreoffice-headless pdf乱码,然后想直接转换成pdf使用。这个时候,我已经很焦虑了。看看下面这个命令就知道了,哈哈。

yum -y安装libreoffice*

百胜集团安装中文-支持

到目前为止,所有可能的问题都已解决,或者说转换仍在进行:

cd目录。/unoconv - connection socket,host=127.0.0.1,port=8100urpStarOffice。组件上下文-f html-o a.html a . docx

生成html后,我迫不及待地想看看它是什么样子。样式基本都有,但是源文件太乱了。在富文本编辑器中显示它们是可以的,但是tcpdf生成的pdf基本上是不可读的。至于为什么用tcpdf生成pdf,首先,项目中目前使用的是tcpdf,切换是有一定成本的。其次,我们不能为了解决这个问题而容忍杂乱的html代码,从数据存储或者后期维护都做不到这一点。

如果自动生成的代码不行,会根据文本进行清理。但是,考虑到源word文档的多样性,可能会有各种小问题,所以这个方案也就不了了之了。

安装:

yum -y安装pandoc

执行命令转换:

pandoc ZZ . docx-o a.html

错误报告:

pandoc: zz.docx: hGetContents:无效参数(无效的UTF-8字节序列)

这个问题还没解决,可能是版本问题,我试着下载了最新版本。这里可以直接执行解压后的平静命运目录中的命令,结果正常。

在mac下,我也尝试了安装:

安装:

brew安装pandoc

brew安装pandoc-citeproc

执行上面同样的转换命令,结果是一致的。

您也可以执行此命令来添加自定义标题:

pandoc-s ZZ . docx-o a.html

发生了以下错误:

[警告]此文档格式需要非空的

元素。请在元数据中指定“标题”或“页面标题”,

例如通过使用元数据页面标题= . 在命令行上。

退回到“zz”

根据提示,你应该添加一个标题。使用以下命令解决它:

pandoc -s zz.docx -元数据标题:“标题”-a.html

成功了,我等不及了。与unoconv相比,输出结果代码要少得多,代价是损失了一些样式,比如字体大小。左右页都没了,一般还是用不了。

3.phpword

尝试了上面两种命令式的方法,都解决不了问题,所以尝试用php扩展直接处理。

PHP默认安装了composer,但是我们的项目不使用composer环境。你可以通过这个链接下载完整的require文件包,并直接在项目中引用它。

下面的php代码:

需要一次应用程序路径。/classes/PHP word/vendor/autoload . PHP ;

$ PHP word= PHP office PHP word io factory:load( a . docx );

$ XML writer= PHP office PHP word io factory:create writer($ PHP word, HTML );

$ xmlWriter-save( a . html );

执行完上面的代码,就可以生成html了。我还是等不及了。生成的html类似于unoconv,代码很多,转换成pdf格式也不完善,所以lmdjzg并不是一个好的解决方案。

摘要

所以我们在尝试了unoconv,pandoc,phpword之后,还是得不到相对简洁的tcpdf友好的html。目前还没有尝试付费方案。如果有必要,可以考虑再研究一下。

其他想法

我也想到了直接从word转换成pdf。首先,对于word模板文档,我们可以用phpword读出空白处(空白处有专门的logo),配置一个表单单独填写空白处。用户添加后,由phpword写入,最后由unoconv生成pdf。

这样,可以删除富文本编辑器。当填写的内容被删除后,直接更改表单内容即可。

这似乎是一个解决办法。

人是活着的,人的需求是可以沟通的。在投入与产出成正比的条件下,各种方案都值得交流和尝试。

(完)

参与评论