标签: python-pptx

使用Python获取pptx文件幻灯片的标题

我正在尝试使用 Python 获取幻灯片文件的每张幻灯片的标题。我在 Python 中使用 Presentation 包,但找不到任何指定标题的内容。我有这段代码可以返回powerpoint文件的内容。但我需要指定标题。

from pptx import Presentation

prs = Presentation("pp.pptx")

# text_runs will be populated with a list of strings,
# one for each text run in presentation
text_runs = []

for slide in prs.slides:
    for shape in slide.shapes:
        if not shape.has_text_frame:
            continue
        for paragraph in shape.text_frame.paragraphs:
            for run in paragraph.runs:
                text_runs.append(run.text)
Run Code Online (Sandbox Code Playgroud)

python powerpoint python-pptx

5
推荐指数
1
解决办法
4322
查看次数

使用 python-pptx 将 matplotlib 图形保存在 ppt 文件中,而不保存图形

有没有办法使用 python-pptx 在 powerpoint 演示文稿中绘制 matplotlib 图形,而不将图形保存为 *.jpg 或 *.png ?下面是一种简单的方法,即将 matplotlib 图保存为图像文件,然后将其加载到 python-pptx 中,但这根本不是有效的方法。

import numpy as np
import matplotlib.pyplot as plt
from pptx import Presentation
from pptx.util import Inches 

np.random.seed(5)
x = np.arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
plt.plot(x, y, "o")
plt.plot([70, 70], [100, 250], 'k-', lw=2)
plt.plot([70, 90], [90, 200], 'k-')

