ایجاد و اعمال اثرات WordArt در PHP
بازنگری
اثرات WordArt به شما امکان میدهند متنهای زیبا و استایلدار را به ارائههای PowerPoint خود اضافه کنید. با Aspose.Slides، توسعهدهندگان میتوانند بهصورت برنامهنویسی WordArt را ایجاد، سفارشیسازی و مدیریت کنند، دقیقاً مانند Microsoft PowerPoint—بدون نیاز به نصب Office. این مقاله نگاهی کلی به کار با WordArt ارائه میدهد، شامل نحوه اعمال تبدیلهای متنی، سبکهای پر، خطوط پیرامون، سایهها و سایر گزینههای قالببندی برای جذابتر و بیانگرتر شدن محتوای ارائه شما. WordArt به شما اجازه میدهد متن را بهعنوان یک شی گرافیکی در نظر بگیرید. این اثرها یا تغییرات ویژهای هستند که بر متن اعمال میشوند تا جذابتر یا قابلتوجهتر شود.
ایجاد یک الگوی ساده WordArt و اعمال آن بر متن
با استفاده از Aspose.Slides
در ابتدا، با این کد 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();
}
}
حالا، ارتفاع فونت متن را به مقادیر بزرگتر تنظیم میکنیم تا اثر واضحتر باشد:
$fontData = new FontData("Arial Black");
$portion->getPortionFormat()->setLatinFont($fontData);
$portion->getPortionFormat()->setFontHeight(36);
با استفاده از Microsoft PowerPoint
به منوی اثرات WordArt در Microsoft PowerPoint بروید:

از منوی سمت راست میتوانید یک اثر WordArt پیشتعریفشده را انتخاب کنید. از منوی سمت چپ میتوانید تنظیمات یک WordArt جدید را مشخص کنید.
برخی از پارامترها یا گزینههای موجود:

با استفاده از Aspose.Slides
در اینجا، الگوی رنگی SmallGrid را به متن اعمال میکنیم و با این کد یک حاشیهٔ متن سیاه با عرض 1 اضافه میکنیم:
$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);
متن حاصل:

اعمال دیگر اثرات WordArt
با استفاده از Microsoft PowerPoint
از رابط برنامه میتوانید این اثرات را بر متن، بلوک متن، شکل یا عنصر مشابهی اعمال کنید:

به عنوان مثال، اثرات Shadow، Reflection و Glow میتوانند بر متن اعمال شوند؛ اثرات 3D Format و 3D Rotation میتوانند بر بلوک متن اعمال شوند؛ ویژگی Soft Edges میتواند بر یک Shape Object اعمال شود (یک اثر حتی زمانی که خاصیت 3D Format تنظیم نشده باشد، دارد).
اعمال اثرات سایه
در اینجا قصد داریم خصوصیات مربوط به فقط متن را تنظیم کنیم. اثر سایه را با این کد بر متن اعمال میکنیم:
$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);
API Aspose.Slides از سه نوع سایه پشتیبانی میکند: OuterShadow، InnerShadow و PresetShadow.
با PresetShadow میتوانید سایهای برای متن اعمال کنید (با استفاده از مقادیر پیشتعریفشده).
با استفاده از Microsoft PowerPoint
در PowerPoint میتوانید از یک نوع سایه استفاده کنید. نمونهای در زیر آمده است:

با استفاده از Aspose.Slides
Aspose.Slides در واقع به شما اجازه میدهد دو نوع سایه را همزمان اعمال کنید: InnerShadow و PresetShadow.
نکات:
- وقتی OuterShadow و PresetShadow با هم استفاده شوند، فقط اثر OuterShadow اعمال میشود.
- اگر OuterShadow و InnerShadow همزمان استفاده شوند، اثر نهایی یا اعمالشده به نسخهٔ PowerPoint بستگی دارد. به عنوان مثال، در PowerPoint 2013 اثر دو برابر میشود؛ اما در PowerPoint 2007، اثر OuterShadow اعمال میشود.
اعمال اثرات بازتاب بر متن
با این نمونه کد نمایش را به متن اضافه میکنیم:
$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);
اعمال اثرات درخشندگی (Glow) بر متن
با این کد اثر درخشندگی را بر متن اعمال میکنیم تا بدرخشد یا متمایز شود:
$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);
نتیجه عملیات:

