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:

todo:image_alt_text

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:

todo:image_alt_text

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:

todo:image_alt_text

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:

todo:image_alt_text

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:

todo:image_alt_text

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:

todo:image_alt_text

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:

todo:image_alt_text

PowerPoint használatával

Az előre definiált transformációkhoz a következő úton juthat el: FormátumSzövegeffektusTransformá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:

todo:image_alt_text

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:

todo:image_alt_text

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:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be a diára mutató referenciát az index alapján.
  3. Adjon hozzá egy Rectangle típusú AutoShape‑t a diára.
  4. Hozzáférés a AutoShape‑hez tartozó TextFrame‑hez.
  5. Állítsa be az AutoShape FillType‑ját NoFill‑ra.
  6. Hozzon létre egy OuterShadow példányt.
  7. Állítsa be az árnyék BlurRadius‑át.
  8. Állítsa be az árnyék Direction‑ját.
  9. Állítsa be az árnyék Distance‑át.
  10. Állítsa be a RectanglelAlign‑t TopLeft‑ra.
  11. Állítsa be a PresetColor‑t Black‑re.
  12. Í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:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be a diára mutató referenciát.
  3. Adjon hozzá egy Rectangle típusú AutoShape‑t.
  4. Engedélyezze az InnerShadowEffect‑et.
  5. Állítsa be az összes szükséges paramétert.
  6. Állítsa be a ColorType‑ot Scheme‑re.
  7. Állítsa be a Scheme Color‑t.
  8. Í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.