美文网首页
md转pdf批量源码

md转pdf批量源码

作者: 吉凶以情迁 | 来源:发表于2022-10-15 18:04 被阅读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)
    
    
    

    相关文章

      网友评论

          本文标题:md转pdf批量源码

          本文链接:https://www.haomeiwen.com/subject/bzlmxrtx.html