• 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)

  • 相关阅读:
    S(Stockwell)变换的Matlab代码
    JVM学习四
    基础 | JVM - [内存溢出]
    室内温度控制仿真(Simulink+PLC)
    基于FPGA的多通道ARINC429总线测试系统
    CTFshow 信息收集 web 1、2、3、4、5
    Springboot 项目打成jar包部署到服务器中的方式
    springboot集成uid-generator生成分布式id
    认知一致性和透明性
    对表白的看法
  • 原文地址:https://blog.csdn.net/emailscott/article/details/134371125