เพิ่มลายน้ำในงานนำเสนอด้วย Python
บทนำ
ลายน้ำ ในงานนำเสนอคือสติ๊กเกอร์ข้อความหรือรูปภาพที่ใช้บนสไลด์หรือทั่วทั้งสไลด์ของงานนำเสนอ โดยทั่วไปลายน้ำจะใช้เพื่อบ่งบอกว่างานนำเสนอเป็นร่าง (เช่น ลายน้ำ “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 jpype
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 jpade.isJVMStarted():
jpade.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 และอื่น ๆ
ฉันสามารถปรับแต่งแบบอักษรและสไตล์ของลายน้ำข้อความได้หรือไม่?
ได้, คุณสามารถเลือกแบบอักษร, ขนาด, และสไตล์ใดก็ได้เพื่อให้ตรงกับการออกแบบงานนำเสนอและรักษาความสอดคล้องของแบรนด์
ฉันจะเปลี่ยนตำแหน่งหรือแนวลายน้ำได้อย่างไร?
คุณสามารถปรับตำแหน่งและแนวของลายน้ำโดยโปรแกรมโดยแก้ไขพิกัด, ขนาด, และคุณสมบัติการหมุนของรูปร่างได้