Criar e Aplicar Efeitos WordArt em PHP
Visão geral
Os efeitos WordArt permitem adicionar texto estilizado e visualmente atraente às suas apresentações do PowerPoint. Com Aspose.Slides, desenvolvedores podem criar, personalizar e gerenciar WordArt programaticamente, assim como no Microsoft PowerPoint — sem necessidade de ter o Office instalado. Este artigo fornece uma visão geral sobre como trabalhar com WordArt, incluindo como aplicar transformações de texto, estilos de preenchimento, contornos, sombras e outras opções de formatação para tornar o conteúdo da sua apresentação mais expressivo e envolvente. O WordArt permite tratar o texto como um objeto gráfico. Consiste em efeitos ou modificações especiais aplicadas ao texto para torná‑lo mais atrativo ou perceptível.
Criar um modelo WordArt simples e aplicá‑lo ao texto
Usando Aspose.Slides
Primeiro, criamos um texto simples usando este código PHP:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
$textFrame = $autoShape->getTextFrame();
$portion = $textFrame->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$portion->setText("Aspose.Slides");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Agora, definimos a altura da fonte do texto para um valor maior, de modo que o efeito fique mais perceptível, através deste código:
$fontData = new FontData("Arial Black");
$portion->getPortionFormat()->setLatinFont($fontData);
$portion->getPortionFormat()->setFontHeight(36);
Usando Microsoft PowerPoint
Acesse o menu de efeitos WordArt no Microsoft PowerPoint:

No painel à direita, você pode escolher um efeito WordArt pré‑definido. No painel à esquerda, pode especificar as configurações para um novo WordArt.
Estes são alguns dos parâmetros ou opções disponíveis:

Usando Aspose.Slides
Aqui, aplicamos a cor de padrão SmallGrid ao texto e adicionamos um contorno preto de largura 1 usando este código:
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Pattern);
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getForeColor()->setColor(java("java.awt.Color")->ORANGE);
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getBackColor()->setColor(java("java.awt.Color")->WHITE);
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->setPatternStyle(PatternStyle->SmallGrid);
$portion->getPortionFormat()->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
O texto resultante:

Aplicar outros efeitos WordArt
Usando Microsoft PowerPoint
Pela interface do programa, você pode aplicar esses efeitos a um texto, bloco de texto, forma ou elemento similar:

Por exemplo, os efeitos Sombra, Reflexo e Brilho podem ser aplicados a um texto; os efeitos Formato 3D e Rotação 3D podem ser aplicados a um bloco de texto; a propriedade Borda Suave pode ser aplicada a um Objeto Forma (ela ainda tem efeito quando nenhuma propriedade Formato 3D está definida).
Aplicar efeitos de sombra
Aqui, pretendemos definir as propriedades relacionadas apenas ao texto. Aplicamos o efeito de sombra ao texto usando este código:
$portion->getPortionFormat()->getEffectFormat()->enableOuterShadowEffect();
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->getShadowColor()->setColor(java("java.awt.Color")->BLACK);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setScaleHorizontal(100);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setScaleVertical(65);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setBlurRadius(4.73);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setDirection(230);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setDistance(2);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setSkewHorizontal(30);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->setSkewVertical(0);
$portion->getPortionFormat()->getEffectFormat()->getOuterShadowEffect()->getShadowColor()->getColorTransform()->add(ColorTransformOperation->SetAlpha, 0.32);
A API Aspose.Slides oferece três tipos de sombras: OuterShadow, InnerShadow e PresetShadow.
Com PresetShadow, você pode aplicar uma sombra a um texto (usando valores predefinidos).
Usando Microsoft PowerPoint
No PowerPoint, você pode usar um tipo de sombra. Veja um exemplo:

Usando Aspose.Slides
O Aspose.Slides realmente permite aplicar dois tipos de sombras ao mesmo tempo: InnerShadow e PresetShadow.
Observações:
- Quando OuterShadow e PresetShadow são usados juntos, somente o efeito OuterShadow é aplicado.
- Se OuterShadow e InnerShadow forem usados simultaneamente, o efeito resultante ou aplicado depende da versão do PowerPoint. Por exemplo, no PowerPoint 2013, o efeito é duplicado. Mas no PowerPoint 2007, o efeito OuterShadow é aplicado.
Aplicar efeitos de reflexo ao texto
Adicionamos reflexo ao texto através deste exemplo de código:
$portion->getPortionFormat()->getEffectFormat()->enableReflectionEffect();
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setBlurRadius(0.5);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setDistance(4.72);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setStartPosAlpha(0.0);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setEndPosAlpha(60.0);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setDirection(90);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setScaleHorizontal(100);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setScaleVertical(-100);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setStartReflectionOpacity(60.0);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setEndReflectionOpacity(0.9);
$portion->getPortionFormat()->getEffectFormat()->getReflectionEffect()->setRectangleAlign(RectangleAlignment->BottomLeft);
Aplicar efeitos de brilho ao texto
Aplicamos o efeito de brilho ao texto para que ele se destaque usando este código:
$portion->getPortionFormat()->getEffectFormat()->enableGlowEffect();
$portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->getColor()->setR(255);
$portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->getColor()->getColorTransform()->add(ColorTransformOperation->SetAlpha, 0.54);
$portion->getPortionFormat()->getEffectFormat()->getGlowEffect()->setRadius(7);
O resultado da operação:

