繁体   English   中英

如何使用 Python-pptx 向自选图形添加阴影?

[英]How do I add a shadow to AutoShapes using Python-pptx?

我只想在使用python-pptx时为我创建的形状添加阴影 我已经阅读了尽可能多的关于在 python-pptx 中使用阴影的文档,但我不知道如何实际操作。

我尝试shadow = shape.shadow创建一个 'ShadowFormat' object 但是当我尝试做shadow.visible我得到错误AttributeError: 'ShadowFormat' object has no attribute 'visible'

如果有人能解释这是如何完成的并举例说明,将不胜感激!

额外信息:

这是链接到主题的页面: https://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-shadow.html但是没有关于如何在 powerpoint 中为形状创建阴影的示例. 我导入了以下模块:

from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.enum.action import PP_ACTION
from pptx.util import Cm
from pptx.enum.dml import MSO_THEME_COLOR_INDEX
from pptx.enum.text import MSO_AUTO_SIZE
from pptx.util import Pt

我正在使用 python-pptx v0.6.18 和 python v3.8

编辑

创建形状但没有出现阴影的示例:

#Import modules
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Cm
from pptx.enum.dml import MSO_THEME_COLOR_INDEX
from pptx.util import Pt


#Open powerpoint file
prs = Presentation('filename.pptx')

#Create a slide
slidelayout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slidelayout)
shapes = slide.shapes

#Add a shape
shape = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Cm(10), Cm(10), Cm(10), Cm(10))

#Create a shadow
shadow = shape.shadow
shadow.inherit = False
shadow.visible = True
shadow.distance = Pt(10)
shadow.shadow_type = 'outer'
shadow.angle = 45
shadow.blur_radius = Pt(5)
shadow.color = MSO_THEME_COLOR_INDEX.ACCENT_5
shadow.transparency = '50'
shadow.distance = Pt(5)
shape.shadow.style = 'outer'

#Save the powerpoint file
prs.save('filename2.pptx')

创建错误消息的示例:

#Import modules
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Cm
from pptx.enum.dml import MSO_THEME_COLOR_INDEX
from pptx.util import Pt


#Open powerpoint file
prs = Presentation('filename.pptx')

#Create a slide
slidelayout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slidelayout)
shapes = slide.shapes

#Add a shape
shape = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Cm(10), Cm(10), Cm(10), Cm(10))

#Create a shadow
shadow = shape.shadow
shadow.visible


#Save the powerpoint file
prs.save('filename2.pptx')

<ShadowFormat.visible - applies a reasonable standard shadow override.>功能目前在 pptx 的 scope 之外。

命令<shadow.inherit = False>用于删除带有阴影的默认设置。 默认情况下,阴影可见性设置为 true。 如果你想显示阴影,你可以:

  1. 设置<shadow.inherit = True>
  2. 删除<shadow.inherit = False>

您可以使用Aspose.Slides for Python来操作形状。 这是一个付费图书馆,但您可以获得临时许可证来评估它。 以下代码示例向您展示了如何向演示文稿添加带阴影的形状:

import aspose.slides as slides

# Create a new presentation.
with slides.Presentation() as presentation:
 
    # Create a shape.
    shape = presentation.slides[0].shapes.add_auto_shape(slides.ShapeType.ROUND_CORNER_RECTANGLE, 10, 10, 20, 20)

    # Set a shadow for the shape.
    shape.effect_format.enable_outer_shadow_effect()
    shape.effect_format.outer_shadow_effect.distance = 10
    shape.effect_format.outer_shadow_effect.direction = 45
    shape.effect_format.outer_shadow_effect.blur_radius = 5
    shape.effect_format.outer_shadow_effect.shadow_color.color = presentation.master_theme.color_scheme.accent5.color

    # Save the presentation.
    presentation.save("example.pptx", slides.export.SaveFormat.PPTX)

结果:

在此处输入图像描述

或者,您可以将Aspose.Slides Cloud SDK 用于 Python 本产品提供基于 REST 的 API 用于演示处理。 它也是付费产品,但您每月可以免费拨打 150 次 API 电话,用于实验、学习和任何其他目的。 下面的代码示例使用 Aspose.Slides Cloud 创建了带有阴影的相同形状:

import asposeslidescloud

from asposeslidescloud.apis.slides_api import SlidesApi
from asposeslidescloud.models.shape import Shape
from asposeslidescloud.models.effect_format import EffectFormat
from asposeslidescloud.models.outer_shadow_effect import OuterShadowEffect

slides_api = SlidesApi(None, "my_client_id", "my_client_secret")

# Let's a presentation exists in a storage.
file_name = "example.pptx"
slide_index = 1

color_scheme = slides_api.get_color_scheme(file_name, slide_index)

# Prepare DTO for a shape with the shadow.
shape = Shape()
shape.shape_type = "RoundCornerRectangle"
shape.x = 10
shape.y = 10
shape.width = 20
shape.height = 20
shape.effect_format = EffectFormat()
shape.effect_format.outer_shadow = OuterShadowEffect()
shape.effect_format.outer_shadow.distance = 10
shape.effect_format.outer_shadow.direction = 45
shape.effect_format.outer_shadow.blur_radius = 5
shape.effect_format.outer_shadow.shadow_color = color_scheme.accent5

# Create the shape.
slides_api.create_shape(file_name, slide_index, shape)

我在 Aspose 担任支持开发人员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM