如何使用 python pptx 复制带有图像的幻灯片? [复制]

2024-06-24

我的最终目标是改变演示文稿的主题。为此,我创建了一个源模板和一个新模板(具有正确的主题)。我迭代源模板中的每张幻灯片,然后使用以下代码将包含源内容的新幻灯片添加到新模板中https://stackoverflow.com/a/56074651/3206926 https://stackoverflow.com/a/56074651/3206926。如果有更好的方法来做到这一点,我很想听听。

这对于文本和文本框非常有用,但是测试图像无法在新的 powerpoint 中显示(如下图所示):

Code

def copy_slide_from_external_prs(self, src, idx, newPrs):

    # specify the slide you want to copy the contents from
    src_slide = src.slides[idx]

    # Define the layout you want to use from your generated pptx
    slide_layout = newPrs.slide_layouts[2]

    # create now slide, to copy contents to
    curr_slide = newPrs.slides.add_slide(slide_layout)


    # remove placeholders
    for p in [s.element for s in curr_slide.shapes if 'Text Placeholder' in s.name or 'Title' in s.name]:
        p.getparent().remove(p)

    # now copy contents from external slide, but do not copy slide properties
    # e.g. slide layouts, etc., because these would produce errors, as diplicate
    # entries might be generated
    for shp in src_slide.shapes:
        el = shp.element
        newel = copy.deepcopy(el)

        curr_slide.shapes._spTree.insert_element_before(newel, 'p:extLst')
    
    return newPrs

我尝试了许多不同的解决方案,并尝试使用创建新图片image.blob源图像中的属性。然而,该图像没有元素。我是否需要将 blob 转换为 PNG 并保存,然后使用保存的 PNG 创建新图像?

必须有更好的方法来做到这一点。再说一次,我只是想改变主题。


这是我开发的解决方法。我首先检查形状是否是图像,如果是,我将图像写入本地目录。然后我使用保存的图像将图片添加到幻灯片中。最后,我删除本地保存的图像。

现在这个 copy_slide 函数适用于图像:

