使用 python 将 Markdown 文件转换为 ppt演示文稿
在这篇博客中,我们将展示如何使用 wxPython 创建一个简单的图形用户界面 (GUI),以将 Markdown 文件转换为 PowerPoint 演示文稿。我们将利用markdown2模块将 Markdown 转换为 HTML,并使用模块将 HTML 内容转换为 PowerPoint 幻灯片。本教程将演示如何通过解析 Markdown 文件的层次结构,以大纲模式生成 PPT。
在这篇博客中,我们将展示如何使用 wxPython 创建一个简单的图形用户界面 (GUI),以将 Markdown 文件转换为 PowerPoint 演示文稿。我们将利用 markdown2 模块将 Markdown 转换为 HTML,并使用 python-pptx 模块将 HTML 内容转换为 PowerPoint 幻灯片。本教程将演示如何通过解析 Markdown 文件的层次结构,以大纲模式生成 PPT。
C:\pythoncode\new\markdownTOPPT.py
先决条件
在开始之前,请确保您已经安装了以下 Python 库:
pip install wxpython python-pptx markdown2
步骤 1:创建 GUI 应用
首先,我们需要创建一个简单的 wxPython 应用程序,让用户选择 Markdown 文件并启动转换过程。
import wx
import markdown2
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
class MarkdownToPPTApp(wx.Frame):
def __init__(self, parent, title):
super(MarkdownToPPTApp, self).__init__(parent, title=title, size=(400, 200))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.open_button = wx.Button(panel, label='Open Markdown File')
self.open_button.Bind(wx.EVT_BUTTON, self.on_open_file)
vbox.Add(self.open_button, flag=wx.EXPAND|wx.ALL, border=10)
self.convert_button = wx.Button(panel, label='Convert to PPT')
self.convert_button.Bind(wx.EVT_BUTTON, self.on_convert)
vbox.Add(self.convert_button, flag=wx.EXPAND|wx.ALL, border=10)
panel.SetSizer(vbox)
self.markdown_file = None
self.Centre()
self.Show(True)
def on_open_file(self, event):
with wx.FileDialog(self, "Open Markdown file", wildcard="Markdown files (*.md)|*.md",
style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
if fileDialog.ShowModal() == wx.ID_CANCEL:
return
self.markdown_file = fileDialog.GetPath()
wx.MessageBox(f'Selected file: {self.markdown_file}', 'Info', wx.OK | wx.ICON_INFORMATION)
def on_convert(self, event):
if not self.markdown_file:
wx.MessageBox('Please select a Markdown file first.', 'Error', wx.OK | wx.ICON_ERROR)
return
self.convert_markdown_to_ppt(self.markdown_file)
wx.MessageBox('Conversion successful!', 'Info', wx.OK | wx.ICON_INFORMATION)
def convert_markdown_to_ppt(self, markdown_file):
with open(markdown_file, 'r', encoding='utf-8') as file:
markdown_content = file.read()
html_content = markdown2.markdown(markdown_content)
lines = markdown_content.split('\n')
prs = Presentation()
current_slide = None
current_level = 0
for line in lines:
if line.startswith('#'):
level = line.count('#')
title_text = line.strip('# ').strip()
if level == 1:
current_slide = prs.slides.add_slide(prs.slide_layouts[1])
title = current_slide.shapes.title
title.text = title_text
current_level = 1
elif current_slide and level > current_level:
self.add_subtitle(current_slide, title_text, level - current_level)
current_level = level
else:
current_slide = prs.slides.add_slide(prs.slide_layouts[1])
title = current_slide.shapes.title
title.text = title_text
current_level = level
else:
if current_slide:
content = current_slide.placeholders[1]
p = content.text_frame.add_paragraph()
p.text = line
p.font.size = Pt(18)
output_file = markdown_file.replace('.md', '.pptx')
prs.save(output_file)
def add_subtitle(self, slide, subtitle_text, indent_level):
content = slide.placeholders[1]
p = content.text_frame.add_paragraph()
p.text = subtitle_text
p.level = indent_level
p.font.size = Pt(18)
p.font.color.rgb = RGBColor(0, 0, 0)
if __name__ == '__main__':
app = wx.App(False)
frame = MarkdownToPPTApp(None, title='Markdown to PPT Converter')
app.MainLoop()
说明
- 选择文件:用户点击“Open Markdown File”按钮选择 Markdown 文件。
- 转换文件:用户点击“Convert to PPT”按钮进行转换。
- Markdown 转 HTML:使用
markdown2.markdown()将 Markdown 内容转换为 HTML。 - 创建 PPT:使用
python-pptx创建一个新的 PowerPoint 演示文稿,并根据 Markdown 文件的层次结构创建幻灯片和子标题。
步骤 2:解析 Markdown 文件
在 convert_markdown_to_ppt 方法中,我们读取 Markdown 文件的内容,并将其按行分割。我们检查每一行是否是标题,根据标题级别创建相应的幻灯片或子标题。
步骤 3:创建 PowerPoint 幻灯片
我们使用 python-pptx 创建 PowerPoint 幻灯片。对于每个一级标题 (#),我们创建一个新的幻灯片。对于每个次级标题(##, ### 等),我们将其添加为当前幻灯片的子标题。
步骤 4:添加子标题
在 add_subtitle 方法中,我们向当前幻灯片添加子标题,并设置其缩进级别和字体大小。
结论
通过上述步骤,我们创建了一个简单的 GUI 应用程序,可以将 Markdown 文件转换为 PowerPoint 演示文稿。该应用程序通过解析 Markdown 文件的层次结构,以大纲模式生成 PPT,使幻灯片内容结构清晰、层次分明。这种方法确保 PPT 演示文稿的结构与 Markdown 文件的层次结构一致,更好地组织内容。



更多推荐

所有评论(0)