افزودن آبنشان به ارائهها در پایتون
مقدمه
آبنشان در یک ارائه متنی یا تصویری است که بر روی یک اسلاید یا تمام اسلایدهای ارائه اعمال میشود. معمولاً از آبنشان برای نشان دادن اینکه ارائه یک پیشنویس است (مثلاً آبنشان “Draft”)، اینکه شامل اطلاعات محرمانه است (مثلاً آبنشان “Confidential”)، برای مشخص کردن شرکت مالك (مثلاً آبنشان “Company Name”)، برای شناسایی نویسنده ارائه و غیره استفاده میشود. آبنشان به جلوگیری از تخلفات حق تکثیر کمک میکند زیرا نشان میدهد که نباید ارائه کپی شود. آبنشانها هم در فرمتهای PowerPoint و هم OpenOffice استفاده میشوند. در Aspose.Slides میتوانید آبنشان به فرمتهای PowerPoint PPT، PPTX و OpenOffice ODP اضافه کنید.
در Aspose.Slides، روشهای مختلفی برای ایجاد آبنشان در اسناد PowerPoint یا OpenOffice و تغییر طراحی و رفتار آنها وجود دارد. نکته مشترک این است که برای افزودن آبنشان متنی باید از کلاس TextFrame استفاده کنید و برای افزودن آبنشان تصویری از کلاس PictureFrame یا پر کردن یک شکل آبنشان با تصویر استفاده کنید. کلاس PictureFrame از کلاس Shape ارثبری میکند و به شما امکان استفاده از تمام تنظیمات انعطافپذیر شیء شکل را میدهد. از آنجایی که کلاس TextFrame یک شکل نیست و تنظیمات آن محدود است، در یک شیء Shape بسته میشود.
دو روش برای اعمال آبنشان وجود دارد: بر روی یک اسلاید یا بر روی تمام اسلایدهای ارائه. برای اعمال آبنشان به تمام اسلایدها از Slide Master استفاده میشود — آبنشان به Slide Master اضافه میشود، در آنجا بهطور کامل طراحی میشود و به تمام اسلایدها اعمال میشود بدون اینکه اجازه ویرایش آبنشان در اسلایدهای جداگانه تحت تأثیر قرار گیرد.
معمولاً آبنشان برای کاربران دیگر غیرقابل ویرایش در نظر گرفته میشود. برای جلوگیری از ویرایش آبنشان (یا بهتر بگوییم شکل والد آبنشان) Aspose.Slides قابلیت قفل کردن شکل را فراهم میکند. یک شکل خاص میتواند در یک اسلاید عادی یا در Slide Master قفل شود. وقتی شکل آبنشان در Slide Master قفل شود، در تمام اسلایدهای ارائه نیز قفل میماند.
میتوانید برای آبنشان نامی تنظیم کنید تا در آینده، اگر میخواهید آن را حذف کنید، بتوانید با نام آن را در اشکال اسلاید پیدا کنید.
میتوانید آبنشان را به هر شکلی طراحی کنید؛ اما معمولاً ویژگیهای مشترکی در آبنشانها وجود دارد، مانند تراز وسط، چرخش، قرارگیری در جلو و غیره. در مثالهای زیر نحوه استفاده از این ویژگیها را بررسی میکنیم.
آبنشان متنی
افزودن آبنشان متنی به یک اسلاید
برای افزودن آبنشان متنی در PPT، PPTX یا ODP، ابتدا میتوانید یک شکل به اسلاید اضافه کنید، سپس یک فریم متنی به این شکل اضافه کنید. فریم متنی توسط کلاس TextFrame نمایان میشود. این نوع از کلاس از کلاس Shape ارثبری نمیکند که مجموعهٔ وسیعی از خصوصیات برای موقعیتیابی انعطافپذیر آبنشان دارد. بنابراین، شیء TextFrame در یک شیء AutoShape بسته میشود. برای افزودن متن آبنشان به شکل، از متد addTextFrame به شکل زیر استفاده کنید.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
watermark_text = "CONFIDENTIAL"
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_frame = watermark_shape.addTextFrame(watermark_text)
finally:
presentation.dispose()
افزودن آبنشان متنی به یک ارائه
اگر میخواهید آبنشان متنی را به تمام اسلایدهای یک ارائه اضافه کنید (یعنی همه اسلایدها بهصورت همزمان)، آن را به MasterSlide اضافه کنید. بقیه منطق همانند افزودن آبنشان به یک اسلاید است — یک شیء AutoShape ایجاد کنید و سپس با استفاده از متد addTextFrame آبنشان را به آن اضافه کنید.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
watermark_text = "CONFIDENTIAL"
presentation = Presentation()
try:
master_slide = presentation.getMasters().get_Item(0)
watermark_shape = master_slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_frame = watermark_shape.addTextFrame(watermark_text)
finally:
presentation.dispose()
تنظیم شفافیت شکل آبنشان
بهصورت پیشفرض، شکل مستطیل با رنگ پر و رنگ خط تنظیم شده است. خطوط کد زیر شکل را شفاف میکند.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, FillType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_shape.getFillFormat().setFillType(FillType.NoFill)
watermark_shape.getLineFormat().getFillFormat().setFillType(FillType.NoFill)
finally:
presentation.dispose()
تنظیم قلم برای آبنشان متنی
میتوانید قلم متن آبنشان را همانطور که در زیر نشان داده شده است تغییر دهید.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, FontData
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_frame = watermark_shape.addTextFrame("CONFIDENTIAL")
text_format = watermark_frame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat()
font = FontData("Arial")
text_format.setLatinFont(font)
text_format.setFontHeight(50)
finally:
presentation.dispose()
تنظیم رنگ متن آبنشان
برای تنظیم رنگ متن آبنشان از این کد استفاده کنید:
import jpime
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, FillType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_frame = watermark_shape.addTextFrame("CONFIDENTIAL")
alpha, red, green, blue = 150, 200, 200, 200
fill_format = watermark_frame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().getFillFormat()
fill_format.setFillType(FillType.Solid)
color = Color(red, green, blue, alpha)
fill_format.getSolidFillColor().setColor(color)
finally:
presentation.dispose()
مرکز کردن آبنشان متنی
میتوانید آبنشان را در یک اسلاید به مرکز منتقل کنید؛ برای این کار میتوانید کد زیر را اعمال کنید:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
watermark_text = "CONFIDENTIAL"
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
slide_size = presentation.getSlideSize().getSize()
watermark_width = 400
watermark_height = 40
watermark_x = (slide_size.getWidth() - watermark_width) / 2
watermark_y = (slide_size.getHeight() - watermark_height) / 2
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, watermark_x, watermark_y, watermark_width, watermark_height)
watermark_frame = watermark_shape.addTextFrame(watermark_text)
finally:
presentation.dispose()
تصویر زیر نتیجهٔ نهایی را نشان میدهد.