Usar transformações no WordArt
Utilizamos a propriedade Transform (inata a todo o bloco de texto) através deste código:
$textFrame->getTextFrameFormat()->setTransform(TextShapeType::ArchUpPour);
O resultado:

Usando PowerPoint
Para acessar os tipos de transformação predefinidos, navegue até: Format -> TextEffect -> Transform
Usando Aspose.Slides
Para selecionar um tipo de transformação, use o enum TextShapeType.
Aplicar efeitos 3D ao texto e às formas
Definimos um efeito 3D a uma forma de texto usando este código de exemplo:
$autoShape->getThreeDFormat()->getBevelBottom()->setBevelType(BevelPresetType::Circle);
$autoShape->getThreeDFormat()->getBevelBottom()->setHeight(10.5);
$autoShape->getThreeDFormat()->getBevelBottom()->setWidth(10.5);
$autoShape->getThreeDFormat()->getBevelTop()->setBevelType(BevelPresetType::Circle);
$autoShape->getThreeDFormat()->getBevelTop()->setHeight(12.5);
$autoShape->getThreeDFormat()->getBevelTop()->setWidth(11);
$autoShape->getThreeDFormat()->getExtrusionColor()->setColor(java("java.awt.Color")->ORANGE);
$autoShape->getThreeDFormat()->setExtrusionHeight(6);
$autoShape->getThreeDFormat()->getContourColor()->setColor(java("java.awt.Color")->RED);
$autoShape->getThreeDFormat()->setContourWidth(1.5);
$autoShape->getThreeDFormat()->setDepth(3);
$autoShape->getThreeDFormat()->setMaterial(MaterialPresetType::Plastic);
$autoShape->getThreeDFormat()->getLightRig()->setDirection(LightingDirection::Top);
$autoShape->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);
$autoShape->getThreeDFormat()->getLightRig()->setRotation(0, 0, 40);
$autoShape->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::PerspectiveContrastingRightFacing);
O texto resultante e sua forma:

Aplicamos um efeito 3D ao texto com este código PHP:
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setBevelType(BevelPresetType::Circle);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setHeight(3.5);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelBottom()->setWidth(3.5);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setBevelType(BevelPresetType::Circle);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setHeight(4);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getBevelTop()->setWidth(4);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getExtrusionColor()->setColor(java("java.awt.Color")->ORANGE);
$textFrame->getTextFrameFormat()->getThreeDFormat()->setExtrusionHeight(6);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getContourColor()->setColor(java("java.awt.Color")->RED);
$textFrame->getTextFrameFormat()->getThreeDFormat()->setContourWidth(1.5);
$textFrame->getTextFrameFormat()->getThreeDFormat()->setDepth(3);
$textFrame->getTextFrameFormat()->getThreeDFormat()->setMaterial(MaterialPresetType::Plastic);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setDirection(LightingDirection::Top);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getLightRig()->setRotation(0, 0, 40);
$textFrame->getTextFrameFormat()->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::PerspectiveContrastingRightFacing);
O resultado da operação:

