markdown批量转换为pdf python脚本

** 本程序所需第三方环境如下 **

  • pandoc
  • pip install pywin32
  • word

程序思想

  • 将markdown转为docx文件,直接转换成pdf的话,需要安装配置tex环境,过于繁杂。利用pandoc md文件 -o docx文件,实现转换
  • 将docx转为pdf,通过pywin32调用word来实现相关功能
  • 此后,删除中间生成的docx文件
  • 通过调整参数(func),选择是否将pdf文件留在当前目录下,或将文件输出值统一文件夹中
  • 代码如下,程序默认参数将文件输出到当前目录下
  • dirname可根据需要,设置需要转换的文件夹路径
# 待安装环境pandoc~~操作本质是os.system调用命令行执行该程序
# pip install pywin32
# 调用了word环境
import os
import shutil
from win32com.client import constants, gencache


# markdown文件转换模块  markdown——>docx
def path(dir_path, func):
    """
    :param dir_path: 目标转换文件夹路径
    :param func: 功能 数字1:将markdown转换为doc  数字2:将doc转换为pdf 数字3: 将生成的pdf文件,移动到D:/filestorage目录下
    :return:
    """
    # os.walk输出当前目录下所有文件
    # x路径名, y文件夹名, z文件名
    for i in range(func):
        for x, y, z in os.walk(dir_path):
            for filename in z:
                # 分割文件名和后缀名
                suffix_name = os.path.splitext(filename)[1]
                prefix_name = os.path.splitext(filename)[0]
                filepath = x + '\\' + filename
                outfilepath = x + '\\' + prefix_name
                if i == 0:
                    if suffix_name == '.md':
                        print('pandoc ' + '"' + filepath + '"' + ' -o ' + x + '\\' + os.path.splitext(filename)[0] + '.docx')
                        os.system('pandoc ' + '"' + filepath + '"' + ' -o ' + '"' + x + '\\' + os.path.splitext(filename)[
                            0] + '.docx' + '"')
                elif i == 1:
                    if suffix_name == '.docx':
                        createPdf(filepath, outfilepath)
                        os.remove(filepath)
                elif i == 2:
                    if suffix_name == '.pdf':
                        # 不存在该目录,则利用mkdir进行创建
                        if not os.path.exists('D:\\filestorage\\'):
                            os.mkdir('D:\\filestorage\\')
                        shutil.move(filepath, 'D:\\filestorage\\'+prefix_name+'.pdf')


# docx文件转换模块 docx——>pdf
def createPdf(wordpath, pdfpath):
    """
    :param wordpath: 目标word路径
    :param pdfpath: 生成pdf路径
    :return:
    """
    word = gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(wordpath, ReadOnly=1)
    doc.ExportAsFixedFormat(pdfpath,
                            constants.wdExportFormatPDF,
                            Item=constants.wdExportDocumentWithMarkup,
                            CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
    word.Quit(constants.wdDoNotSaveChanges)


if __name__ == '__main__':
    dirname = r'D:\坚果云\Markdown\海南大学 大三课程笔记\网络工程'
    path(dirname, 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值