Gerenciar fundos de apresentação em PHP

Introdução

Cores sólidas, gradientes e imagens são comumente usados como fundos de slides. Você pode definir o fundo para um slide normal (um único slide) ou um slide mestre (aplicado a vários slides ao mesmo tempo).

PowerPoint background

Definir um Fundo de Cor Sólida para um Slide Normal

Aspose.Slides permite definir uma cor sólida como fundo para um slide específico em uma apresentação — mesmo que a apresentação use um slide mestre. A alteração se aplica somente ao slide selecionado.

  1. Crie uma instância da Presentation class.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Solid.
  4. Use o método getSolidFillColor em FillFormat para especificar a cor de fundo sólida.
  5. Salve a apresentação modificada.

O exemplo PHP a seguir mostra como definir uma cor sólida azul como fundo para um slide normal:

// Crie uma instância da classe Presentation.
$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Defina a cor de fundo do slide como azul.
    $slide->getBackground()->setType(BackgroundType::OwnBackground);
    $slide->getBackground()->getFillFormat()->setFillType(FillType::Solid);
    $slide->getBackground()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    
    // Salve a apresentação no disco.
    $presentation->save("SolidColorBackground.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Definir um Fundo de Cor Sólida para um Slide Mestre

Aspose.Slides permite definir uma cor sólida como fundo para o slide mestre em uma apresentação. O slide mestre atua como um modelo que controla a formatação de todos os slides, portanto, ao escolher uma cor sólida para o fundo do slide mestre, ela será aplicada a cada slide.

  1. Crie uma instância da Presentation class.
  2. Defina o BackgroundType do slide mestre (via getMasters) como OwnBackground.
  3. Defina o FillType do fundo do slide mestre como Solid.
  4. Use o método getSolidFillColor para especificar a cor de fundo sólida.
  5. Salve a apresentação modificada.

O exemplo PHP a seguir mostra como definir uma cor sólida (verde) como fundo para um slide mestre:

// Crie uma instância da classe Presentation.
$presentation = new Presentation();
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);

    // Defina a cor de fundo para o slide Master como Verde Floresta.
    $masterSlide->getBackground()->setType(BackgroundType::OwnBackground);
    $masterSlide->getBackground()->getFillFormat()->setFillType(FillType::Solid);
    $masterSlide->getBackground()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);

    // Salve a apresentação no disco.
    $presentation->save("MasterSlideBackground.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Definir um Fundo de Gradiente para um Slide

Um gradiente é um efeito gráfico criado por uma mudança gradual de cor. Quando usado como fundo de slide, gradientes podem tornar as apresentações mais artísticas e profissionais. Aspose.Slides permite definir uma cor de gradiente como fundo para slides.

  1. Crie uma instância da Presentation class.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Gradient.
  4. Use o método getGradientFormat em FillFormat para configurar as opções de gradiente desejadas.
  5. Salve a apresentação modificada.

O exemplo PHP a seguir mostra como definir uma cor de gradiente como fundo para um slide:

// Crie uma instância da classe Presentation.
$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Aplicar um efeito de gradiente ao fundo.
    $slide->getBackground()->setType(BackgroundType::OwnBackground);
    $slide->getBackground()->getFillFormat()->setFillType(FillType::Gradient);
    $slide->getBackground()->getFillFormat()->getGradientFormat()->setTileFlip(TileFlip::FlipBoth);

    // Salve a apresentação no disco.
    $presentation->save("GradientBackground.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Definir uma Imagem como Fundo de Slide

Além de preenchimentos sólidos e de gradiente, Aspose.Slides permite usar imagens como fundos de slide.

  1. Crie uma instância da Presentation class.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Picture.
  4. Carregue a imagem que deseja usar como fundo do slide.
  5. Adicione a imagem à coleção de imagens da apresentação.
  6. Use o método getPictureFillFormat em FillFormat para atribuir a imagem como fundo.
  7. Salve a apresentação modificada.

O exemplo PHP a seguir mostra como definir uma imagem como fundo para um slide:

// Crie uma instância da classe Presentation.
$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Defina as propriedades da imagem de fundo.
    $slide->getBackground()->setType(BackgroundType::OwnBackground);
    $slide->getBackground()->getFillFormat()->setFillType(FillType::Picture);
    $slide->getBackground()->getFillFormat()->getPictureFillFormat()->setPictureFillMode(PictureFillMode::Stretch);

    // Carregue a imagem.
    $image = Images::fromFile("Tulips.jpg");
    // Adicione a imagem à coleção de imagens da apresentação.
    $ppImage = $presentation->getImages()->addImage($image);
    $image->dispose();

    $slide->getBackground()->getFillFormat()->getPictureFillFormat()->getPicture()->setImage($ppImage);

    // Salve a apresentação no disco.
    $presentation->save("ImageAsBackground.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

O exemplo de código a seguir mostra como definir o tipo de preenchimento de fundo como imagem em mosaico e modificar as propriedades de repetição:

$presentation = new Presentation();
try {
    $firstSlide = $presentation->getSlides()->get_Item(0);

    $background = $firstSlide->getBackground();

    $background->setType(BackgroundType::OwnBackground);
    $background->getFillFormat()->setFillType(FillType::Picture);

    $newImage = Images::fromFile("image.png");
    $ppImage = $presentation->getImages()->addImage($newImage);
    $newImage->dispose();

    // Defina a imagem usada para o preenchimento de fundo.
    $backPictureFillFormat = $background->getFillFormat()->getPictureFillFormat();
    $backPictureFillFormat->getPicture()->setImage($ppImage);

    // Defina o modo de preenchimento da imagem como Mosaico e ajuste as propriedades do mosaico.
    $backPictureFillFormat->setPictureFillMode(PictureFillMode::Tile);
    $backPictureFillFormat->setTileOffsetX(15);
    $backPictureFillFormat->setTileOffsetY(15);
    $backPictureFillFormat->setTileScaleX(46);
    $backPictureFillFormat->setTileScaleY(87);
    $backPictureFillFormat->setTileAlignment(RectangleAlignment::Center);
    $backPictureFillFormat->setTileFlip(TileFlip::FlipY);

    $presentation->save("TileBackground.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Alterar a Transparência da Imagem de Fundo

Você pode querer ajustar a transparência da imagem de fundo de um slide para que o conteúdo do slide se destaque. O código PHP a seguir mostra como alterar a transparência da imagem de fundo de um slide:

$transparencyValue = 30; // Por exemplo.

// Obtenha a coleção de operações de transformação de imagem.
$imageTransform = $slide->getBackground()->getFillFormat()->getPictureFillFormat()->getPicture()->getImageTransform();

// Encontre um efeito de transparência de porcentagem fixa existente.
$transparencyOperation = null;
foreach($imageTransform as $operation) {
    if (java_instanceof($operation, new JavaClass("com.aspose.slides.AlphaModulateFixed"))) {
        $transparencyOperation = $operation;
        break;
    }
}

// Defina o novo valor de transparência.
if (java_is_null($transparencyOperation)) {
    $imageTransform->addAlphaModulateFixedEffect(100 - $transparencyValue);
} else {
    $transparencyOperation->setAmount(100 - $transparencyValue);
}

Obter o Valor de Fundo do Slide

Aspose.Slides fornece a classe BackgroundEffectiveData para recuperar os valores de fundo efetivos de um slide. Essa classe expõe o FillFormat e o EffectFormat efetivos.

Usando o método getBackground da classe BaseSlide, você pode obter o fundo efetivo de um slide.

O exemplo PHP a seguir mostra como obter o valor de fundo efetivo de um slide:

// Crie uma instância da classe Presentation.
$presentation = new Presentation("Sample.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Recupere o fundo efetivo, levando em conta mestre, layout e tema.
    $effBackground = $slide->getBackground()->getEffective();

    if ($effBackground->getFillFormat()->getFillType() == FillType::Solid)
        echo "Fill color: " . $effBackground->getFillFormat()->getSolidFillColor() . "\n";
    else
        echo "Fill type: " . $effBackground->getFillFormat()->getFillType() . "\n";
} finally {
    $presentation->dispose();
}

FAQ

Posso redefinir um fundo personalizado e restaurar o fundo do tema/layout?

Sim. Remova o preenchimento personalizado do slide e o fundo será herdado novamente do slide de layout/mestre correspondente (ou seja, o fundo do tema).

O que acontece com o fundo se eu mudar o tema da apresentação mais tarde?

Se um slide tem seu próprio preenchimento, ele permanecerá inalterado. Se o fundo for herdado do layout/mestre, ele será atualizado para corresponder ao novo tema.