Markdown写法简单明快,我十分喜欢,以至于我最近都想使用Markdown快速的进行测试说明书的写作,但是考虑到这文档是要进行交接的,一个.md的文件在内部传输还是有不便,于是就想到了能不能把Markdown转为PDF文件作为通用文件。

然后搜索后看到了这样的一篇文章如何把 Markdown 文件转化为 PDF,文中提到了很多方法,有使用.md->.html->.pdf的,也有.md->.word->.pdf,也有.md->.tex->.pdf的。最终考虑到之前曾经使用LaTex进行过文章写作,并且PC中还有着LaTex环境,决定使用Pandoc实现Markdown转PDF

Pandoc介绍

Pandoc是一个用haskell编写的开源文本转换工具,小巧迅速且支持格式广泛,堪称文本转换应用的瑞士军刀。支持很多种输入输出,有关Pandoc可以在其官网进行详细了解。下载页面可以点此进入,在其中选择合适的版本即可(GitHub下载不多赘述)。

Markdown转PDF

全英文文档转换

在需要转换的文件路径下进行Shift+鼠标右键选择此处进入命令行,键入

1
pandoc input.md -o output.pdf

即可完成最简单的PDF文档。

中英文文档转换

在编写时,由于我们主体还是中文,那么若文档中存在中文字符,那么转换就会出问题。为了使的其支持中文,我们需要使用xelatex编译器(有关xelatex,还请大家自行搜索),下面直接放干货,可以一步操作到位的命令如下。

1
pandoc -N -s --toc --smart --latex-engine=xelatex -V CJKmainfont='黑体' -V mainfont='Times New Roman' -V geometry:margin=1in input.md -o output.pdf

大家可以自行编辑一些.md文档然后使用着条命令进行转换尝试。另外,Markdone转PDF的操作,也可以几个.md文件整合成一个PDF文件,其命令如下。

1
pandoc -N -s --toc --smart --latex-engine=xelatex -V CJKmainfont='黑体' -V mainfont='Times New Roman' -V geometry:margin=1in in1.md in2.md ... -o output.pdf

语法介绍

有兴趣的童鞋可以查看官方的HELP文档进行详细的了解,传送门:Pandoc Demos & README

若是想重点了解下上文中所用到的一些参数及其意义可以看下面的一些说明。

1
2
--latex-engine=xelatex
# 因为文档中有中文字符,使用XeLaTex引擎(必选项)
1
2
3
4
-N # 根据标题自动分配标号(可选项)
# H1标题#Title# --> 1/2/3/4/...
# H2标题##Title## --> 1.1/1.2/1.3/...
# H3标题###Title### --> 1.1.1/1.1.2/1.1.3/...
1
-toc # 给PDF文件加上书签功能

有关这些命令的详细说明都可在上面提到的README中进行查阅。比如命令-V,在上面操作中的作用就是设定中英文的显示字体,比如中文设定为黑体,英文设定为Times New Roman,你也可以自行设定合适的字体。

1
2
3
4
5
6
7
8
9
 
`-V` *KEY*[`=`*VAL*], `--variable=`*KEY*[`:`*VAL*]
 
: Set the template variable *KEY* to the value *VAL* when rendering the
document in standalone mode. This is generally only useful when the
`--template` option is used to specify a custom template, since
pandoc automatically sets the variables used in the default
templates. If no *VAL* is specified, the key will be given the
value `true`.

转换效果

本文也对一些.md文件进行了PDF文件转换,并附一些效果图于后供大家参考。其中使用的input.md文件使用了Cmd Markdown简明说明书的源文件,其网页渲染效果点此可见,可以与生成的PDF进行一个对比,看PDF生成的效果如何。本文使用的input.md也放出下载链接

 
 

