通过 Java 在 Python 中管理演示文稿背景

介绍

纯色、渐变和图像通常用于幻灯片背景。您可以为 普通幻灯片(单个幻灯片)或 母版幻灯片(一次应用于多个幻灯片)设置背景。

PowerPoint 背景

为普通幻灯片设置纯色背景

Aspose.Slides 允许您为演示文稿中的特定幻灯片设置纯色背景——即使演示文稿使用了母版幻灯片。此更改仅适用于所选幻灯片。

  1. 创建 Presentation 类的实例。
  2. 将幻灯片的 BackgroundType 设置为 OwnBackground。
  3. 将幻灯片背景的 FillType 设置为 Solid。
  4. 在 FillFormat 上使用 getSolidFillColor 方法指定纯色背景颜色。
  5. 保存修改后的演示文稿。

以下 Python 示例演示如何将蓝色纯色设置为普通幻灯片的背景:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import BackgroundType, FillType, Presentation, SaveFormat
from java.awt import Color

# 创建 Presentation 类的实例。
presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    # 将幻灯片的背景颜色设置为蓝色。
    slide.getBackground().setType(BackgroundType.OwnBackground)
    slide.getBackground().getFillFormat().setFillType(FillType.Solid)
    slide.getBackground().getFillFormat().getSolidFillColor().setColor(Color.BLUE)

    # 将演示文稿保存到磁盘。
    presentation.save("SolidColorBackground.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

为母版幻灯片设置纯色背景

Aspose.Slides 允许您为演示文稿的母版幻灯片设置纯色背景。母版幻灯片充当模板,控制所有幻灯片的格式,因此当您为母版幻灯片的背景选择纯色时,它会应用于每张幻灯片。

  1. 创建 Presentation 类的实例。
  2. 将母版幻灯片的 BackgroundType(通过 getMasters)设置为 OwnBackground。
  3. 将母版幻灯片背景的 FillType 设置为 Solid。
  4. 使用 getSolidFillColor 方法指定纯色背景颜色。
  5. 保存修改后的演示文稿。

以下 Python 示例演示如何将纯色(绿色)设置为母版幻灯片的背景:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import BackgroundType, FillType, Presentation, SaveFormat
from java.awt import Color

# 创建 Presentation 类的实例。
presentation = Presentation()
try:
    master_slide = presentation.getMasters().get_Item(0)

    # 将母版幻灯片的背景颜色设置为绿色。
    master_slide.getBackground().setType(BackgroundType.OwnBackground)
    master_slide.getBackground().getFillFormat().setFillType(FillType.Solid)
    master_slide.getBackground().getFillFormat().getSolidFillColor().setColor(Color.GREEN)

    # 将演示文稿保存到磁盘。
    presentation.save("MasterSlideBackground.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

为幻灯片设置渐变背景

渐变是一种通过颜色逐渐变化产生的图形效果。当用作幻灯片背景时,渐变可以使演示文稿更具艺术性和专业感。Aspose.Slides 允许您为幻灯片设置渐变颜色作为背景。

  1. 创建 Presentation 类的实例。
  2. 将幻灯片的 BackgroundType 设置为 OwnBackground。
  3. 将幻灯片背景的 FillType 设置为 Gradient。
  4. 在 FillFormat 上使用 getGradientFormat 方法配置所需的渐变设置。
  5. 保存修改后的演示文稿。

以下 Python 示例演示如何将渐变颜色设置为幻灯片的背景:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import BackgroundType, FillType, Presentation, SaveFormat, TileFlip
from java.awt import Color

# 创建 Presentation 类的实例。
presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    # 对背景应用渐变效果。
    slide.getBackground().setType(BackgroundType.OwnBackground)
    slide.getBackground().getFillFormat().setFillType(FillType.Gradient)

    gradient_format = slide.getBackground().getFillFormat().getGradientFormat()
    gradient_format.setTileFlip(TileFlip.FlipBoth)

    # 添加渐变颜色。若无渐变停止点,背景将回退到默认的黑白渐变。
    gradient_format.getGradientStops().add(0.0, Color.CYAN)
    gradient_format.getGradientStops().add(1.0, Color.BLUE)

    # 将演示文稿保存到磁盘。
    presentation.save("GradientBackground.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

将图像设置为幻灯片背景

除了纯色和渐变填充,Aspose.Slides 还允许您使用图像作为幻灯片背景。

  1. 创建 Presentation 类的实例。
  2. 将幻灯片的 BackgroundType 设置为 OwnBackground。
  3. 将幻灯片背景的 FillType 设置为 Picture。
  4. 加载您想用作幻灯片背景的图像。
  5. 将图像添加到演示文稿的图像集合中。
  6. 在 FillFormat 上使用 getPictureFillFormat 方法将图像分配为背景。
  7. 保存修改后的演示文稿。

以下 Python 示例演示如何将图像设置为幻灯片的背景:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import BackgroundType, FillType, Images, PictureFillMode, Presentation, SaveFormat

# 创建 Presentation 类的实例。
presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    # 设置背景图像属性。
    slide.getBackground().setType(BackgroundType.OwnBackground)
    slide.getBackground().getFillFormat().setFillType(FillType.Picture)
    slide.getBackground().getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch)

    # 加载图像。
    image = Images.fromFile("Tulips.jpg")
    # 将图像添加到演示文稿的图像集合中。
    presentation_image = presentation.getImages().addImage(image)
    image.dispose()

    slide.getBackground().getFillFormat().getPictureFillFormat().getPicture().setImage(presentation_image)

    # 将演示文稿保存到磁盘。
    presentation.save("ImageAsBackground.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

以下代码示例演示如何将背景填充类型设置为平铺图片并修改平铺属性:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import BackgroundType, FillType, Images, PictureFillMode, Presentation, RectangleAlignment, SaveFormat, TileFlip

presentation = Presentation()
try:
    first_slide = presentation.getSlides().get_Item(0)

    background = first_slide.getBackground()

    background.setType(BackgroundType.OwnBackground)
    background.getFillFormat().setFillType(FillType.Picture)

    new_image = Images.fromFile("image.png")
    presentation_image = presentation.getImages().addImage(new_image)
    new_image.dispose()

    # 设置用于背景填充的图像。
    background_picture_fill_format = background.getFillFormat().getPictureFillFormat()
    background_picture_fill_format.getPicture().setImage(presentation_image)

    # 将图片填充模式设为平铺并调整平铺属性。
    background_picture_fill_format.setPictureFillMode(PictureFillMode.Tile)
    background_picture_fill_format.setTileOffsetX(15.0)
    background_picture_fill_format.setTileOffsetY(15.0)
    background_picture_fill_format.setTileScaleX(46.0)
    background_picture_fill_format.setTileScaleY(87.0)
    background_picture_fill_format.setTileAlignment(RectangleAlignment.Center)
    background_picture_fill_format.setTileFlip(TileFlip.FlipY)

    presentation.save("TileBackground.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

更改背景图像透明度

您可能需要调整幻灯片背景图像的透明度,以突出幻灯片内容。以下 Python 代码演示如何更改幻灯片背景图像的透明度:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AlphaModulateFixed, Presentation, SaveFormat

transparency_value = 30  # 例如。

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    # 获取图片变换操作的集合。
    image_transform = slide.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImageTransform()

    # 查找已有的固定百分比透明度效果。
    transparency_operation = None
    for operation in image_transform:
        if isinstance(operation, AlphaModulateFixed):
            transparency_operation = operation
            break

    # 设置新的透明度值。
    if transparency_operation is None:
        image_transform.addAlphaModulateFixedEffect(100 - transparency_value)
    else:
        transparency_operation.setAmount(100 - transparency_value)

    presentation.save("output.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

获取幻灯片背景值

Aspose.Slides 允许您使用 Background 上的 getEffective 方法检索幻灯片的有效背景值。返回的数据展示了有效的填充和效果格式。

使用 BaseSlide 类的 getBackground 方法,您可以获取幻灯片的背景。

以下 Python 示例演示如何获取幻灯片的有效背景值:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, Presentation

# 创建 Presentation 类的实例。
presentation = Presentation("Sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    # 检索有效的背景,考虑母版、布局和主题。
    effective_background = slide.getBackground().getEffective()

    if effective_background.getFillFormat().getFillType() == FillType.Solid:
        print("Fill color:", effective_background.getFillFormat().getSolidFillColor())
    else:
        print("Fill type:", effective_background.getFillFormat().getFillType())
finally:
    presentation.dispose()

常见问题

我可以重置自定义背景并恢复主题/布局背景吗?

是的。移除幻灯片的自定义填充后,背景将再次从相应的 layout/master 幻灯片继承(即 theme background)。

如果我以后更改演示文稿的主题,背景会怎样?

如果幻灯片拥有自己的填充,则保持不变。如果背景是从 layout/master 继承的,则会更新以匹配 new theme。