• python-pptx解析pptx模板


    from pptx import Presentation
    from pptx.slide import Slide
    from pptx.slide import NotesSlide
    from pptx.text.text import TextFrame
    from pptx.shapes.shapetree import SlideShapes
    from pptx.shapes.placeholder import SlidePlaceholder
    import json

    path = "C:/luo/tmp/tmpl/009999.pptx"
    prs = Presentation(path)

    def res(obj) -> Slide:
        return obj
    def res2(obj) -> NotesSlide:
        return obj
    def res3(obj) -> SlideShapes:
        return obj
    def res4(obj) -> TextFrame:
        return obj
    def res5(obj) -> SlidePlaceholder:
        return obj

    page_ids = {i + 1: slide.slide_id for i, slide in enumerate(prs.slides)}
    print(page_ids)
    for page in page_ids:
        slide = prs.slides.get(page_ids[page])
        slide = res(slide)
        shapes = res3(slide.shapes)
        for shape in shapes:
            shape_text = ""
            if shape.has_text_frame:
                shape_text = shape.text
                # shape.text = ''
            print("page: " + str(page) + ", idx: " + str(shape.placeholder_format.idx) + "," + str(shape_text))

        # 获取 note
        if slide.has_notes_slide and len(str(slide.notes_slide.notes_text_frame.text).strip()) > 0:
            notes_slide = res2(slide.notes_slide)
            tf = res4(notes_slide.notes_text_frame)
            note_json = json.loads(tf.text)
            for jn in note_json:
                print(jn['name'])
            tf.text = '' # 用于 prs.save(path) 做清除 note

    output = "C:/luo/tmp/tmpl/009999-gen-report.pptx"
    prs.save(output)

  • 相关阅读:
    vue的第3篇 第一个vue程序
    2024超好看的404单页HTML源码
    Maven setting配置文件
    【python】(十五)python内置库——正则表达式re
    .NET6项目连接数据库方式方法
    vscode setting.json 全局设置 工作区设置 位置 优先级
    PCB电路板去耦电容配置原则有哪些?
    STM32一
    js设计模式
    QEMU 结构体对齐产生的问题
  • 原文地址:https://blog.csdn.net/emailscott/article/details/134371125