def copy_slide_from_external_prs(src, idx, newPrs):

    # specify the slide you want to copy the contents from
    src_slide = src.slides[idx]

    # Define the layout you want to use from your generated pptx
    SLD_LAYOUT = 5
    slide_layout = prs.slide_layouts[SLD_LAYOUT]

    # create now slide, to copy contents to
    curr_slide = newPrs.slides.add_slide(slide_layout)

    # create images dict
    imgDict = {}

    # now copy contents from external slide, but do not copy slide properties
    # e.g. slide layouts, etc., because these would produce errors, as diplicate
    # entries might be generated
    for shp in src_slide.shapes:
        if 'Picture' in shp.name:
            # save image
            with open(shp.name+'.jpg', 'wb') as f:
                f.write(shp.image.blob)

            # add image to dict
            imgDict[shp.name+'.jpg'] = [shp.left, shp.top, shp.width, shp.height]
        else:
            # create copy of elem
            el = shp.element
            newel = copy.deepcopy(el)

            # add elem to shape tree
            curr_slide.shapes._spTree.insert_element_before(newel, 'p:extLst')

    # add pictures
    for k, v in imgDict.items():
        curr_slide.shapes.add_picture(k, v[0], v[1], v[2], v[3])
        os.remove(k)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 python pptx 复制带有图像的幻灯片? [复制] 的相关文章

  • Python Twisted WebSocket 客户端

    过去曾使用过 Twisted 我想知道是否有办法让 WebSocket 客户端支持发挥作用 浏览文档我只能找到服务器实现 塔文多高速公路 http www tavendo de autobahn 是一个非常有特色的 websockets 实
  • Python 套接字刷新

    我试图确保每次调用 socket send 函数时 我的缓冲区都会发送 刷新 到我的服务器 使用 unix 套接字在 C 中 根据我的理解 以及我在这个板上看到的 只需禁用 naggle 算法即可 应该这样做 但我的服务器仍然收到 4096
  • 从 git 安装时,我可以强制 pip 进行浅表签出吗?

    以下命令从 git 存储库安装 Python 包 pip install git ssh email protected cdn cgi l email protection username repo git Collecting git
  • Python中字典转小写

    我希望这样做 但为了一本字典 My string lower 是否有内置函数或者我应该使用循环 您将需要使用循环或列表 生成器理解 如果你想将所有的键和值都小写 你可以这样做 dict k lower v lower for k v in
  • 如何使用 scipy.spatial.Delaunay 查找 delaunay 三角剖分中给定点的所有邻居?

    我一直在寻找这个问题的答案 但找不到任何有用的东西 我正在使用 python 科学计算堆栈 scipy numpy matplotlib 并且我有一组二维点 我为其计算 Delaunay 训练 wiki https en wikipedia
  • 在 scipy 中按稀疏矩阵分组并返回一个矩阵

    关于使用 SO 处理有几个问题groupby与稀疏矩阵 然而输出似乎是列表 字典 https stackoverflow com questions 35410839 group by on scipy sparse matrix 数据框
  • 有没有办法可以保留子线程的上下文局部变量?

    目前 我创建了一个库来记录后端调用 例如对boto3 and requests库 然后根据一些数据 例如响应的状态代码等 填充全局 数据 对象 我原来有data对象作为全局的 但后来我意识到这是一个坏主意 因为当应用程序并行运行时 data
  • 执行时忽略字符串列

    我使用以下代码来标准化 pandas DataFrame df norm df df mean df max df min 当所有列都是数字时 此方法效果很好 但是 现在我有一些字符串列df并且上述标准化有错误 有没有办法只对数据帧的数字列
  • 使用 PyQt5/Pyside2 设置重复的 SVG 图案作为主窗口/Qwidget 背景

    我已经通过生成了 SVG css 代码http www heropatterns com http www heropatterns com 我正在尝试使用它作为我的主窗口 Qwidget 的背景 我希望背景随着窗口变大或缩小而调整大小 我
  • 使用 ctypes 的 python 枚举模块

    之前enum模块已存在 c int或相关类型经常被用作替代枚举 但这没有也没有检查类型 现在 python 有一个enum模块 有没有办法直接使用它ctypes 是的 我们可以轻松创建自己的 CEnum 类 这要归功于 ctypes 允许我
  • Python字典键(类对象)与多个比较器的比较

    我使用自定义对象作为 python 字典中的键 这些对象有一些默认值hash and eq定义的方法用于默认比较 但在某些功能中我需要使用不同的方式来比较这些对象 那么有什么方法可以覆盖或传递一个新的比较器来仅针对该特定函数进行这些关键比较
  • matplotlib中有制作散点图矩阵的函数吗?

    散点图矩阵示例 matplotlib pyplot中有这样的函数吗 对于那些不想定义自己的函数的人来说 Python 中有一个很棒的数据分析库 称为Pandas http pandas pydata org 在那里可以找到分散矩阵 http
  • 使用 scipy 在 python 中读取 MatLab 文件

    我正在使用 python 和 scipy 包来读取 MatLab 文件 然而 它需要太长时间并且崩溃 The Dataset http realitycommons media mit edu RealityMining zip大小约为50
  • 如何在 pywebview 中使无框窗口可拖动?

    我最近一直在使用 pywebview 和 Flask 来开发桌面应用程序 我想使用无框窗口功能并创建自己的标题栏 但问题是我不知道如何使该无框窗口可拖动 文档说它可以通过拖动任何点来移动 但对我来说情况并非如此 有任何想法吗 拖动区域 ht
  • Python:UnboundLocalError:赋值前引用的局部变量“count”[重复]

    这个问题在这里已经有答案了 我不明白我的 Python 代码有什么问题 它给了我以下错误 Traceback most recent call last File main py line 77 in
  • 有没有办法向后遍历 dask 数据帧?

    我想要read parquet但从开始的地方向后阅读 假设索引已排序 我不想将整个镶木地板读入内存 因为这违背了使用它的全部意义 有什么好的方法可以做到这一点吗 假设数据帧已建立索引 索引的反转可以通过两步过程完成 反转分区的顺序并反转每个
  • 持久子进程.Popen 会话

    我正在尝试运行一个命令 然后在同一环境中运行另一个命令 比如说 如果我在第一个命令中设置环境变量 我希望它可用于第二个命令 我试过这个 import subprocess process subprocess Popen echo test
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • 为什么我不能将 addstr() 添加到 pythoncurses 窗口中的最后一行/列?

    使用Python 我尝试使用addstr 将光标位置写入curses 窗口的右下角 但出现错误 ScreenH 2工作正常 但打印在窗口底部的第二行 ScreenH 1根本不起作用 我究竟做错了什么 import curses Screen
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下