[原创]使用Pandoc实现Markdown文件转PDF文件的更多相关文章

  1. 利用 Pandoc 将 Markdown 生成 Word/PDF 文件

    Pandoc 是一个格式转化工具,可以用于各(luan)种(qi)各(ba)样(zao)的文件转换, 反正我是认不全官网上的那个图(傲娇脸), 之前一直使用它将 Markdown 文件转换成 Html ...

  2. libreoffice转换文件为pdf文件乱码问题解决办法

    最近系统需要一个office文件预览功能 解决方案为使用libreoffice将office文件转换为pdf文件,然后使用swftools将pdf文件转换为swf文件 最后在前台使用flexpaper ...

  3. 如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件

    1. 描述 PDF 文件是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式.PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即 ...

  4. Java转换Word文件到PDF文件

    使用Docx4j将Word文件转换为PDF文件: public static void convertDocxToPDF(String docxFilePath, String pdfPath) th ...

  5. openoffice启动服务并将office文件转换为pdf文件

    1.首先下载最新版的openoffice工具,安装完成之后安装服务,, win+r打开命令提示符 输入cmd,cd C:\Program Files (x86)\OpenOffice 4\progra ...

  6. C#仪器数据文件解析-PDF文件

    不少仪器工作站输出的数据报告文件为PDF格式,PDF格式用于排版打印,但不易于数据解析,因此解析PDF数据需要首先读取到PDF文件中的文本内容,然后根据内容规则解析有意义的数据信息. C#解析PDF文 ...

  7. Java仪器数据文件解析-PDF文件

    一.概述 使用pdfbox可生成Pdf文件,同样可以解析PDF文本内容. pdfbox链接:https://pdfbox.apache.org/ 二.PDF文本内容解析 File file = new ...

  8. 如何将知网下载的caj文件转换为pdf文件

    一.问题描述: 最近在知网搜索论文的时候,经常遇到有的论文没有pdf文件的情况,但不得不吐槽我觉得知网做的阅读器确实是有点烂.所以想将caj文件转化为pdf文件,找到了一个比较好的方法,所以希望记录一 ...

  9. 将Rmarkdown文件转为pdf文件

    knitr包只能够将R markdown文件转为html格式,若想要将其转化为pdf格式,还要安装另一个包 # Install and load package install.packages(&q ...

随机推荐

  1. Mysql通信协议

    Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp) 当连接mysql时,使用-h127.0.0.1时,linux与unix下的连接协议为socket协议,windows下 ...

  2. 转--webservice、socket、http 小记(一)

    webservice.socket.http 小记(一) http://blog.csdn.net/m_123hj_520/article/details/9370723 2013-07-18 17: ...

  3. Git+Github代码管理控制

    关于Git的发展历程这里就不多介绍了,有兴趣的话可以查阅一下Git的相关历程. 如果你在做的项目或者自己写的一些项目由于需要用的分布式.或者团队开发.再或者你不善于对代码进行定期备份,但又希望自己的代 ...

  4. 一行代码解释.net事件与委托

    button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; delegat ...

  5. Python 半开放socket

    利用shutdown实现半开放的socket #server.py import socket s=socket.socket() s.bind(('127.0.0.1',2000)) s.liste ...

  6. cocos2dx loading界面 预加载资源 与 资源释放

    预加载图片: 1.CCTextureCache::sharedTextureCache()->addImage("icon.png"); 2.CCTextureCache:: ...

  7. (String)将一个String里面的单词反转

    e.g.  i love java    return   java love i public static String reverseStr(String str) { String[] str ...

  8. git学习系列--六分之一

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,可以对任何类型的文件进行版本控制. 细说分布式版本控制系统 在这类系统中,像 Git,Mercurial,Bazaar 以 ...

  9. ORACLE-SELECT学习

    (一)select格式:SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名2>[,…] [W ...

  10. JavaScript笔记:数据类型

    javascript中有5种基本数据类型:Undefined,Null,Boolean,Number和String,还有一种复杂的数据类型--Object.javascript不支持任何创建自定义类型 ...