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 镜像文件

使用 pandoc 进行文档转换(word转pdf)_文档转换

使用 pandoc 进行文档转换(word转pdf)_官网_02

使用 pandoc 进行文档转换(word转pdf)_官网_03

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 mainfont="SimSun" --variable sansfont="SimSun" --variable monofont="SimSun" --pdf-engine=xelatex -s test.md -o test.pdf

验证生成的 pdf 文件是否正确。


更多关于 latex 的内容详见官网资料,如下:

https://www.latex-project.org/

https://www.tug.org/texlive/acquire-netinstall.html

https://www.tug.org/texlive/acquire-netinstall.html#netlwp

https://www.tug.org/texlive/quickinstall.html

https://pandoc.org/demos.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

(END)