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-leftmargin-rightmargin-topmargin-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/OpenOfficejodconverter 库来转换。


更多关于 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)相关推荐

  1. 使用 pandoc 进行文档转换(markdown转word)

    pandoc 是一个神奇的转换工具(详见官网),它支持各种文档格式之间的转换.本文针对如何使用 pandoc 转换 markdown 为 docx 进行说明. pandoc 下载 安装 pandoc ...

  2. Python调用WPS进行文档转换PDF及PDF转图片

    这里是利用WPS进行转换,要先安装WPS. 安装依赖 pip install pypiwin32 代码 #!/usr/bin/python # -*- coding: UTF-8 -*-import ...

  3. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类

    ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类 目录 输出结果 实现代码 输出结果 先看文档分类后的结果,一共得到五类电影: 实现代码 # -*- c ...

  4. 使用Python和OCR进行文档解析的完整代码演示(附代码)

    来源:DeepHub IMBA 本文约2300字,建议阅读5分钟本文中将使用Python演示如何解析文档(如pdf)并提取文本,图形,表格等信息. 文档解析涉及检查文档中的数据并提取有用的信息.它可以 ...

  5. java进行文档类型转换PDF

    使用jacob进行文档类型转换支持PPT.Excel.Word转为PDF模式 本方法对Windows部署的项目友好,最后需要在jdk/bin目录下导入与jar包版本一致的.dll文件 文件地址 链接: ...

  6. 企业怎样有效地进行文档管理

    企业文件涵盖了企业的核心知识.文化内涵.商业经验等无形资产.越来越多的管理者意识到文档管理在企业管理中的重要性.企业文档管理是一项必须做好的系统工作.然而,如何提高企业文档管理水平是许多管理者应该考虑 ...

  7. java opennlp_使用opennlp进行文档分类

    序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...

  8. 使用opennlp进行文档分类

    序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...

  9. ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类

    ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类 目录 输出结果 实现代码 输出结果 先看输出结果 实现代码 # -*- coding: ut ...

  10. Linux系统通过FTP进行文档基本操作【华为云分享】

    [摘要] Linux系统里通过FTP可以对文档进行上传,更改权限和基本的文档管理. 获得Linux系统后,不熟悉命令操作的情况下,可以通过FTP工具进行文档操作,下面以WinSCP工具为例进行讲解: ...

最新文章

  1. 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
  2. Thread concepts
  3. 宏与内联(inline)的区别(转载)
  4. 20145202马超《信息安全系统设计基础》实验二总结
  5. react-redux图解_如何将React连接到Redux —图解指南
  6. 鸿蒙系统适配开发,捕获科技拟建立鸿蒙开发组 为区块链钱包客户适配鸿蒙系统做筹备...
  7. android 获取apk资源,android-apk-parser
  8. python教程-做个淘宝双十一满减攻略
  9. 可重入函数 与线程安全的区别与联系
  10. 所有的 iPhone 和高端 Android 设备都被破解了!
  11. python 面向对象oop
  12. MySQL老是提示视图没有主键
  13. centos php ioncube_如何在CentOS 7中安装ionCube Loader
  14. 简易硬盘服务器,低成本个人服务器搭建 篇四:一机多用~Server2012的简单备份方法廉价版Time Capsule的养成之路...
  15. A Generalization of Transformer Networks to Graphs
  16. 【调剂】河北大学2022年硕士研究生招生拟接收调剂专业信息
  17. 使用Python进行并发编程
  18. logback高级特性使用(一)
  19. pandas关键字提取_使用NLP从文章中自动提取关键字
  20. linux重命名乱码文件,Linux中重命名乱码文件

热门文章

  1. (渣男渣女必备之)层次分析法AHP-Analytic Hierarchy Process操作流程及代码实现
  2. Pyscript,使用Python编写前端脚本
  3. PIC16F877A与Proteus仿真-4位7段数码管驱动
  4. 纯java写2D格斗游戏(一)——界面背景设置及人物的简单设置
  5. 一个Android开发6年程序员的年终面试总结,2021无畏艰难险阻,迎风潇洒前行
  6. Laravel操作数据库的三种方式总结归纳
  7. 一网打尽!炫酷枪火打击视频+图文+源码!哔哔哔......
  8. Oracle SYSAUX 表空间 说明
  9. B站陈睿团队以内容为王,百万UP主共同成长
  10. 【高精】Oliver的成绩