WordArt hatások létrehozása és alkalmazása PHP-ben
Áttekintés
A WordArt‑effektek lehetővé teszik, hogy vizuálisan vonzó, stilizált szöveget adjunk PowerPoint‑prezentációinkhoz. Az Aspose.Slides‑el a fejlesztők programozottan hozhatnak létre, testreszabhatnak és kezelhetnek WordArt‑ot, pont úgy, mint a Microsoft PowerPoint‑ben – anélkül, hogy az Office‑ot telepíteni kellene. Ez a cikk áttekintést nyújt a WordArt használatáról, beleértve a szövegátalakítások, kitöltési stílusok, vonalrajzok, árnyékok és egyéb formázási lehetőségek alkalmazását, hogy a prezentáció tartalma kifejezőbb és figyelemfelkeltőbb legyen. A WordArt lehetővé teszi, hogy a szöveget grafikus objektumként kezeljük. Olyan effektusokból vagy speciális módosításokból áll, amelyeket a szövegre alkalmaznak, hogy az vonzóbb vagy feltűnőbb legyen.
Egyszerű WordArt sablon létrehozása és alkalmazása szövegre
Az Aspose.Slides használatával
Először egy egyszerű szöveget hozunk létre a következő PHP‑kóddal:
$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();
}
}
Ezután a szöveg betűméretét nagyobbra állítjuk, hogy az effektus jobban észrevehető legyen, a következő kóddal:
$fontData = new FontData("Arial Black");
$portion->getPortionFormat()->setLatinFont($fontData);
$portion->getPortionFormat()->setFontHeight(36);
A Microsoft PowerPoint használatával
Nyissa meg a WordArt‑effektek menüt a Microsoft PowerPoint‑ben:

A jobb oldali menüből választhat előre definiált WordArt‑effektust. A bal oldali menüből adhatja meg az újszerű WordArt beállításait.
Az elérhető paraméterek vagy lehetőségek néhány példája:

Az Aspose.Slides használatával
Itt a SmallGrid minta színét alkalmazzuk a szövegre, és egy 1‑pixeles fekete szövegszegélyt adunk hozzá a következő kóddal:
$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);
Az eredményül kapott szöveg:

Egyéb WordArt‑effektek alkalmazása
A Microsoft PowerPoint használatával
A program felületéről ezeket az effektusokat alkalmazhatja egy szövegre, szövegtömbre, alakzatra vagy hasonló elemre:

Például az Árnyék, Tükörképezés és Ragyogás effektusok szövegre, a 3D Formátum és 3D Rotáció effektusok szövegtömbre, a Lágy szegély tulajdonság alakzatobjektumra (akár akkor is hat, ha nincs 3D Formátum beállítva) alkalmazható.
Árnyék‑effektusok alkalmazása
Itt csak a szövegre vonatkozó tulajdonságokat állítjuk be. Az árnyék‑effektust a szövegre a következő kóddal alkalmazzuk:
$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);
Az Aspose.Slides API három típusú árnyékot támogat: OuterShadow, InnerShadow és PresetShadow.
A PresetShadow‑dal előre definiált értékekkel alkalmazhat árnyékot a szövegre.
A Microsoft PowerPoint használatával
A PowerPointben egyetlen árnyék típus áll rendelkezésre. Íme egy példa:

Az Aspose.Slides használatával
Az Aspose.Slides valójában egyszerre két árnyék típus alkalmazását teszi lehetővé: InnerShadow és PresetShadow.
Megjegyzések:
- Ha OuterShadow és PresetShadow együtt van használva, csak az OuterShadow‑effektus lesz alkalmazva.
- Ha OuterShadow és InnerShadow egyszerre van használva, a ténylegesen alkalmazott effektus a PowerPoint verziójától függ. Például a PowerPoint 2013‑ban az effektus duplázódik, míg a PowerPoint 2007‑ben csak az OuterShadow‑t alkalmazzák.
Tükrözési effektusok alkalmazása szövegre
A következő kódrészlettel adunk megjelenést a szövegnek:
$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);
Ragyogás‑effektusok alkalmazása szövegre
A szöveget a következő kóddal ragyogóvá vagy kiemelkedővé tesszük:
$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);
Az eredmény:

Transformációk használata a WordArt‑ban
A Transform tulajdonságot (amely az egész szövegtömbre vonatkozik) a következő kóddal alkalmazzuk:
$textFrame->getTextFrameFormat()->setTransform(TextShapeType::ArchUpPour);
Az eredmény:

PowerPoint használatával
Az előre definiált transformációkhoz a következő úton juthat el: Formátum → Szövegeffektus → Transformálás
Az Aspose.Slides használatával
A transformáció típusának kiválasztásához használja a TextShapeType enumerációt.
3D‑effektusok alkalmazása szövegre és alakzatokra
A szövegalakzatra a következő mintakóddal állítunk be 3D‑effektust:
$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);
Az eredményül kapott szöveg és alakzat:

A szövegre 3D‑effektust a következő PHP‑kóddal alkalmazunk:
$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);
Az eredmény:

