首页 > 编程语言 > 详细

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

时间:2020-02-05 14:44:17      阅读:186      评论:0      收藏:0      [点我收藏+]
#!/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

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

原文:https://www.cnblogs.com/gaoBlog/p/12263375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!