md转pdf批量源码

2022-10-15  本文已影响0人  吉凶以情迁

# 待安装环境pandoc~~操作本质是os.system调用命令行执行该程序 下载https://github.com/jgm/pandoc/releases
# pip install pywin32 pip install docx2pdf   pip install pandoc  pip install pandoc-xnos
# 调用了word环境 
# from docx2pdf import convert https://zhuanlan.zhihu.com/p/147498949
# convert("input.docx", "output.pdf") pip install markdown2pdf3 from markdown2pdf3 import * pip install pypandoc convert_markdown_to_pdf('test.md') #你的markdown文件路径
import os
from docx2pdf import convert
from markdown2pdf3 import *
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(True ==True):
                       continue;
                    if suffix_name == '.md':

                        print('pandoc ' + '"' + filepath + '"' + ' -o ' + x + '\\' + os.path.splitext(filename)[0] + '.docx')
                        # convert_markdown_to_pdf(filepath)#RuntimeError: Pandoc died with exitcode "47" during conversion: xelatex not found. Please select a different --pdf-engine or install xelatex
                        os.system('C:\\Users\\qssq5\\AppData\\Local\\Pandoc\\pandoc.exe ' + '"' + filepath + '"' + ' -o ' + '"' + x + '\\' + os.path.splitext(filename)[
                            0] + '.docx' + '"')
                        
                elif i == 1:
                    if suffix_name == '.docx':
                        if(outfilepath.find("android-")!=-1):
                            continue;
                        print("doc "+filepath+" 2 "+outfilepath+"       "+ os.path.splitext(filename)[0] + '.pdf')
                        # createPdf(filepath, outfilepath)
                        convert(filepath,outfilepath+".pdf")
                        os.remove(filepath)
                elif i == 2:
                    if suffix_name == '.pdf':
                        # 不存在该目录,则利用mkdir进行创建
                        if not os.path.exists(dir_path+ '\\pdf\\'):
                            os.mkdir(dir_path+ '\\pdf\\')
                        shutil.move(filepath,dir_path+ '\\pdf\\'+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 = os.getcwd() #获取当前工作目录路径
    path(dirname, 2)


上一篇 下一篇

猜你喜欢

热点阅读