A 3D‑effektusok szövegre vagy azok alakzataira történő alkalmazása, valamint az effektusok közötti kölcsönhatások meghatározott szabályokon alapulnak.
Képzeljen el egy jelenetet a szöveghez és a szöveget tartalmazó alakzathoz. A 3D‑effektus tartalmazza a 3D‑objektum ábrázolását és a jelenetet, amelyre az objektum helyeződik.
- Ha a jelenet mind a alakzatra, mind a szövegre be van állítva, akkor az alakzat jelenetére nagyobb prioritás jut – a szöveg jelenete figyelmen kívül marad.
- Ha az alakzatnak nincs saját jelenete, de van 3D‑ábrázolása, akkor a szöveg jelenete kerül felhasználásra.
- Ellenkező esetben – ha az alakzat eredetileg nincs 3D‑effektussal – az alakzat sík, és a 3D‑effektus csak a szövegre lesz alkalmazva.
Ezek a leírások kapcsolódnak a ThreeDFormat.getLightRig() és a ThreeDFormat.getCamera() metódusokhoz.
Külső árnyék‑effektusok alkalmazása szövegre
Az Aspose.Slides for PHP via Java a OuterShadow és InnerShadow osztályokat biztosítja, amelyek lehetővé teszik árnyék‑effektusok alkalmazását a TextFrame-hez tartozó szövegre. Kövesse az alábbi lépéseket:
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze be a diára mutató referenciát az index alapján.
- Adjon hozzá egy Rectangle típusú AutoShape‑t a diára.
- Hozzáférés a AutoShape‑hez tartozó TextFrame‑hez.
- Állítsa be az AutoShape FillType‑ját NoFill‑ra.
- Hozzon létre egy OuterShadow példányt.
- Állítsa be az árnyék BlurRadius‑át.
- Állítsa be az árnyék Direction‑ját.
- Állítsa be az árnyék Distance‑át.
- Állítsa be a RectanglelAlign‑t TopLeft‑ra.
- Állítsa be a PresetColor‑t Black‑re.
- Írja ki a prezentációt PPTX fájlként.
Ez a mintakód – a fenti lépések megvalósítása – megmutatja, hogyan alkalmazza a külső árnyék‑effektust egy szövegre:
$pres = new Presentation();
try {
# A dia referenciájának lekérése
$sld = $pres->getSlides()->get_Item(0);
# Rectangle típusú AutoShape hozzáadása
$ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);
# TextFrame hozzáadása a Rectangle-hez
$ashp->addTextFrame("Aspose TextBox");
# Alap alakzat kitöltésének letiltása, ha a szöveg árnyékát szeretnénk
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# Külső árnyék hozzáadása és minden szükséges paraméter beállítása
$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);
# Prezentáció mentése a lemezen
$pres->save("pres_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Belső árnyék‑effektusok alkalmazása alakzatokra
Kövesse az alábbi lépéseket:
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze be a diára mutató referenciát.
- Adjon hozzá egy Rectangle típusú AutoShape‑t.
- Engedélyezze az InnerShadowEffect‑et.
- Állítsa be az összes szükséges paramétert.
- Állítsa be a ColorType‑ot Scheme‑re.
- Állítsa be a Scheme Color‑t.
- Írja ki a prezentációt egy PPTX fájlként.
Ez a mintakód (a fenti lépések alapján) megmutatja, hogyan adjon hozzá egy csatlakozót két alakzat között:
$pres = new Presentation();
try {
# A dia referenciájának lekérése
$slide = $pres->getSlides()->get_Item(0);
# Rectangle típusú AutoShape hozzáadása
$ashp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 400, 300);
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# TextFrame hozzáadása a Rectangle-hez
$ashp->addTextFrame("Aspose TextBox");
$port = $ashp->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$pf = $port->getPortionFormat();
$pf->setFontHeight(50);
# Belső árnyék hatás engedélyezése
$ef = $pf->getEffectFormat();
$ef->enableInnerShadowEffect();
# Az összes szükséges paraméter beállítása
$ef->getInnerShadowEffect()->setBlurRadius(8.0);
$ef->getInnerShadowEffect()->setDirection(90.0);
$ef->getInnerShadowEffect()->setDistance(6.0);
$ef->getInnerShadowEffect()->getShadowColor()->setB(189);
# Szín típusa beállítása Scheme-re
$ef->getInnerShadowEffect()->getShadowColor()->setColorType(ColorType::Scheme);
# Sémaszín beállítása
$ef->getInnerShadowEffect()->getShadowColor()->setSchemeColor(SchemeColor->Accent1);
# Prezentáció mentése
$pres->save("WordArt_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
GYIK
Használhatok‑e WordArt‑effektusokat különböző betűtípusokkal vagy írásrendszerekkel (például arab, kínai)?
Igen, az Aspose.Slides támogatja a Unicode‑ot és minden főbb betűtípussal és írásrendszerrel működik. A WordArt‑effektusok, mint például árnyék, kitöltés és körvonal, nyelvtől függetlenül alkalmazhatók, bár a betűtípus elérhetősége és a renderelés a rendszer betűtípusaitól függhet.
Alkalmazhatok‑e WordArt‑effektusokat a dia master elemeire?
Igen, a WordArt‑effektusokat alkalmazhatja a master diákon lévő alakzatokra, ideértve a cím helyőrzőket, lábléceket vagy háttér‑szöveget. A master elrendezésén végzett módosítások minden kapcsolódó diára kihatnak.
A WordArt‑effektusok befolyásolják a prezentáció fájlméretét?
Enyhén. Az olyan effektek, mint árnyék, ragyogás és színátmenetes kitöltés, kissé növelhetik a fájlméretet a formázási metaadatok hozzáadása miatt, de a különbség általában elhanyagolható.
Előnézhetem a WordArt‑effektusok eredményét anélkül, hogy a prezentációt menteném?
Igen, a WordArt‑ot tartalmazó diákat képekké (például PNG, JPEG) renderelheti a Shape vagy Slide osztály getImage metódusával. Így a teljes prezentáció mentése vagy exportálása előtt memóriában vagy képernyőn előnézheti az eredményt.