博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Latex格式html文件转换pdf和docx文档
阅读量:5970 次
发布时间:2019-06-19

本文共 1725 字,大约阅读时间需要 5 分钟。

:

最近有需求将包含latex格式的html文档转换成pdf和docx文档的需求,由于之前完全没接触过,最近几天调研和实验了一番后将格式转换的关键点都实验成功,总结记录一下。

转换原理

各种转换工具对比之后选择了号称“格式转换瑞士军刀”的pandoc,pandoc功能强大且开源,从就知道多厉害了。

由于历史原因,需要转换的html格式文件比较复杂,直接用pandoc转换到docx,有极少数格式会出问题,导致转换后的docx文件打开会提示格式错误。最后研究发现mathjax对各种格式的兼容处理比较强大,采用mathjax将原始latex文件转换成mml格式后,再给到pandoc转换docx就可以了。

mathjax转换部分找同事搭建了一个node.js服务提供转换接口和css控制,只需要调用接口将原始latex数据转换成mml格式,再讲转换后的格式替换掉原始html文件中的latex部分,最终生成包含mml格式的html文件。

环境搭建

转换环境包括:

  • mathjax node.js服务
  • pandoc
  • TeX Live
  • stack工具(Haskell Platform)

mathjax服务是用来将原始html文件转换成mml格式(如果你面对的latex格式并不复杂且很标准,那么不需要这部分,直接用pandoc处理问题也不大),我们这里需要mathjax处理是因为我们有遇到各种奇怪的latex格式,且pandoc对latex格式判断比较严格,通过兼容性较好的mathjax处理一遍后有明显效果。

pandoc是最终用来做格式转换的工具,为了安装pandoc,需要用到Haskell环境,因此需要安装stack来部署和管理整个Haskell。
pandoc不提供docx到pdf的直接转换,只能采用mml到pdf的转换方式,但是需要额外的latex转换引擎支持才能做到,pandoc官方推荐使用TexLive。

TexLive安装

首先下载
解压后执行install-tl按照提示输入I进行安装,经过漫长下载等待后完成。安装成功后xelatex可执行程序目录在/usr/local/texlive/2016/bin/x86_64-linux/ ,需要记得将这个目录加入到PATH环境变量中。

pandoc安装

我是选择源码安装方式,自己下载了pandoc-1.19.2
先安装Stack工具:

curl -sSL https://get.haskellstack.org/ | sh

按照pandoc安装说明文档,切换到pandoc解压目录,执行:

stack setupstack install --test

安装成功后,需要注意pandoc可执行文件默认放到了/root/.local/bin,需要修改PATH环境变量才能找到。

转换命令

转换到docx的命令如下:

pandoc -s --mathml filename.mml -o output.docx

转换到pdf的命令如下:

pandoc --latex-engine=xelatex filename.html -o output.pdf

还有很多其他pandoc转换命令和兼容格式,具体参考官方文档。

转换结果示例:

clipboard.png

转换pdf中文编码处理

pandoc默认转换到pdf的时候,中文处理会有问题,显示不出来,需要添加字体支持。

pandoc -s old.html.html --latex-engine=xelatex -V mainfont=SimHei -o 20.pdf

上述命令指定用黑体转换中文,通过mainfont参数指定中文字体,但是前提是你的系统里面已经安装了相关的中文字体支持,我在centos安装中文,采用了的方法。查看系统支持的字体命令是 fc-list。

从word中提取latex公式

同样可以通过pandoc将word中的latex提取出来,具体做法就是将pandoc转换为markdown格式之后就可以写程序匹配出latex公式数据($$之间的部分)

pandoc -s aaa.docx -t markdown -o aaa.md

转载地址:http://njzox.baihongyu.com/

你可能感兴趣的文章
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
Android创建启动画面
查看>>
Linux中date命令的各种实用方法--转载
查看>>
mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
查看>>
苹果企业版帐号申请记录
查看>>
C++ Error: error LNK2019: unresolved external symbol
查看>>
Bitmap 和Drawable 的区别
查看>>
Java操作mongoDB2.6的常见API使用方法
查看>>
如何给服务器设置邮件警报。
查看>>
麦克劳林
查看>>
Eclipse SVN修改用户名和密码
查看>>
架构师的职责都有哪些?
查看>>
SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
查看>>
jsp内置对象作业3-application用户注册
查看>>