Python中如何实现markdown转pdf(markdown,pdf,python,开发技术)

时间:2024-05-04 05:56:33 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、Pandoc转换

1.1 问题

由于我们markdown编辑器比较特殊,一般情况下,我们不太好看,如果转换成pdf的话,我们就不需要可以的去安装各种编辑器才可以看了,所以我们有了md转pdf或者是docx的需求。

1.2 下载

资源地址

安装后,本地查看版本,是否安装成功:

Python中如何实现markdown转pdf

出现如上图表示安装成功。

1.3 md转docx

cd进入我们需要转换的文件目录下,输入:

pandocxxx.md-s-oxxxx.docx

-s:生成恰当的文件头部和底部。

-o:指定输出的文件。

查看实际效果:

Python中如何实现markdown转pdf

Python中如何实现markdown转pdf

此时发现文件已经生成好.我们打开看下,

Python中如何实现markdown转pdf

整体转换效果还是不错的。

1.4 md转pdf

pandocxxx.md-oxxxx.pdf--pdf-engine=xelatex

二、python库实现

使用 Typora可以直接转换

结合 wkhtmltopdf 使用 markdown 库 和 pdfkit 库

2.1 安装 wkhtmltopdf

wkhtmltopdf 下载地址

2.2 安装 mdutils

pipinstallmarkdownpipinstallpdfkit

参考案例:

importpdfkitfrommarkdownimportmarkdowninput=r"F:\csdn博客\pytorch\【Pytorch】pytorch安装.md"output=r"【Pytorch】pytorch安装.pdf"withopen(input,encoding='utf-8')asf:text=f.read()html=markdown(text,output_format='html')#MarkDown转HTMLhtmltopdf=r'D:\htmltopdf\wkhtmltopdf\bin\wkhtmltopdf.exe'configuration=pdfkit.configuration(wkhtmltopdf=htmltopdf)pdfkit.from_string(html,output_path=output,configuration=configuration,options={'encoding':'utf-8'})#HTML转PDF

但是我们此时存在一个问题,如果我们的md中有表格的话,如图:

Python中如何实现markdown转pdf

那么转换之后会发现是乱的:

Python中如何实现markdown转pdf

我们此时需要设定参数,修改为如下:

html=markdown(text,output_format='html',extensions=['tables'])

我们再看下效果:

Python中如何实现markdown转pdf

2.3 引入数学公式

pipinstallpython-markdown-math
importpdfkitfrommarkdownimportmarkdowninput_filename='xxxx.md'output_filename='xxxx.pdf'html='<!DOCTYPEhtml><body><linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css"rel="externalnofollow"crossorigin="anonymous"><scriptsrc="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"crossorigin="anonymous"></script><scriptsrc="https://cdn.jsdelivr.net/npm/katex/dist/contrib/mathtex-script-type.min.js"defer></script>{}</body></html>'text='$$E=mc^2$$'text=markdown(text,output_format='html',extensions=['mdx_math'])#MarkDown转HTMLhtml=html.format(text)pdfkit.from_string(html,output_filename,options={'encoding':'utf-8'})#HTML转PDF

2.4 网页转pdf

importpdfkitpdfkit.from_file('xxx.html','xxxx.pdf',options={'encoding':'utf-8'})#HTML转PDF

2.5 进度条转换

pipinstallpymdown-extensions

progressbar.css

.progress-label{position:absolute;text-align:center;font-weight:700;width:100%;margin:0;line-height:1.2rem;white-space:nowrap;overflow:hidden;}.progress-bar{height:1.2rem;float:left;background-color:#2979ff;}.progress{display:block;width:100%;margin:0.5rem0;height:1.2rem;background-color:#eeeeee;position:relative;}.progress.thin{margin-top:0.9rem;height:0.4rem;}.progress.thin.progress-label{margin-top:-0.4rem;}.progress.thin.progress-bar{height:0.4rem;}.progress-100plus.progress-bar{background-color:#00e676;}.progress-80plus.progress-bar{background-color:#fbc02d;}.progress-60plus.progress-bar{background-color:#ff9100;}.progress-40plus.progress-bar{background-color:#ff5252;}.progress-20plus.progress-bar{background-color:#ff1744;}.progress-0plus.progress-bar{background-color:#f50057;}

progressbar.py

frommarkdownimportmarkdownfilename='progressbar.md'html='''<!DOCTYPEhtml><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1,minimal-ui"><title>progressbar</title><linkrel="stylesheet"href="progressbar.css"rel="externalnofollow"></head><body>{}</body></html>'''encoding='utf-8'withopen(filename,encoding=encoding)asf:text=f.read()extensions=['markdown.extensions.attr_list','pymdownx.progressbar']text=markdown(text,output_format='html',extensions=extensions)#MarkDown转HTMLhtml=html.format(text)print(html)withopen(filename.replace('.md','.html'),'w',encoding=encoding)asf:f.write(html)#pdfkit.from_string(html,output,options={'encoding':'utf-8'})#HTML转PDFprint('完成')

progressbar.md

[=0%"0%"][=5%"5%"][=25%"25%"][=45%"45%"][=65%"65%"][=85%"85%"][=100%"100%"][=85%"85%"]{:.candystripe}[=100%"100%"]{:.candystripe.candystripe-animate}[=0%]{:.thin}[=5%]{:.thin}[=25%]{:.thin}[=45%]{:.thin}[=65%]{:.thin}[=85%]{:.thin}[=100%]{:.thin}

我们看下最后的实际效果:

Python中如何实现markdown转pdf

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Python中如何实现markdown转pdf的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:tomcat logs目录下各日志文件实例分析下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18