Python實現markdown轉換為pdf
概述
公司最近需求,是將線上集群信息收集起來,並使用markdown展示,但是為避免人為修改數據所以需要轉換成pdf格式,花上端午節空閑時間找了一些資料,做了一些匯總。
貼上markdown生成腳本示例
#!/use/bin/python from mdutils import MdUtils result = """ ``` NAME READY STATUS RESTARTS AGE coredns-55c6679897-48lf7 1/1 Running 0 12d coredns-55c6679897-ftzzj 1/1 Running 0 12d etcd-bj-idc1-10-53-5-99-10.53.5.99 1/1 Running 0 12d kube-apiserver-bj-idc1-10-53-5-99-10.53.5.99 1/1 Running 0 12d kube-controller-manager-bj-idc1-10-53-5-99-10.53.5.99 1/1 Running 0 12d kube-flannel-ds-amd64-8t4pp 1/1 Running 0 12d kube-flannel-ds-amd64-frcwm 1/1 Running 0 12d kube-flannel-ds-amd64-gnwjx 1/1 Running 0 12d kube-flannel-ds-amd64-jqkrv 1/1 Running 0 16h kube-proxy-7ztqf 1/1 Running 0 12d kube-proxy-d5ql6 1/1 Running 0 16h kube-proxy-g9lq5 1/1 Running 0 12d kube-proxy-jsvmg 1/1 Running 0 12d kube-scheduler-bj-idc1-10-53-5-99-10.53.5.99 1/1 Running 0 12d nginx-ingress-25ppz 1/1 Running 0 12d nginx-ingress-6wjgm 1/1 Running 0 16h nginx-ingress-nm7cg 1/1 Running 0 12d nginx-ingress-wdzm4 1/1 Running 0 12d tiller-deploy-64fb6b8f56-2g2dx 1/1 Running 0 12d ``` """ mdFile = MdUtils(file_name='wsl',title='Markdown File Example') mdFile.write(result) mdFile.create_md_file()
方式一
將markdown文檔轉換為html然后轉換為pdf
不論是windows還是linux都需要安裝wkhtmltopdf,但是這個方式有缺陷,代碼格式顯示很是不友好,所以在這只是展示出來,不接受的人可以避免踩坑。
#!/use/bin/python from markdown import markdown import pdfkit path_wk = r'C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe' #安裝位置 config = pdfkit.configuration(wkhtmltopdf = path_wk) input_filename = './wsl.md' output_filename = 'wsl.pdf' with open(input_filename, 'r') as f: html_text = markdown(f.read(), output_format='html4') pdfkit.from_string(html_text, output_filename, configuration = config)
方法二
使用md2pdf模塊方式轉換,md2pdf
優點:這種方式優於上面,可以保存原樣並生成目錄
缺點:將多個md生成一個pdf中,使用docker鏡像方式,雖然方便但是鏡像太大,2G
vi mkdocs.yml # 需要一個配置文件 files_order: - 'wsl.md' docker run --rm -v /root/python/md_pdf:/md2pdf 887219aa9010 -i /md2pdf/mkdocs.yml -o /md2pdf/documentation.pdf