Latex格式html文件转换pdf和docx文档

latex 格式转换 18-05-15 21:30 1230  

最近有需求将包含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 setup stack 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转换命令和兼容格式,具体参考官方文档。 转换结果示例: 转换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

owesque 2020-07-02 22:04

Generico Propecia Comprar Cialis https://cheapcialisll.com/ - buy cialis online uk cialis brand online <a href=https://cheapcialisll.com/#>Cialis</a> Generic Viagra Mastercard

cialis online canada 2020-07-21 13:30

75 Mg Sublingual Tadalafil Hixirreweevy https://acialisd.com/# - buy viagra cialis online frieby Herbolax Prerty <a href=https://acialisd.com/#>buy cialis online using paypal</a> invobeUniome Controindicazioni Per Il Cialis