A aplicação de efeitos 3D a textos ou suas formas e as interações entre os efeitos baseiam‑se em determinadas regras.
Considere uma cena para um texto e a forma que contém esse texto. O efeito 3D contém a representação do objeto 3D e a cena na qual o objeto foi colocado.
- Quando a cena está definida tanto para a figura quanto para o texto, a cena da figura tem prioridade maior — a cena do texto é ignorada.
- Quando a figura não tem sua própria cena, mas possui representação 3D, a cena do texto é usada.
- Caso contrário — quando a forma originalmente não tem efeito 3D — a forma permanece plana e o efeito 3D é aplicado apenas ao texto.
Essas descrições estão relacionadas aos métodos ThreeDFormat.getLightRig() e ThreeDFormat.getCamera().
Aplicar efeitos de sombra externa ao texto
O Aspose.Slides for PHP via Java fornece as classes OuterShadow e InnerShadow que permitem aplicar efeitos de sombra a um texto contido em um TextFrame. Siga estas etapas:
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide usando seu índice.
- Adicione uma AutoShape do tipo Retângulo ao slide.
- Acesse o TextFrame associado à AutoShape.
- Defina o FillType da AutoShape como NoFill.
- Instancie a classe OuterShadow.
- Defina o BlurRadius da sombra.
- Defina a Direction da sombra.
- Defina a Distance da sombra.
- Defina o RectanglelAlign como TopLeft.
- Defina o PresetColor da sombra como Black.
- Grave a apresentação como um arquivo PPTX.
Este código de exemplo — uma implementação das etapas acima — demonstra como aplicar o efeito de sombra externa a um texto:
$pres = new Presentation();
try {
# Obter referência do slide
$sld = $pres->getSlides()->get_Item(0);
# Adicionar um AutoShape do tipo Retângulo
$ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);
# Adicionar TextFrame ao Retângulo
$ashp->addTextFrame("Aspose TextBox");
# Desativar preenchimento da forma caso queiramos obter sombra do texto
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# Adicionar sombra externa e definir todos os parâmetros necessários
$ashp->getEffectFormat()->enableOuterShadowEffect();
$shadow = $ashp->getEffectFormat()->getOuterShadowEffect();
$shadow->setBlurRadius(4.0);
$shadow->setDirection(45);
$shadow->setDistance(3);
$shadow->setRectangleAlign(RectangleAlignment->TopLeft);
$shadow->getShadowColor()->setPresetColor(PresetColor->Black);
# Salvar a apresentação no disco
$pres->save("pres_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Aplicar efeitos de sombra interna às formas
Siga estas etapas:
- Crie uma instância da classe Presentation.
- Obtenha a referência do slide.
- Adicione uma AutoShape do tipo Retângulo.
- Habilite InnerShadowEffect.
- Defina todos os parâmetros necessários.
- Defina o ColorType como Scheme.
- Defina a Scheme Color.
- Grave a apresentação como um arquivo PPTX.
Este código de exemplo (baseado nas etapas acima) mostra como adicionar um conector entre duas formas:
$pres = new Presentation();
try {
# Obter referência do slide
$slide = $pres->getSlides()->get_Item(0);
# Adicionar um AutoShape do tipo Retângulo
$ashp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 400, 300);
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# Adicionar TextFrame ao Retângulo
$ashp->addTextFrame("Aspose TextBox");
$port = $ashp->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$pf = $port->getPortionFormat();
$pf->setFontHeight(50);
# Habilitar InnerShadowEffect
$ef = $pf->getEffectFormat();
$ef->enableInnerShadowEffect();
# Definir todos os parâmetros necessários
$ef->getInnerShadowEffect()->setBlurRadius(8.0);
$ef->getInnerShadowEffect()->setDirection(90.0);
$ef->getInnerShadowEffect()->setDistance(6.0);
$ef->getInnerShadowEffect()->getShadowColor()->setB(189);
# Definir ColorType como Scheme
$ef->getInnerShadowEffect()->getShadowColor()->setColorType(ColorType::Scheme);
# Definir Cor do Esquema
$ef->getInnerShadowEffect()->getShadowColor()->setSchemeColor(SchemeColor->Accent1);
# Salvar a apresentação
$pres->save("WordArt_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Perguntas frequentes
Posso usar efeitos WordArt com diferentes fontes ou scripts (por exemplo, árabe, chinês)?
Sim, o Aspose.Slides oferece suporte a Unicode e funciona com todas as principais fontes e scripts. Os efeitos WordArt, como sombra, preenchimento e contorno, podem ser aplicados independentemente do idioma, embora a disponibilidade da fonte e a renderização possam depender das fontes instaladas no sistema.
Posso aplicar efeitos WordArt a elementos do slide mestre?
Sim, você pode aplicar efeitos WordArt a formas em slides mestres, incluindo marcadores de título, rodapés ou texto de fundo. As alterações feitas no layout mestre serão refletidas em todos os slides associados.
Os efeitos WordArt afetam o tamanho do arquivo da apresentação?
Um pouco. Efeitos WordArt como sombras, brilhos e preenchimentos em degradê podem aumentar ligeiramente o tamanho do arquivo devido ao metadado de formatação adicional, mas a diferença costuma ser insignificante.
Posso visualizar o resultado dos efeitos WordArt sem salvar a apresentação?
Sim, você pode renderizar slides contendo WordArt como imagens (por exemplo, PNG, JPEG) usando o método getImage das classes Shape ou Slide. Isso permite pré‑visualizar o resultado em memória ou na tela antes de salvar ou exportar a apresentação completa.