admin管理员组

文章数量:1605308

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

pandoc 下载

安装 pandoc
以 CentOS 为例,其他操作系统详见官网安装说明。

1、进入页面 https://github/jgm/pandoc/releases
2、下载 pandoc-2.17.1.1-linux-amd64.tar.gz
3、解压缩后bin目录中的 pandoc 即为可以直接使用的二进制文件。

文件转换

1、基本转换命令

进入 pandoc 的 bin 目录,执行如下转换命令

./pandoc test.md -o test.docx

这样就生成了一个 test.docx 文档,速度还没很快的。

2、中文乱码确实字体处理

中文乱码问题,大多与字体有关,解决方案详见文章 《Linux 系统字体安装》

3、按照模板格式转换

如果你希望转换后的 word 的标题、表格、内容字体等都按照预置的配置进行,则可以通过参数指定模板来进行转换,具体步骤如下:

a) 先导出默认模板

./pandoc -o custom-reference.docx --print-default-data-file reference.docx

b) 下载模板修改模板

下载(略)
修改模板你可以在模板上直接修改即可,更多可以修改的内容详见《官方文档手册》中的 --reference-doc 段落。

需要特别说明的是:直接修改模板中的表格样式(比如加个边框)是不起作用的,必须修改名称为 Table 的表格样式才有效,具体的修改方法如下图步骤。

c) 基于修改后的模板进行文档转换

./pandoc --reference-doc custom-reference.docx test.md -o test.docx

4、关于表格宽度

a) 虽然可以在转换的时候指定模板文件来为表格设置样式,但是要特别解释一下的是,从 Office Word 官方标准定义来讲,表格的宽度不属于表格样式范畴,不同宽度的表格可以使用同一种样式的表格模板,所以表格的宽度是属于表格本身的属性而不是跟着模板样式走的。
b) 结合这一说明,可以得出结论,通过在模板样式的方式是不能控制表格的宽度的,因为实际情况中我们更多是希望表格默认以100%的方式显示在文档中。
c) 为解决 pandoc 将 markdown 转换为 docx 后表格默认不是100%的问题,我们通过代码为表格的属性设置100%宽度这样做一个处理即可,如下:

// 将文档中的表格宽度配置为100%,如果你还需要做其他属性设置,可以在这里顺便一起配置上
docx.getTables().forEach(tbl -> { tbl.setWidthType(TableWidthType.PCT); tbl.setWidth("100%"); });

其他资料:https://wwwblogs/kofyou/p/14932700.html


(END)

本文标签: 文档PandocwordMarkdown