python快速处理ppt_ppt制作工具python-pptx 快速入门

hello

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from pptx import Presentation

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]

slide = prs.slides.add_slide(title_slide_layout)

title = slide.shapes.title

subtitle = slide.placeholders[1]

title.text = "Hello, World!"

subtitle.text = "python-pptx 可以轻松制作powerpoint!"

prs.save('test.pptx')

图片.png

Bullet

from pptx import Presentation

prs = Presentation()

bullet_slide_layout = prs.slide_layouts[1]

slide = prs.slides.add_slide(bullet_slide_layout)

shapes = slide.shapes

title_shape = shapes.title

body_shape = shapes.placeholders[1]

title_shape.text = 'Adding a Bullet Slide'

tf = body_shape.text_frame

tf.text = 'Find the bullet slide layout'

p = tf.add_paragraph()

p.text = 'Use _TextFrame.text for first bullet'

p.level = 1

p = tf.add_paragraph()

p.text = 'Use _TextFrame.add_paragraph() for subsequent bullets'

p.level = 2

prs.save('test.pptx')

图片.png

并非所有shape都可以包含文本,但至少有段落。 _BaseShape.has_text_frame可用于确定shape是否可以包含文本,所有shape都是_BaseShape的子类 。当_BaseShape.has_text_frame为True 时,_BaseShape.text_frame.paragraphs[0]返回第一段。 可以使用text_frame.paragraphs[0].text设置文本。 _BaseShape.text和_TextFrame.text可以达到同样的效果。

from pptx import Presentation

prs = Presentation()

bullet_slide_layout = prs.slide_layouts[1]

slide = prs.slides.add_slide(bullet_slide_layout)

shapes = slide.shapes

title_shape = shapes.title

body_shape = shapes.placeholders[1]

title_shape.text = 'Adding a Bullet Slide'

tf = body_shape.text_frame

tf.text = 'Find the bullet slide layout'

p = tf.add_paragraph()

p.text = 'Use _TextFrame.text for first bullet'

p.level = 1

p = tf.add_paragraph()

p.text = 'Use _TextFrame.add_paragraph() for subsequent bullets'

p.level = 2

prs.save('test.pptx')

参考资料

字体

from pptx import Presentation

from pptx.util import Inches, Pt

prs = Presentation()

blank_slide_layout = prs.slide_layouts[6]

slide = prs.slides.add_slide(blank_slide_layout)

left = top = width = height = Inches(1)

txBox = slide.shapes.add_textbox(left, top, width, height)

tf = txBox.text_frame

tf.text = "This is text inside a textbox"

p = tf.add_paragraph()

p.text = "This is a second paragraph that's bold"

p.font.bold = True

p = tf.add_paragraph()

p.text = "This is a third paragraph that's big"

p.font.size = Pt(40)

prs.save('test.pptx')

图片.png

图片

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from pptx import Presentation

from pptx.util import Inches

img_path = 'test.jpg'

prs = Presentation()

blank_slide_layout = prs.slide_layouts[6]

slide = prs.slides.add_slide(blank_slide_layout)

left = top = Inches(1)

pic = slide.shapes.add_picture(img_path, left, top)

left = Inches(5)

height = Inches(5.5)

pic = slide.shapes.add_picture(img_path, left, top, height=height)

prs.save('test.pptx')

图片.png

Autoshape

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from pptx import Presentation

from pptx.enum.shapes import MSO_SHAPE

from pptx.util import Inches

prs = Presentation()

title_only_slide_layout = prs.slide_layouts[5]

slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes

shapes.title.text = 'Adding an AutoShape'

left = Inches(0.93) # 0.93" centers this overall set of shapes

top = Inches(3.0)

width = Inches(1.75)

height = Inches(1.0)

shape = shapes.add_shape(MSO_SHAPE.PENTAGON, left, top, width, height)

shape.text = 'Step 1'

left = left + width - Inches(0.4)

width = Inches(2.0) # chevrons need more width for visual balance

for n in range(2, 6):

shape = shapes.add_shape(MSO_SHAPE.CHEVRON, left, top, width, height)

shape.text = 'Step %d' % n

left = left + width - Inches(0.4)

prs.save('test.pptx')

图片.png

表格

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from pptx import Presentation

from pptx.util import Inches

prs = Presentation()

title_only_slide_layout = prs.slide_layouts[5]

slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes

shapes.title.text = 'Adding a Table'

rows = cols = 2

left = top = Inches(2.0)

width = Inches(6.0)

height = Inches(0.8)

table = shapes.add_table(rows, cols, left, top, width, height).table

# set column widths

table.columns[0].width = Inches(2.0)

table.columns[1].width = Inches(4.0)

# write column headings

table.cell(0, 0).text = 'Foo'

table.cell(0, 1).text = 'Bar'

# write body cells

table.cell(1, 0).text = 'Baz'

table.cell(1, 1).text = 'Qux'

prs.save('test.pptx')

图片.png

提取文本

from pptx import Presentation

prs = Presentation(path_to_presentation)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值