恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

PPT-MD

  • 首页
  • 资讯中心
  • /
  • PPT-MD

相关资讯

LabVIEW储能电池绝缘测试 2026/9/2 17:28:33
题解4(冰雹猜想、旗鼓相当的对手) 2026/9/2 17:28:33
4. ARP_16 ~ ARP_20 2026/9/2 17:28:33

最新资讯

字节面试:给你一台机器、一个模型 API,从零搭一个 Agent 系统,你选什么架构?
面了美团AI全栈开发,面试官让我写个合并两个排序链表,我笑了:“我刷题500道,苦练举一反三的能力,你就考我原题?”
移动端AI助手远程连接:从网络认证到跨设备架构的工程实践
房地产小程序开发价值和功能介绍
Blender VRM插件全攻略:从导入到导出的完整流程
懂了!VMware/KVM/Docker原来是这么回事儿

今日推荐

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案
用Python搭建搞笑语音助手:从语音识别到语音合成全教程
ROS2阿克曼底盘仿真:从运动学原理到Nav2导航集成实践

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

PPT-MD

发布时间:2026/9/2 17:28:33
PPT-MD #!/usr/bin/env python3# -*- coding: utf-8 -*- PPT 转 Markdown 工具把模板 PPT (.pptx) 提取为 Marp 可用的 Markdown。 用法 python pptx_to_md.py 模板.pptx [-o 输出.md] 输出 1) 输出名.md 提取出的 Markdown每页用 --- 分隔 2) 输出名_images/ 模板中用到的图片在 md 中通过相对路径引用 说明 提取仅保留文字、表格和图片的位置信息标题按占位符/字号识别 布局、颜色、动画等版式无法 100% 还原需在生成后手工微调样式。 importosimportreimportsysfrompptximportPresentationfrompptx.enum.shapesimportMSO_SHAPE_TYPEfrompptx.utilimportEmu FRONT_MATTER--- marp: true theme: default paginate: true size: 16:9 --- PIC_EXT{image/png:.png,image/jpeg:.jpg,image/gif:.gif,image/bmp:.bmp,image/tiff:.tiff,image/x-emf:.emf,image/x-wmf:.wmf,}defrun_text(paragraph):把段落里的 run 渲染成 markdown 文本保留加粗/斜体。parts[]forruninparagraph.runs:trun.textifnott:continueifrun.font.bold:t**t**ifrun.font.italic:t*t*parts.append(t)return.join(parts)defhas_text(paragraph):returnbool(paragraph.text.strip())defis_title_shape(shape):ifnotshape.is_placeholder:returnFalsephshape.placeholder_formattry:frompptx.enum.shapesimportPP_PLACEHOLDERreturnph.typein(PP_PLACEHOLDER.TITLE,PP_PLACEHOLDER.CENTER_TITLE)exceptException:returnFalsedefslide_title(slide):优先取标题占位符否则取字体最大的首段。candidates[]forshapeinslide.shapes:ifnotshape.has_text_frame:continueforparainshape.text_frame.paragraphs:ifhas_text(para):size0forruninpara.runs:ifrun.font.size:sizemax(size,run.font.size.pt)candidates.append((para,size,is_title_shape(shape)))ifnotcandidates:returnNone,Nonetitle_cands[cforcincandidatesifc[2]]picktitle_cands[0]iftitle_candselsemax(candidates,keylambdac:c[1]or0)parapick[0]returnpara.text.strip(),pick[1]defpara_lines(shape):返回一个文本框的段落列表 [(text, level), ...]out[]forparainshape.text_frame.paragraphs:trun_text(para).strip()ifnott:continuelvlpara.levelor0out.append((t,lvl))returnoutdefbullet(t,lvl):return *lvl- tiflvlelse- tdefrender_slide(slide,index,img_dir,md_name):lines[]title,_slide_title(slide)lines.append(!-- 第 %d 页%s --%(index,(title)iftitleelse))iftitle:lines.append(## title)else:lines.append(## 第 %d 页%index)forshapeinslide.shapes:ifshape.shape_typeMSO_SHAPE_TYPE.PICTURE:picshape.image extPIC_EXT.get(pic.content_type,.img)fname%s_%d%s%(md_name,index,ext)withopen(os.path.join(img_dir,fname),wb)asf:f.write(pic.blob)lines.append(![](%s/%s)%(os.path.relpath(img_dir,os.path.dirname(os.path.abspath(__file__))).replace(\\,/),fname))continueifshape.has_table:tableshape.table rows[]forrintable.rows:cells[c.text.strip().replace(\n, )forcinr.cells]rows.append(cells)ifrows:lines.append(| | .join(rows[0]) |)lines.append(|---|*len(rows[0]))forrinrows[1:]:lines.append(| | .join(r) |)continueifshape.has_text_frame:iftitleandtitleinshape.text_frame.text.strip():continueplinespara_lines(shape)ifplines:fort,lvlinplines:lines.append(bullet(t,lvl))return\n.join(lines)defmain():iflen(sys.argv)2:print(用法: python pptx_to_md.py 模板.pptx [-o 输出.md])sys.exit(1)pptx_pathsys.argv[1]out_pathNoneif-oinsys.argv:out_pathsys.argv[sys.argv.index(-o)1]ifout_pathisNone:stemos.path.splitext(os.path.basename(pptx_path))[0]out_pathstem.mdmd_nameos.path.splitext(os.path.basename(out_path))[0]img_diros.path.join(os.path.dirname(out_path),md_name_images)os.makedirs(img_dir,exist_okTrue)prsPresentation(pptx_path)slides[]fori,slideinenumerate(prs.slides,1):slides.append(render_slide(slide,i,img_dir,md_name))mdFRONT_MATTER\n\n---\n\n.join(slides)\nwithopen(out_path,w,encodingutf-8)asf:f.write(md)print(已生成 Markdown: out_path)print(已导出图片到: img_dir)if__name____main__:main()

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号