word转换为html,在诸如word在线预览需求的时候会用到,那么怎么实现呢?
其实可以通过 libreoffice 来实现转换, libreoffice 是linux中最常用的office,并且提供命令行给用户调用。为此我们只需要在go语言调用 libreoffice 命令即可转化为html文件:
convert.go:
package main
import (
"os/exec"
)
// exec command
func doCommand(cmd string) {
_ = exec.Command("sh", "-c", cmd).Run()
}
func main() {
// if diretory not exist, create it
doCommand("mkdir -p output")
doCommand("libreoffice --headless --convert-to \"html:XHTML Writer File:UTF8\" *.doc --outdir output")
doCommand("libreoffice --headless --convert-to \"html:XHTML Writer File:UTF8\" *.docx --outdir output")
}
注意这里的参数:
\"html:XHTML Writer File:UTF8\" 表示转为为xhtml格式,文件编码为utf8,这个很重要!
由于 libreoffice 依赖不容易安装,为此这里打包为docker镜像,实现一键部署,一键转换 Dockerfile:
FROM kfwkfulq.mirror.aliyuncs.com/library/ubuntu:20.10 as dev
LABEL Name=wordtohtml Version=1.0.5
EXPOSE 5000
ENV LANG C.UTF-8
# ENV LANGUAGE en_US.UTF-8
# ENV LC_ALL en_US.UTF-8
# Install requirements
RUN apt update && \
apt install -y libreoffice
# FROM jianboy/libreoffice:v1.0.5 as prod
WORKDIR /app
RUN mkdir -p /opt/wordtohtml
COPY convert /opt/wordtohtml/convert
RUN adduser -u 1000 --disabled-password --gecos "" lyq && chown -R lyq /app && chown -R lyq /opt/wordtohtml
USER lyq
VOLUME [ "/app" ]
CMD ["/opt/wordtohtml/convert"]
最后执行docker build 打包,我们便可以执行如下命令,一键word转换为html:
docker run -it --rm -v /data/wordtohtml:/app ccr.ccs.tencentyun.com/jianboy/wordtohtml:v1.0.5
博客地址:http://blog.yoqi.me/?p=17609
这篇文章还没有评论