plt.show()
plt.savefig('graph.jpg')
img = 'graph.jpg'
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
pic = slide.shapes.add_picture(img, Inches(1), Inches(1), …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-pptx

5
推荐指数
1
解决办法
2万
查看次数

为什么将演示文稿保存到类似文件的对象会产生空白演示文稿?

作为对我之前的问题的回答,我编写了以下简短程序来尝试重现该问题。

from pptx import Presentation
from io import BytesIO

p = Presentation()
slide = p.slides.add_slide(p.slide_layouts[0])
slide.shapes[0].text = 'asdf'

p.save('test.pptx')

out = BytesIO()
p.save(out)

out_file = open('bytes_test.pptx', 'wb', buffering=0)
out_file.write(out.read())
out_file.close()
Run Code Online (Sandbox Code Playgroud)

这产生了两个pptx文件。

第一个是test.pptx,它包含一个带有“标题幻灯片”布局的幻灯片,并包含字符串“ asdf”。文件大小为28 KB。

第二个,bytes_test.pptx,在PowerPoint中打开时,仅显示一个大灰色框,上面显示“单击以添加第一张幻灯片”。文件大小为0。

在Windows 10上使用Anaconda Python 3.6.1和python-pptx 0.6.6运行

为什么会这样?

python-pptx

5
推荐指数
1
解决办法
359
查看次数

python-pptx - 设置校对语言

我想使用 python-pptx 模块来更改给定 powerpoint 演示文稿中每个包含文本的形状的校对语言。不幸的是我没有做到。:(

我正在使用 Python 3.6.3 和 python-pptx 0.6.7。

我的代码如下所示:

from pptx import Presentation
from pptx.enum.lang import MSO_LANGUAGE_ID

# In this example code, all proofing language is set to ENGLISH_UK
# all languages can be found in the docs for python-pptx
new_language = MSO_LANGUAGE_ID.ENGLISH_UK

input_file = 'test_pptx.pptx'
output_file = input_file[:-5] + '_modified.pptx'

# Open the presentation
prs = Presentation(input_file)

# iterate through all slides
for slide_no, slide in enumerate(prs.slides):
    # iterate through all shapes/objects on one slide
    for …
Run Code Online (Sandbox Code Playgroud)

python-pptx

5
推荐指数
1
解决办法
605
查看次数

如何使用 python pptx 将自定义布局插入到 powerpoint 中

我正在尝试创建数千个 Powerpoint 演示文稿。我正在使用 python pptx 来实现这一点。到目前为止一切顺利,但我不喜欢默认的 4:3 幻灯片大小。我可以创建模板幻灯片(具有幻灯片大小和默认图标的自定义格式)并在我创建的所有幻灯片中使用它吗?
如果是,有人可以帮助我完成这个过程吗?一般我用

blank_slide_layout = prs.slide_layouts[6]
Slide = prs.slides.add_slide(blank_slide_layout)
Run Code Online (Sandbox Code Playgroud)


希望他们能够成为使用prs.Slides.add_slide(custom_template_1)访问保存的模板的方法

提前致谢

python-pptx

5
推荐指数
1
解决办法
1万
查看次数

如何在python中复制PowerPoint文件?

问题:

我正在尝试将幻灯片从一个演示文稿复制到另一个演示文稿,但返回错误:

追溯(最近一次通话):

File "C:\Users\vuse1\documents\visual studio 2015\Projects\PythonApplication\PythonApplication\PythonApplication.py", line 8, in  
 prs2.slides.add_slide(copySlide) 
File "C:\Python27\lib\site-packages\pptx\slide.py", line 287, in add_slide
  slide.shapes.clone_layout_placeholders(slide_layout) 
File "C:\Python27\lib\site-packages\pptx\shapes\shapetree.py", line 515, in
  clone_layout_placeholders for placeholder in slide_layout.iter_cloneable_placeholders():  
AttributeError: 'Slide' object has no attribute 'iter_cloneable_placeholders'
Run Code Online (Sandbox Code Playgroud)

码:

from pptx import Presentation

prs1 = Presentation("C:\\Users\\vuse1\Desktop\\first.pptx")
prs2 = Presentation("C:\\Users\\vuse1\Desktop\\second.pptx")

copySlide=prs1.slides[0]

prs2.slides.add_slide(copySlide)

prs2.save("C:\\Users\\vuse1\Desktop\\second.pptx")
Run Code Online (Sandbox Code Playgroud)

python powerpoint python-pptx

5
推荐指数
0
解决办法
163
查看次数

是否可以使用 python-pptx 组合两个或多个幻灯片?

我正在尝试合并幻灯片,但我不知道该怎么做。我发现了一个看起来很有前途的 python moduel pptx。我尝试将幻灯片内容从 2 个幻灯片复制到一个新的幻灯片。但我遇到了很多问题,比如如何获取现有的幻灯片布局或形状(所有形状,包括图片、自动形状等)的高度、宽度、位置。我查看了Python-pptx上的python-pptx示例:复制幻灯片。我尝试做类似的事情,但这不起作用。

这是我的代码:

from pptx import Presentation

prs1 = Presentation("C:/Users/number/Documents/Test1.pptx")
prs2 = Presentation("C:/Users/number/Documents/Test2.pptx")

slidelst = []
for layout in prs2.slide_layouts:
    slidelst.append(prs1.slides.add_slide(layout))

index = 0
for slide in slidelst:
    for shape in prs2.slides[prs2.slides.index(slide)].shapes:
        slide.shapes._spTree.insert_element_before(shape.element, 'p:extLst')
    index+=1

prs1.save("C:/Users/I505168/Documents/newpresentation.pptx")
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "C:\Users\I505168\Desktop\testpptx.py", line 12, in <module>
    for shape in prs2.slides[prs2.slides.index(slide)].shapes:
  File "C:\Users\I505168\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pptx\slide.py", line 315, in index
    raise ValueError("%s is not in slide collection" % slide)
ValueError: <pptx.slide.Slide object at 0x03B53A50> is not …
Run Code Online (Sandbox Code Playgroud)

python python-pptx

5
推荐指数
1
解决办法
7879
查看次数

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

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

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

在此输入图像描述

代码

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, …
Run Code Online (Sandbox Code Playgroud)

python python-pptx

5
推荐指数
1
解决办法
4090
查看次数

ubuntu环境下使用python将ppt转换为视频

我编写了一个 python 脚本,使用 pywin32 将 ppt 转换为视频,该脚本工作正常,但是当我尝试在 Ubuntu 环境中导入我的脚本时,pywin32 无法作为其 Windows 支持的模块工作。所以我想找到一些可以在Ubuntu环境中使用python将ppt转换为视频的东西。

这些是在 Windows 中运行良好的脚本。

import win32com.client
import time
import os
ppSaveAsWMV = 37
def cover_ppt_to_wmv(ppt_src,wmv_target):
    ppt = win32com.client.Dispatch('PowerPoint.Application')
    presentation = ppt.Presentations.Open(ppt_src,WithWindow=False)
    presentation.CreateVideo(wmv_target,-1,4,720,24,60)
    start_time_stamp = time.time()
    while True:
        time.sleep(4)
        try:
            os.rename(wmv_target,wmv_target)
            print('success')
            break
        except Exception:
            pass
    end_time_stamp=time.time()
    print(end_time_stamp-start_time_stamp)
    ppt.Quit()
    pass
  
if __name__ == '__main__':
    cover_ppt_to_wmv('','')


Run Code Online (Sandbox Code Playgroud)

python ubuntu python-2.7 python-3.x python-pptx

5
推荐指数
0
解决办法
1092
查看次数

Read .pptx file from s3

I try to open a .pptx from Amazon S3 and read it using the python-pptx library. This is the code:

from pptx import Presentation
import boto3
s3 = boto3.resource('s3')

obj=s3.Object('bucket','key')
body = obj.get()['Body']
prs=Presentation((body))
Run Code Online (Sandbox Code Playgroud)

It gives "AttributeError: 'StreamingBody' object has no attribute 'seek'". Shouldn't this work? How can I fix this? I also tried using read() on body first. Is there a solution without actually downloading the file?

python amazon-s3 boto3 python-pptx

5
推荐指数
1
解决办法
150
查看次数