• 利用python3将已有的某几个pptx文件的某些slides来生成新的pptx文件的范例


    #!/bin/python
    # -*- coding: utf-8 -*-
    
    from pptx import Presentation
    import copy
    import datetime
    import sys
    
    def copy_slide(prs_base, prs_add, add_index_no, base_master_no, base_layout_no):
        source = prs_add.slides[int(add_index_no)]
        dest = prs_base.slides.add_slide(prs_base.slide_masters[int(base_master_no)].slide_layouts[int(base_layout_no)])
    
        for placeholder in dest.shapes.placeholders:
            if placeholder.has_text_frame and placeholder.text_frame.text == "":
                sp = placeholder._sp
                sp.getparent().remove(sp)
    
        for shape in source.shapes:
            newel = copy.deepcopy(shape.element)
            dest.shapes._spTree.insert_element_before(newel, 'p:extLst')
    
        for key, value in source.part.rels.items():
            if not "notesSlide" in value.reltype and not "slideLayout" in value.reltype:
                dest.part.rels.add_relationship(value.reltype, value._target, value.rId)
        return dest
    
    PATH_PPTX = "/var/www/borg/public/file/proposal/pptx/"
    PATH_TEMP = "/var/www/borg/public/file/proposal/tmp/"
    
    prs_base = Presentation(PATH_PPTX + "base.pptx")
    
    try:
        value = sys.argv
        count = 0
        for arg in value:
            if count == 0:
                count+=1
            else:
                params = arg.split(":")
                prs_1 = Presentation(PATH_PPTX + params[0])
                copy_slide(prs_base, prs_1, params[1], params[2], params[3])
                del prs_1
    
        save_name = "merged" + '_{0:%Y%m%d%H%M%S}'.format(datetime.datetime.now()) + ".pptx"
        prs_base.save(PATH_TEMP + save_name)
    
        print("success")
        print(save_name)
    except Exception as e:
        print("error")
        print(e)

    需要安装python3, pip, python-pptx

    yum install python3

    cd /usr/local/src
    wget wget https://bootstrap.pypa.io/get-pip.py
    python3 get-pip.py

    python3 -m pip install python-pptx

  • 相关阅读:
    git回撤
    Mac微信双开
    Mac安装Flutter
    Swift对比Dart
    flutter创建项目
    Mac安装Dart SDK
    windows 上部署 kafka 做测试
    目标检测之YOLO算法:YOLOv1,YOLOv2,YOLOv3,TinyYOLO,YOLOv4,YOLOv5,YOLObile,YOLOF,YOLOX详解(转)
    Oracle TNS01106
    转 ORA02030: can only select from fixed tables/views问题处理方法
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/12263375.html
Copyright © 2020-2023  润新知