markdown文本转换word,pdf

pandoc及下载和安装

pandoc是什么

pandoc是一个软件,是一个能把千奇百怪的文档格式互相转换的神器,是一把文档转换的瑞士军刀(swiss-army knife)。不多说,放一张其官网(http://www.pandoc.org

下载pandoc

下面以下载Windows下的pandoc为例:

安装pandoc

下载pandoc安装包之后,像安装普通软件一样点开安装就可以了。安装完成之后,打开cmd命令行,输入pandoc -v,如果正常显示出类似下面的信息就表明安装成功,如果未成功,可能需要配置环境变量,把安装的路径C:\Users\Frank\AppData\Local\Pandoc\加入环境变量:

C:\Users\Administrator.PC-20170728DWIF>pandoc -v
pandoc 2.2
Compiled with pandoc-types 1.17.4.2, texmath 0.10.1.2, skylighting 0.7.0.2
Default user data directory: C:\Users\Administrator.PC-20170728DWIF\AppData\Roaming\pandoc
Copyright (C) 2006-2018 John MacFarlane
Web:  http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 配置bat批处理文件: 
    创建文本文件,写入一行代码pandoc -s test.md -o test.docx,命名为md2doc.bat; 
    此批处理文件将调用pandoc将test.md转换为test.docx;
  • 将需要转换的md文件与bat文件放在同一文件夹下;
  • 点击md2doc.bat,闪烁cmd黑窗口,然后出现docx文件,转换成功。
  • 需要转换的md文档与bat批处理文件放入同一文件夹下;

  • 双击md2doc.bat,转换;

走过的一些路,趟过的一些坑

下面是使用pandoc把markdown(以下简称md)文件转为PDF所遇到的一系列的坑。

尝试过的不合适的方案

下面涉及的转换方法可以参见pandoc的使用文档(http://www.pandoc.org/MANUAL.html),这里不再叙述细节。

  • 直接使用pandoc把md转为PDF。问题:报错,原因是电脑没有安装Latex解析引擎。
  • 装好了MiKTex这样一个Latex解析引擎之后,再转,又失败了,原因是不支持中文字体(md文件中有中文字体)。
  • 指定字体为宋体后再转,虽然成功转为了PDF文件,但是文件的字体、行间距、排版等样式都比较丑陋,不满意。
  • 在网上又搜了搜,再加上指定Latex模板文件转,虽然能够调整一些参数了,但一方面模板文件犹如天书般难懂,另一方面很多格式还是不能精细调整。
  • 变换一下思路,采取迂回战术,按照md->HTML->PDF的路径转。于是先把md转为HTML,HTML的样式倒是挺美观,然后在浏览器中使用浏览器的打印功能把HTML转为PDF。然而还是存在文档格式不能精细调整的问题。
  • 发现转HTML的时候可以指定css样式文件,在css样式文件中可以配置标题、正文、段落的精细格式。奈何这种方法和Latex模板文件的缺点类似,投入/产出比过高,遂放弃。

一个不太合适的方案

在网上搜的时候,发现有一个Python三方库叫pypandoc(文档:https://pypi.org/project/pypandoc/),核心方法叫pypandoc.convert_file,支持一大堆参数。还是考虑到投入/产出比,我只是想安静地转一下md到PDF,并不想开发一个很吊的文件转换工具,所以暂时没必要去研究这个三方库的API,以后有需要再研究吧。

最终采取的解决方案

最终转换到另一种思路来,依然采用迂回战术,不过是按照:md->docx->PDF,一试,发现这种方式很靠谱,主要是因为:一是md转为docx很简单,只需pandoc的一条命令就搞定,不需要额外装其他的软件;二是转为docx文档后,还可以在其中手动精细调整字体、字号、段落之类的格式,直到自己满意为止。最后用Word也可以完美地把docx转为PDF。

而且在生成的docx文档中手工调完精细格式之后,还可以把docx文档的格式模板导出成dot文档模板文件保存,后面再生成docx文档时不需要再一个个手工调格式了,只需把这个dot模板文件中的样式全部导入即可(怎么导入可以到网上搜)。

md转为docx文档的pandoc命令类似于这样: 
pandoc text.md -o text.docx

这种方案最为优雅,遂采用之。

脚本封装,支持批量转换

  • 把转换命令封装成bat批处理脚本,以后再进行转换的时候只需简单双击一下bat脚本即可,比如封装成convert.bat文件,内容如下:
pandoc text.md -o text.docx && pause
  • 1
  • 2
  • 批量处理:假如几十上百个md文件要批量转为docx文件,难道要手工一个个复制这些文件名和pandoc命令去转换吗?完全不需要,一个bat脚本搞定(convert.bat):
@echo off
:: 遍历当前文件夹下的所有后缀名为md的文件
for /f %%a in (‘dir /b *.md‘) do (
    :: 执行pandoc命令,把每个md文件都转为docx文件,docx文件的文件名为:md文件名.md.docx
    pandoc %%a -o %%a.docx
)
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

假设当前文件夹下有3个md文件test1.md、test2.md、test3.md,他们的内容都为:

# 一级标题1
## 二级标题1
* 列表项1
* 列表项2

## 二级标题2
正文1-1

# 一级标题2
正文2-1

# 一级标题3
表格1:

姓名|年龄|性别
---|---|---
张三|30|男
李四|28|男
王五|29|男
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

双击执行convert.bat后,生成了3个docx文件:

打开test1.md.docx,发现整体格式还不错,并且还支持md的表格语法:

小结

  • pypandoc库以后有需要了可以进一步研究一下。
  • 在决定采取一种方案解决问题之前,首先要考虑投入/产出比,是否值得采用这种方案。

原文地址:https://www.cnblogs.com/jjg0519/p/10435623.html

时间: 2024-09-30 15:30:02

markdown文本转换word,pdf的相关文章

java文本、表格word转换生成PDF加密文件代码下载

原文:java文本.表格word转换生成PDF加密文件代码下载 代码下载地址:http://www.zuidaima.com/share/1550463239146496.htm 这个实现了PDF加密功能,和一些基本的问题. java文本.表格word转换生成PDF加密文件代码下载,布布扣,bubuko.com

使用Python3将Markdown(.md)文本转换成 html、pdf

一.Markdown中不同的文本内容会分成不同的文本块,并通过markdown的语法控制进行文本的拼接,组成新的文件. 二.利用Python3实现(.md)文件转换成(.html)文件 在cmd命令行下进入(.py)文件目录下,使用命令进行执行 >python md2html.py <file.md> <file.html> import sys, re #生成器模块 def lines(file): #在文本最后加一空行 for line in file: yield li

你用什么写简历:word?pdf?Latex?Markdown?Html?

来自个人博客:你用什么写简历:word?pdf?Latex?Markdown?Html? Word简历 Word应该是平常使用最多的,不过不推荐使用word写简历.因为word在不同的平台用不同的office软件打开时显示效果未必相同,万一看你简历的人用的mac或者linux的office软件就可能导致排版变化问题,所以最好还是转成pdf格式比较好. Pdf简历 PDF(Portable Document Format的简称,意思「便携式文件格式」)是由Adobe Systems在1993年用於

ASP.NET将word文档转换成pdf的代码

一.添加引用 using Microsoft.Office.Interop.Word; 二.转换方法 1.方法 C# 代码   复制 /// <summary> /// 把Word文件转换成pdf文件 /// </summary> /// <param name="sourcePath">需要转换的文件路径和文件名称</param> /// <param name="targetPath">转换完成后的文件

Word怎么转换成pdf?Word批量转换成pdf教程

Word文档是我们生活中常见且经常使用的文本格式,在使用Word文档时,多数情况下会涉及到转换的问题,很多人希望将Word转换成PDF文件使用.但对于Word怎么转换成PDF却是众说纷纭的,几乎是每一个人都能列举出一种方法.    很多人说Word转换成PDF文件很简单,但是当我们花费很长时间将Word转换成PDF文件后,却发现乱码一片,这种现象主要是因为Word文档中含有特殊字符,而PDF文件却没同样的字符.就好比Word文件中有繁体字,而PDF文件中显示不出繁体,这时候,乱码是必然的. 当转

可以将word转换成pdf么?

随着PDF格式文件的应用范围越来越广,很多时候我们需要把其他格式的文件转换成PDF文件使用,例如将Word.Excel.PPT等格式的转换成PDF格式,这里我们就讲下如何把Word转PDF. 迅捷PDF转换器(使用全新v5.0版本)是一款可以将Word文档转换成PDF文档格式的软件,软件只支持Winxp用户.具有识别正确率高,识别速度快的特点.有批量处理功能等等,能将文件转成Office.Html.IMG.TXT,,实现了Office向PDF的转换.......下面来学习下教程. 软件下载到电脑

教你如何将word转换成PDF文档使用

对于各种不同文档格式的转换对文字工作者来说可谓是"家常便饭",而最让人头疼的莫过于office文档与pdf文档之间的互相转换.有时候遇到需要文字编辑的就得转换成word文档,有时候要成稿传输了,又得转换成pdf格式,这来回之间的转换,如果没有一个好的转换器作为帮手,还真的是会让人抓狂. 今天小编和大家介绍一款小编平时用的转换器软件.除了将word转成pdf,更重要的是能够对一些常见类型的文档转换格式.像word.ppt.excel.pdf等都可以转为你需要的文档格式.另外还能对文档进行

Word、图片、txt都支持转换的PDF转换软件

找一个好的PDF转换器就是在节省自己的时间.相信大家都有过这样的经验:好不容易找到了一些好点的 资料,但却基于格式的问题而停滞不前.因为普通的办公软件,如office就是打不开PDF文件的.这时候 我们需要的就是一个比较好用的PDF在线转JPG图片转换器了. 由于我们经常需要转换的PDF文件内容并不相同,而不同的PDF文件内容对于不同的PDF识别技术将造成巨 大的困难,因此如何将PDF有效地进行转换,成为目前大部分用户关注的问题之一. 下面主要介绍迅捷PDF转JPG图片转换器的特色功能. 灵活多

C#将Word转换成PDF方法总结(基于Office和WPS两种方案)

有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然后让客户预览,下面来看一下基于Office和WPS的两种解决方案.  一.基于Office的解决方案(推荐使用这种方式) 正如标题所说,基于Office就是要求服务器上面要安装的有Office.我们通过C#代码来调用COM接口,实现将Word转换成PDF.下面来看一下具体实现,首先引用Microso