随机推荐

  • 无法将 int 字段设置为空值

    我有这个int column Column length 4 private int contract owner id 我不需要为每个表行设置始终值 当我进行选择查询时 出现此异常 Can not set int field org en
  • Javascript:让主体加载函数等待脚本完成

    我正在调用一些函数 它们需要一些时间 毫秒 但我不希望在这些函数完成之前显示页面 现在 我可以看出页面已加载 然后脚本最终完成 现在 我正在调用主体中的函数 onload 另外 我可能遇到的另一个问题是我需要访问 html 内容中的 div
  • Java:支持宏吗?

    我只是好奇人们如何解决这个问题 我经常一直编写相同类型的代码 例如 new Thread Change this line start 我不断更改显示 更改此行 的行 然后启动一个线程 这一变化可以是一行或几行 我将如何压缩这段代码 好吧
  • 如何将许多 numpy 文件逐个文件放入一个大 numpy 文件中?

    我有 166600 个 numpy 文件 我想将它们放入一个 numpy 文件中 逐个文件 我的意思是 我的新大文件的创建必须从头开始 第一个文件必须在文件中读取和写入 因此大文件只包含第一个文件 之后我需要读取和写入第二个文件 所以大文件
  • docker 服务更新与使用现有堆栈部署 docker 堆栈

    在部署了一组服务后 我对使用 docker swarm 模式命令来更新现有服务有疑问docker stack deploy 据我了解 每个服务在创建时都固定到图像的 SHA256 摘要 因此 如果您重建并推送图像 具有相同标签 并且尝试运行
  • 如何在swings中组合jtable中的两个列标题

    我需要在 swing 中制作一个像这样的 gui 你能帮我吗 有什么方法可以按列和行组合列标题 所以你想要多标题行jtable 您必须对标题进行分组 GroupableHeaderExample java public class Grou
  • 以不可检测的方式检查 WebSocket 帧

    如何以页面无法检测到的方式在 Chrome 扩展程序或 Firefox 附加组件中读取网页的 WebSocket 框架 从 Chrome 开发工具扩展检查 WebSockets 帧 https stackoverflow com quest
  • HOC 中的样式化组件

    我想使用高阶组件将样式添加到我的组件包装器中 打字稿说有错误ComponentWithAdddedColors type Props bg string function withColors
  • 将 Symfony2 服务配置移至捆绑包

    我的 config yml 中有以下内容 services my user provider class Acme MySecurityBundle Security UserProvider 但想将其移至我的 config ymlMySe
  • 机车滚动在我的 Nuxt3 项目中不起作用

    我正在使用机车滚动和 nuxt3 这是我的回购协议 https github com cyprianwaclaw nuxt git https github com cyprianwaclaw nuxt git 我导入了async loco
  • 干净的代码 - @Autowired 应该应用在哪里?

    我将从一个简单的例子开始 你有一个 Spring boot 应用程序运行CommandLineRunner初始化时的类 MyCommandLineRunner java public class MyCommandLineRunner im
  • Hibernate/JPA + Derby - SELECT 语句在 GROUP BY、ORDER BY 或选择列表中包含太多项目

    我使用 Hibernate 与 Derby DB 进行 JPA DB 映射 对于复杂的对象结构 我收到 org apache derby client am SqlException SELECT 语句在 GROUP BY ORDER BY
  • 通过VSTS发布多配置阶段两个变量,但只有一个乘数

    我有一个 VSTS 发布定义 它传递了两个变量 我无法控制其内容 它们包含一个逗号分隔的名称字符串和一个逗号分隔的 ID 字符串 这些 ID 与索引的名称相对应 我想使用一个代理阶段 该阶段将并行选项设置为多重配置 并将乘数字段设置为 ID
  • 如何测试 before_filter 是否与 Rails 中的 RSpec 一起正常工作

    我有一个check user access control我的 ApplicationController 中的 before filter 在允许登录用户通过之前检查其角色和权限 我正在尝试对其进行一些测试 但找不到好的方法 对于简单的索
  • 同步2个复杂对象图状态的最佳方法是什么

    我有一个复杂的对象图来表示操作调度 在某一时刻 我必须将整个图表序列化到 Web UI 通过 XML JSON 以便用户使用基于 Javascript 的甘特图组件修改时间表 用户完成编辑后 Java 服务器层中图的状态必须与修改后的状态同
  • iPhone:两个 RootViewController 之间的淡入淡出过渡

    Obj C or MonoTouch C 答案很好 初始 UIWindow 的 RootViewController 是一个简单的登录屏幕 window RootViewController loginScreen 登录后 我将根设置为主应
  • JQuery UI 对象按钮栏的工作方式类似于单选按钮

    我想在 jQuery 中制作一个控件或使用一个控件 其作用类似于一系列单选按钮 但看起来像实心按钮而不是单选圆 它们看起来像一个水平菜单 但一次只能选择一个 jQuery UI 在 1 8 中为此添加了一个小部件 请查看jQuery UI
  • iOS:从相机获取逐像素数据

    我知道 AVFoundation 及其捕获支持 虽然不太熟悉 但是 我没有看到任何易于访问的 API 来获取逐像素数据 每像素 RGB 或类似数据 我确实记得在文档中读过这是可能的 但我真的不明白如何做到 所以 这可以做到吗 如果是这样 怎
  • Ruby on Rails - 无法加载此类文件 - net/ssh

    我已经为此苦苦挣扎了几天了 当我尝试从视图调用助手中的方法来执行 ssh 时 它会抛出该错误 加载以下文件时发生此错误 net ssh 但是当我将代码复制到test rb文件并从提示符处执行ruby test rb它连接完美 可能是什么问题
  • 如何使用 python pptx 复制带有图像的幻灯片? [复制]

    这个问题在这里已经有答案了 我的最终目标是改变演示文稿的主题 为此 我创建了一个源模板和一个新模板 具有正确的主题 我迭代源模板中的每张幻灯片 然后使用以下代码将包含源内容的新幻灯片添加到新模板中https stackoverflow co