آبنشان تصویری
افزودن آبنشان تصویری به یک ارائه
برای افزودن آبنشان تصویری به اسلایدهای یک ارائه میتوانید مراحل زیر را دنبال کنید:
import jpype
import asposeslides
from pathlib import Path
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType, FillType, PictureFillMode
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
image_data = Path("watermark.png").read_bytes()
image = presentation.getImages().addImage(jpype.JArray(jpype.JByte)(image_data))
watermark_shape.getFillFormat().setFillType(FillType.Picture)
watermark_shape.getFillFormat().getPictureFillFormat().getPicture().setImage(image)
watermark_shape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch)
finally:
presentation.dispose()
قفل کردن آبنشان برای جلوگیری از ویرایش
اگر نیاز باشد از ویرایش آبنشان جلوگیری کنید، از متد AutoShape.getAutoShapeLock بر روی شکل استفاده کنید. با این ویژگی میتوانید شکل را از انتخاب، تغییر اندازه، جابجایی، گروهبندی با عناصر دیگر، قفل کردن متن آن از ویرایش و موارد دیگر محافظت کنید:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
# قفل کردن شکل آبنشان در برابر تغییر.
watermark_shape.getAutoShapeLock().setSelectLocked(True)
watermark_shape.getAutoShapeLock().setSizeLocked(True)
watermark_shape.getAutoShapeLock().setTextLocked(True)
watermark_shape.getAutoShapeLock().setPositionLocked(True)
watermark_shape.getAutoShapeLock().setGroupingLocked(True)
finally:
presentation.dispose()
آوردن آبنشان به جلو
در Aspose.Slides، ترتیب Z اشکال میتواند از طریق متد ShapeCollection.reorder تنظیم شود. برای این کار باید این متد را از مجموعهٔ اشکال اسلاید فراخوانی کنید و مرجع شکل و شماره ترتیب آن را به متد پاس دهید. به این ترتیب میتوانید شکل را به جلو یا به عقب اسلاید منتقل کنید. این ویژگی بهویژه وقتی مفید است که بخواهید آبنشان را در جلوی ارائه قرار دهید:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
shape_count = slide.getShapes().size()
slide.getShapes().reorder(shape_count - 1, watermark_shape)
finally:
presentation.dispose()
تنظیم چرخش آبنشان
در ادامه مثالی از کد برای تنظیم چرخش آبنشان بهگونهای که بهصورت قطری در اسلاید قرار گیرد، آورده شده است:
import jpype
import asposeslides
import math
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
slide_size = presentation.getSlideSize().getSize()
diagonal_angle = math.atan((slide_size.getHeight() / slide_size.getWidth())) * 180 / math.pi
watermark_shape.setRotation(diagonal_angle)
finally:
presentation.dispose()
تنظیم نام برای آبنشان
Aspose.Slides به شما امکان میدهد نام یک شکل را تنظیم کنید. با استفاده از نام شکل میتوانید در آینده به آن دسترسی پیدا کنید تا آن را تغییر یا حذف کنید. برای تنظیم نام شکل آبنشان، آن را به متد Shape.setName پاس دهید:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
watermark_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 40)
watermark_shape.setName("watermark")
finally:
presentation.dispose()
حذف آبنشان
برای حذف شکل آبنشان، از متد Shape.getName برای یافتن آن در اشکال اسلاید استفاده کنید. سپس شکل آبنشان را به متد ShapeCollection.remove پاس دهید:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
slide_shapes = slide.getShapes().toArray()
for shape in slide_shapes:
if shape.getName() == "watermark":
slide.getShapes().remove(shape)
finally:
presentation.dispose()
سوالات متداول
آبنشان چیست و چرا باید از آن استفاده کنم؟
آبنشان یک لایهٔ متنی یا تصویری است که بر روی اسلایدها افزوده میشود تا مالکیت فکری را محافظت کند، شناخت برند را افزایش دهد یا از استفادهٔ غیرمجاز ارائهها جلوگیری کند.
آیا میتوانم آبنشان را به تمام اسلایدهای یک ارائه اضافه کنم؟
بله، Aspose.Slides امکان افزودن برنامهنویسی آبنشان به هر اسلاید از یک ارائه را فراهم میکند. میتوانید در تمام اسلایدها بهصورت حلقهای آبنشان را اعمال کنید.
چگونه میتوانم شفافیت آبنشان را تنظیم کنم؟
با تغییر تنظیمات پر (متد getFillFormat) شکل میتوانید شفافیت آبنشان را تنظیم کنید. این کار باعث میشود آبنشان بهصورت ظریف باشد و تمرکز را از محتوای اسلاید دور نکند.
چه فرمتهای تصویری برای آبنشان پشتیبانی میشوند؟
Aspose.Slides از فرمتهای مختلف تصویری مانند PNG، JPEG، GIF، BMP، SVG و موارد دیگر پشتیبانی میکند.
آیا میتوانم قلم و سبک آبنشان متنی را سفارشی کنم؟
بله، میتوانید هر قلم، اندازه و سبکی را انتخاب کنید تا با طراحی ارائهتان سازگار باشد و هماهنگی برند حفظ شود.
چگونه میتوان موقعیت یا جهتگیری آبنشان را تغییر داد؟
میتوانید موقعیت و جهتگیری آبنشان را برنامهنویسی با تغییر مختصات، اندازه و خصوصیات چرخش شکل تنظیم کنید.