简书链接:md转pdf批量源码
文章字数:264,阅读全文大约需要1分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| # 待安装环境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)
|