Lägg till vattenmärken i presentationer i Python
Introduktion
Ett vattenmärke i en presentation är en text- eller bildstämpel som används på en bild eller genom alla presentationsbilder. Vanligtvis används ett vattenmärke för att ange att presentationen är ett utkast (t.ex. ett “Utkast”-vattenmärke), att den innehåller konfidentiell information (t.ex. ett “Konfidentiellt”-vattenmärke), för att specificera vilket företag den tillhör (t.ex. ett “Företagsnamn”-vattenmärke), för att identifiera presentationsförfattaren osv. Ett vattenmärke hjälper till att förhindra upphovsrättsintrång genom att ange att presentationen inte får kopieras. Vattenmärken används i både PowerPoint- och OpenOffice-presentationsformat. I Aspose.Slides kan du lägga till ett vattenmärke i PowerPoint PPT, PPTX och OpenOffice ODP filformat.
I Aspose.Slides finns det olika sätt att skapa vattenmärken i PowerPoint- eller OpenOffice-dokument och ändra deras design och beteende. Det gemensamma är att för att lägga till textvattenmärken bör du använda klassen TextFrame, och för att lägga till bildvattenmärken, använd klassen PictureFrame eller fyll en vattenmärkesform med en bild. PictureFrame ärver från klassen Shape, vilket gör att du kan använda alla flexibla inställningar för shape‑objektet. Eftersom TextFrame inte är en shape och dess inställningar är begränsade, är den inbäddad i ett Shape‑objekt.
Det finns två sätt att tillämpa ett vattenmärke på: på en enskild bild eller på alla presentationsbilder. Slide Master används för att applicera ett vattenmärke på alla presentationsbilder — vattenmärket läggs till i Slide Master, designas helt där och tillämpas på alla bilder utan att påverka möjligheten att redigera vattenmärket på enskilda bilder.
Ett vattenmärke anses normalt vara otillgängligt för redigering av andra användare. För att förhindra att vattenmärket (eller snarare dess överordnade shape) redigeras, erbjuder Aspose.Slides funktionalitet för låsning av shapes. En specifik shape kan låsas på en vanlig bild eller på en Slide Master. När vattenmärkes‑shape:n är låst på Slide Master, blir den låst på alla presentationsbilder.
Du kan ange ett namn för vattenmärket så att du i framtiden, om du vill ta bort det, kan hitta det bland bildens shapes efter namn.
Du kan designa vattenmärket på vilket sätt som helst; men det finns vanligtvis gemensamma egenskaper i vattenmärken, såsom centrerad justering, rotation, frontposition osv. Vi kommer att titta på hur man använder dessa i exemplen nedan.
Textvattenmärke
Lägg till ett textvattenmärke på en bild
För att lägga till ett textvattenmärke i PPT, PPTX eller ODP kan du först lägga till en shape på bilden och sedan lägga till en textframe till denna shape. Textframen representeras av klassen TextFrame. Denna typ ärver inte från Shape, som har ett brett urval av egenskaper för att positionera vattenmärket på ett flexibelt sätt. Därför är TextFrame‑objektet inbäddat i ett AutoShape‑objekt. För att lägga till vattenmärkestext till shape:n, använd metoden addTextFrame som visas nedan.
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()
Lägg till ett textvattenmärke i en presentation
Om du vill lägga till ett textvattenmärke i hela presentationen (dvs. alla bilder på en gång), lägg till det i MasterSlide. Resten av logiken är densamma som när du lägger till ett vattenmärke på en enskild bild — skapa ett AutoShape‑objekt och lägg sedan till vattenmärket i det med hjälp av metoden 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()
Ställ in transparenthet för vattenmärkes‑shape
Som standard är rektangel‑shape:n stiliserad med fyllnings‑ och linjefärger. Följande kodrader gör shape:n transparent.
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()
Ange teckensnittet för ett textvattenmärke
Du kan ändra teckensnittet för textvattenmärket enligt nedan.
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()
Ange textfärgen för vattenmärket
För att ange färgen på vattenmärkestexten, använd följande kod:
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()
Centrera ett textvattenmärke
Det är möjligt att centrera vattenmärket på en bild, och för det kan du göra följande:
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()
Bilden nedan visar slutresultatet.

Bildvattenmärke
Lägg till ett bildvattenmärke i en presentation
För att lägga till ett bildvattenmärke på en presentationsbild kan du göra följande:
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()
Lås ett vattenmärke från redigering
Om det är nödvändigt att förhindra att ett vattenmärke redigeras, använd metoden AutoShape.getAutoShapeLock på shape:n. Med denna egenskap kan du skydda shape:n från att väljas, storleksändras, flyttas, grupperas med andra element, låsa dess text från redigering och mycket mer:
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)
# Lås vattenmärkesformen mot ändring.
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()
Flytta ett vattenmärke framåt
I Aspose.Slides kan Z‑ordningen för shapes ställas in via metoden ShapeCollection.reorder. För att göra detta måste du anropa metoden från bildens shape‑samling och skicka shape‑referensen och dess ordningsnummer till metoden. På så sätt går det att föra en shape framåt eller skicka den bakåt på bilden. Denna funktion är särskilt användbar om du behöver placera ett vattenmärke framför presentationen:
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()
Ställ in rotation för vattenmärke
Här är ett kodexempel på hur du justerar rotationen för vattenmärket så att det placeras diagonalt över bilden:
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()
Ange ett namn för ett vattenmärke
Aspose.Slides låter dig ange namnet på en shape. Genom att använda shape‑namnet kan du i framtiden komma åt den för att ändra eller ta bort den. För att ange namn på vattenmärkes‑shape:n, skicka den till metoden 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()
Ta bort ett vattenmärke
För att ta bort vattenmärkeshapen, använd metoden Shape.getName för att hitta den i bildens shapes. Skicka sedan vattenmärkeshapen till metoden 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()
FAQ
Vad är ett vattenmärke och varför ska jag använda det?
Ett vattenmärke är en text- eller bildövertäckning som appliceras på bilder och hjälper till att skydda immateriella rättigheter, förbättra varumärkesigenkänning eller förhindra obehörig användning av presentationer.
Kan jag lägga till ett vattenmärke på alla bilder i en presentation?
Ja, Aspose.Slides låter dig programatiskt lägga till ett vattenmärke på varje bild i en presentation. Du kan iterera igenom alla bilder och applicera vattenmärkeinställningarna individuellt.
Hur kan jag justera transparensen för vattenmärket?
Du kan justera transparensen för vattenmärket genom att ändra fyllningsinställningarna (getFillFormat) för shape:n. Detta säkerställer att vattenmärket är subtilt och inte distraherar från bildens innehåll.
Vilka bildformat stöds för vattenmärken?
Aspose.Slides stöder olika bildformat såsom PNG, JPEG, GIF, BMP, SVG och fler.
Kan jag anpassa teckensnitt och stil för ett textvattenmärke?
Ja, du kan välja vilket teckensnitt, storlek och stil som helst för att matcha designen i din presentation och upprätthålla varumärkeskonsekvens.
Hur ändrar jag position eller orientering av ett vattenmärke?
Du kan programatiskt justera position och orientering av vattenmärket genom att ändra shape‑ns koordinater, storlek och rotationsegenskaper.