使用 pandoc 进行文档转换(markdown转pdf)
pandoc 是一个神奇的转换工具(详见官网),它支持各种文档格式之间的转换。如果使用它进行 pdf 转换需要依赖外部引擎(LaTeX)。
安装 pandoc
以 CentOS 为例,其他操作系统详见官网安装说明。
1、进入页面 https://github.com/jgm/pandoc/releases
2、下载 pandoc-2.17.1.1-linux-amd64.tar.gz
3、解压缩后bin目录中的 pandoc 即为可以直接使用的二进制文件。
如果你不需要转换 pdf,只需要对 markdown 和 word 之间进行转换,则到此已经结束了,pandoc 可以完成你的转换需求,关于 pandoc 支持的各种文件的转换类型,详见官网链接。
华丽的分割线
安装 LaTeX 引擎
如果需要使用 pandoc 转换文档为 pdf,需要安装在操作系统上安装 latex(默认使用 LaTeX 引擎),否则会出现错误 pdflatex not found. Please select a different --pdf-engine or install pdflatex
。
XeLaTeX 是使用 LaTeX 的排版引擎。对于中文文档,pdflatex 转换会出现字符集不支持的问题,可以使用参数指定 xelatex 引擎来转换中文文档。
1、下载 ISO 镜像文件
2、挂载 iso 文件进行安装
先 mount,再执行 ./install-tl
命令。
[root@server01 data]# mount -o loop texlive2021-20210325.iso /data/texlive
mount: /dev/loop0 is write-protected, mounting read-only
[root@server01 texlive]# ./install-tl# 中途出现提示 Enter command: 时输入 I 然后继续
如果安装 latex 出现错误 Can't locate Digest/MD5.pm in @INC (@INC contains
,说明缺少依赖 perl-Digest-MD5
,可以执行 yum -y install perl-Digest-MD5
来安装(安装成功后继续 ./install-tl
)。
3、配置环境变量
在安装包 iso 中有指导手册 ./texlive-doc/texlive-zh-cn/texlive-zh-cn.pdf
查看 pdf 文档的 3.4.1 节,添加如下环境变量到用户环境下.bash_profile
(或全局的 /etc/profile
)
PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH
export PATH
MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH
export MANPATH
INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH
export INFOPATH
执行 source ~/.bash_profile
使配置立即生效。
4、查看3.4.4节添加 tex 系统自带的字体文件
将 texlive-fontconfig.conf 文件复制到 /etc/fonts/conf.d/09-texlive.conf 后,再运行 fc-cache -fsv
命令。
[root@server01 texlive]# cp /usr/local/texlive/2021/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
[root@server01 texlive]# fc-cache -fsv
5、使用测试
编辑如下内容为 test.tex 文件
%% coding:utf8
%% coding:utf8
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
\begin{document}
你好, TeX Live 2013!
\end{document}
执行转换命令
./pandoc --variable papersize=A4 --variable "geometry=margin=1.2in" --variable mainfont="SimSun" --variable sansfont="SimSun" --variable monofont="SimSun" --pdf-engine=xelatex -s test.md -o test.pdf
其中
--variable "geometry=margin=1.2in"
为四周统一边距的设置,或者使用margin-left
、margin-right
、margin-top
、margin-bottom
逐个设置。
变量--variable
可以使用大写的-V
来替代,例如-V monofont="SimSun"
。
最后验证生成的 pdf 文件是否正确,如果出现 pdf 段落右侧被截取的情况,可以通过追加参数 --template=pm-template.latex
指定自定义模板解决,例如:./pandoc --template=pm-template.latex --pdf-engine=xelatex saas.docx -o saas.pdf
。
如果你是纯粹
word 转 pdf
的需求,使用这个工具的转换效果偏差度较大,建议使用基于LibreOffice/OpenOffice
的jodconverter
库来转换。
更多关于 latex 的内容详见官网资料,如下:
latex 官网:https://www.latex-project.org/
通过网络在线安装 TeX Live:https://www.tug.org/texlive/acquire-netinstall.html
TeX Live 用于 Unix 的快速安装:https://www.tug.org/texlive/quickinstall.html
Pandoc一些入门Demo:https://pandoc.org/demos.html
Pandoc详细使用手册(包含控制pdf纸张、边距、页头页尾等参数):https://pandoc.org/MANUAL.html
基于docker的使用方法
以上内容我们还需要在服务器上安装环境,如果使用 pandoc 的 docker 镜像 将会使这一切都变的更简单。
示例:
# 设置运行命令的别名
alias pandock='docker run --rm -v "$(pwd):/data" -u $(id -u):$(id -g) pandoc/latex'# 转换一个 markdown 文档为 word 文件
pandock -s test.md -o test.docx
中文乱码字体文件详见:https://blog.csdn.net/catoop/article/details/123837977
(END)
使用 pandoc 进行文档转换(markdown转pdf)相关推荐
- 使用 pandoc 进行文档转换(markdown转word)
pandoc 是一个神奇的转换工具(详见官网),它支持各种文档格式之间的转换.本文针对如何使用 pandoc 转换 markdown 为 docx 进行说明. pandoc 下载 安装 pandoc ...
- Python调用WPS进行文档转换PDF及PDF转图片
这里是利用WPS进行转换,要先安装WPS. 安装依赖 pip install pypiwin32 代码 #!/usr/bin/python # -*- coding: UTF-8 -*-import ...
- ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类 目录 输出结果 实现代码 输出结果 先看文档分类后的结果,一共得到五类电影: 实现代码 # -*- c ...
- 使用Python和OCR进行文档解析的完整代码演示(附代码)
来源:DeepHub IMBA 本文约2300字,建议阅读5分钟本文中将使用Python演示如何解析文档(如pdf)并提取文本,图形,表格等信息. 文档解析涉及检查文档中的数据并提取有用的信息.它可以 ...
- java进行文档类型转换PDF
使用jacob进行文档类型转换支持PPT.Excel.Word转为PDF模式 本方法对Windows部署的项目友好,最后需要在jdk/bin目录下导入与jar包版本一致的.dll文件 文件地址 链接: ...
- 企业怎样有效地进行文档管理
企业文件涵盖了企业的核心知识.文化内涵.商业经验等无形资产.越来越多的管理者意识到文档管理在企业管理中的重要性.企业文档管理是一项必须做好的系统工作.然而,如何提高企业文档管理水平是许多管理者应该考虑 ...
- java opennlp_使用opennlp进行文档分类
序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...
- 使用opennlp进行文档分类
序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...
- ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类
ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类 目录 输出结果 实现代码 输出结果 先看输出结果 实现代码 # -*- coding: ut ...
- Linux系统通过FTP进行文档基本操作【华为云分享】
[摘要] Linux系统里通过FTP可以对文档进行上传,更改权限和基本的文档管理. 获得Linux系统后,不熟悉命令操作的情况下,可以通过FTP工具进行文档操作,下面以WinSCP工具为例进行讲解: ...
最新文章
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- Thread concepts
- 宏与内联(inline)的区别(转载)
- 20145202马超《信息安全系统设计基础》实验二总结
- react-redux图解_如何将React连接到Redux —图解指南
- 鸿蒙系统适配开发,捕获科技拟建立鸿蒙开发组 为区块链钱包客户适配鸿蒙系统做筹备...
- android 获取apk资源,android-apk-parser
- python教程-做个淘宝双十一满减攻略
- 可重入函数 与线程安全的区别与联系
- 所有的 iPhone 和高端 Android 设备都被破解了!
- python 面向对象oop
- MySQL老是提示视图没有主键
- centos php ioncube_如何在CentOS 7中安装ionCube Loader
- 简易硬盘服务器,低成本个人服务器搭建 篇四:一机多用~Server2012的简单备份方法廉价版Time Capsule的养成之路...
- A Generalization of Transformer Networks to Graphs
- 【调剂】河北大学2022年硕士研究生招生拟接收调剂专业信息
- 使用Python进行并发编程
- logback高级特性使用(一)
- pandas关键字提取_使用NLP从文章中自动提取关键字
- linux重命名乱码文件,Linux中重命名乱码文件
热门文章
- (渣男渣女必备之)层次分析法AHP-Analytic Hierarchy Process操作流程及代码实现
- Pyscript,使用Python编写前端脚本
- PIC16F877A与Proteus仿真-4位7段数码管驱动
- 纯java写2D格斗游戏(一)——界面背景设置及人物的简单设置
- 一个Android开发6年程序员的年终面试总结,2021无畏艰难险阻,迎风潇洒前行
- Laravel操作数据库的三种方式总结归纳
- 一网打尽!炫酷枪火打击视频+图文+源码!哔哔哔......
- Oracle SYSAUX 表空间 说明
- B站陈睿团队以内容为王,百万UP主共同成长
- 【高精】Oliver的成绩