استفاده از تبدیلات در WordArt
با این کد از خصوصیت Transform (که به کل بلوک متن اعمال میشود) استفاده میکنیم:
$textFrame->getTextFrameFormat()->setTransform(TextShapeType::ArchUpPour);
نتیجه:

با استفاده از PowerPoint
برای دسترسی به انواع تبدیلات پیشتعریفشده، از مسیر زیر استفاده کنید: Format -> TextEffect -> Transform
با استفاده از Aspose.Slides
برای انتخاب نوع تبدیلات، از enum TextShapeType استفاده کنید.
اعمال اثرات 3D بر متن و اشکال
با این نمونه کد یک اثر 3D بر شکل متن اعمال میکنیم:
$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);
نتیجهٔ متن و شکل آن:

اثر 3D را بر متن با این کد 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);
نتیجهٔ عملیات:

اعمال اثرات 3D بر متن یا شکلهای آن و تعامل بین اثرات بر اساس قواعد خاصی انجام میشود.
یک صحنه برای متن و شکلی که آن متن را دربرمیگیرد در نظر بگیرید. اثر 3D شامل نمایش شی 3D و صحنهای است که شی در آن قرار میگیرد.
- وقتی صحنه برای هر دو شکل و متن تنظیم شده باشد، اولویت به صحنهٔ شکل میرسد—صحنهٔ متن نادیده گرفته میشود.
- وقتی شکل صحنهٔ خود را ندارد اما نمایش 3D دارد، صحنهٔ متن استفاده میشود.
- در غیر این صورت—وقتی شکل در ابتدا هیچ اثر 3D ندارد—شکل مسطح است و اثر 3D فقط بر متن اعمال میشود.
این توضیحات به متدهای ThreeDFormat.getLightRig() و ThreeDFormat.getCamera() مرتبط هستند.
اعمال اثر Outer Shadow بر متن
Aspose.Slides برای PHP via Java کلاسهای OuterShadow و InnerShadow را فراهم میکند که به شما اجازه میدهند اثرات سایه را بر متنی که توسط TextFrame حمل میشود، اعمال کنید. مراحل زیر را دنبال کنید:
- یک نمونه از کلاس Presentation ایجاد کنید.
- مرجع یک اسلاید را با استفاده از اندیس آن دریافت کنید.
- یک AutoShape از نوع Rectangle به اسلاید اضافه کنید.
- به TextFrame مرتبط با AutoShape دسترسی پیدا کنید.
- FillType خودکارشکل را به NoFill تنظیم کنید.
- کلاس OuterShadow را نمونهسازی کنید.
- BlurRadius سایه را تنظیم کنید.
- Direction سایه را تنظیم کنید.
- Distance سایه را تنظیم کنید.
- RectanglelAlign را به TopLeft تنظیم کنید.
- PresetColor سایه را به Black تنظیم کنید.
- ارائه را به عنوان یک فایل PPTX نوشتن کنید.
این کد نمونه —پیادهسازی مراحل فوق— نشان میدهد چگونه اثر Outer Shadow را به متن اعمال کنید:
$pres = new Presentation();
try {
# دریافت ارجاع اسلاید
$sld = $pres->getSlides()->get_Item(0);
# اضافه کردن AutoShape از نوع Rectangle
$ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);
# افزودن TextFrame به Rectangle
$ashp->addTextFrame("Aspose TextBox");
# غیرفعال کردن پر کردن شکل در صورتی که میخواهیم سایه متن را دریافت کنیم
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# اضافه کردن سایه بیرونی و تنظیم تمام پارامترهای لازم
$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);
# نوشتن ارائه به دیسک
$pres->save("pres_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
اعمال اثر Inner Shadow بر اشکال
مراحل زیر را دنبال کنید:
- یک نمونه از کلاس Presentation ایجاد کنید.
- مرجع اسلاید را دریافت کنید.
- یک AutoShape از نوع Rectangle اضافه کنید.
- InnerShadowEffect را فعال کنید.
- تمام پارامترهای لازم را تنظیم کنید.
- ColorType را به Scheme تنظیم کنید.
- رنگ Scheme را تنظیم کنید.
- ارائه را بهصورت یک فایل PPTX نوشتن کنید.
این کد نمونه (بر پایهٔ مراحل بالا) نشان میدهد چگونه یک connector بین دو شکل اضافه کنید:
$pres = new Presentation();
try {
# دریافت ارجاع اسلاید
$slide = $pres->getSlides()->get_Item(0);
# اضافه کردن AutoShape از نوع Rectangle
$ashp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 75, 400, 300);
$ashp->getFillFormat()->setFillType(FillType::NoFill);
# افزودن TextFrame به Rectangle
$ashp->addTextFrame("Aspose TextBox");
$port = $ashp->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$pf = $port->getPortionFormat();
$pf->setFontHeight(50);
# فعالسازی InnerShadowEffect
$ef = $pf->getEffectFormat();
$ef->enableInnerShadowEffect();
# تنظیم تمام پارامترهای لازم
$ef->getInnerShadowEffect()->setBlurRadius(8.0);
$ef->getInnerShadowEffect()->setDirection(90.0);
$ef->getInnerShadowEffect()->setDistance(6.0);
$ef->getInnerShadowEffect()->getShadowColor()->setB(189);
# تنظیم ColorType به عنوان Scheme
$ef->getInnerShadowEffect()->getShadowColor()->setColorType(ColorType::Scheme);
# تنظیم Scheme Color
$ef->getInnerShadowEffect()->getShadowColor()->setSchemeColor(SchemeColor->Accent1);
# ذخیره ارائه
$pres->save("WordArt_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
سؤالات متداول
آیا میتوانم اثرات WordArt را با فونتها یا اسکریپتهای مختلف (مانند عربی، چینی) استفاده کنم؟
بله، Aspose.Slides از یونیکد پشتیبانی میکند و با تمام فونتها و اسکریپتهای اصلی کار میکند. اثرات WordArt مانند سایه، پر و خط بیرونی میتوانند بدون توجه به زبان اعمال شوند، اگرچه در دسترس بودن فونت و رندرینگ ممکن است به فونتهای سیستم وابسته باشد.
آیا میتوانم اثرات WordArt را بر عناصر اسلاید مستر اعمال کنم؟
بله، میتوانید اثرات WordArt را بر اشکال موجود در اسلایدهای مستر، شامل فضاهای نگهدارندهٔ عنوان، فوترها یا متن پسزمینه اعمال کنید. تغییرات اعمالشده بر طرح مستر در تمام اسلایدهای مرتبط بازتاب خواهد یافت.
آیا اثرات WordArt بر حجم فایل ارائه تاثیر میگذارند؟
بهصورت جزئی. اثراتی مانند سایه، درخشندگی و پرهای گرادیان ممکن است بهدلیل اضافه شدن متادیتای قالببندی، حجم فایل را کمی افزایش دهند، اما تفاوت معمولاً ناچیز است.
آیا میتوانم نتیجهٔ اثرات WordArt را بدون ذخیرهسازی ارائه پیشنمایش کنم؟
بله، میتوانید اسلایدهای شامل WordArt را به تصاویر (مثلاً PNG، JPEG) رندر کنید با استفاده از متد getImage از کلاسهای Shape یا Slide. این کار به شما امکان میدهد نتیجه را در‑حافظه یا روی صفحه قبل از ذخیره یا خروجیگیری از کل ارائه پیشنمایش کنید.