Lägg till vattenstämplar i presentationer i PHP

Introduktion

Ett vattenstämpel i en presentation är ett text‑ eller bildstempel som används på en bild eller på alla bilder i presentationen. Vanligtvis används ett vattenstämpel för att ange att presentationen är ett utkast (t.ex. ett ”Utkast”-vattenstämpel), att den innehåller konfidentiell information (t.ex. ett ”Konfidentiellt”-vattenstämpel), för att ange vilket företag den tillhör (t.ex. ett ”Företagsnamn”-vattenstämpel), för att identifiera författaren till presentationen osv. Ett vattenstämpel hjälper till att förhindra upphovsrättsintrång genom att indikera att presentationen inte får kopieras. Vattenstämplar används både i PowerPoint‑ och OpenOffice‑presentationsformat. I Aspose.Slides kan du lägga till ett vattenstämpel i PowerPoint‑PPT, PPTX och OpenOffice‑ODP‑filformat.

I Aspose.Slides finns olika sätt att skapa vattenstämplar i PowerPoint‑ eller OpenOffice‑dokument och att ändra deras utformning och beteende. Det gemensamma är att för att lägga till textvattenstämplar bör du använda klassen TextFrame, och för att lägga till bildvattenstämplar, använd klassen PictureFrame eller fyll en vattenstämpel‑form med en bild. PictureFrame implementerar klassen Shape, vilket gör att du kan använda alla flexibla inställningar för formobjektet. Eftersom ITextFrame inte är en form och dess inställningar är begränsade, omsluts den i ett Shape-objekt.

Det finns två sätt att applicera ett vattenstämpel: på en enskild bild eller på alla bilder i presentationen. Slide Master används för att applicera ett vattenstämpel på alla bilder — vattenstämpeln läggs till i Slide Master, designas helt där och appliceras på alla bilder utan att påverka möjligheten att redigera vattenstämpeln på enskilda bilder.

Ett vattenstämpel anses vanligtvis vara otillgängligt för redigering av andra användare. För att förhindra att vattenstämpeln (eller snarare dess överordnade form) redigeras, erbjuder Aspose.Slides låsning av former. En specifik form kan låsas på en normal bild eller på en Slide Master. När vattenstämpelformen låses på Slide Master, låses den på alla bilder i presentationen.

Du kan ange ett namn för vattenstämpeln så att du i framtiden, om du vill ta bort den, kan hitta den i bildens former efter namn.

Du kan designa vattenstämpeln på valfritt sätt; men det finns vanligtvis gemensamma drag i vattenstämplar, såsom centrering, rotation, framre position osv. Vi kommer att titta på hur man använder dessa i exemplen nedan.

Textvattenstämpel

Lägg till ett textvattenstämpel på en bild

För att lägga till ett textvattenstämpel i PPT, PPTX eller ODP kan du först lägga till en form på bilden, sedan lägga till en textram i den formen. Textramen representeras av klassen TextFrame. Denna typ är inteärvd från Shape, som har ett brett urval av egenskaper för att positionera vattenstämpeln på ett flexibelt sätt. Därför omsluts TextFrame-objektet i ett AutoShape-objekt. För att lägga till vattenstämpeltext i formen, använd metoden addTextFrame enligt nedan.

$watermarkText = "CONFIDENTIAL";

$presentation = new Presentation();
$slide = $presentation->getSlides()->get_Item(0);

$watermarkShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 100, 100, 400, 40);
$watermarkFrame = $watermarkShape->addTextFrame($watermarkText);

$presentation->dispose();

Lägg till ett textvattenstämpel i en presentation

Om du vill lägga till ett textvattenstämpel 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 vattenstämpel på en enskild bild — skapa ett AutoShape-objekt och lägg sedan till vattenstämpeln i det med hjälp av metoden addTextFrame.

$watermarkText = "CONFIDENTIAL";

$presentation = new Presentation();
$masterSlide = $presentation->getMasters()->get_Item(0);

$watermarkShape = $masterSlide->getShapes()->addAutoShape(ShapeType::Rectangle, 100, 100, 400, 40);
$watermarkFrame = $watermarkShape->addTextFrame($watermarkText);

$presentation->dispose();

Ställ in transparens för vattenstämpelform

Som standard är rektangelformen stylad med fyllnings‑ och linjefärger. Följande kodrad gör formen transparent.

$watermarkShape->getFillFormat()->setFillType(FillType::NoFill);
$watermarkShape->getLineFormat()->getFillFormat()->setFillType(FillType::NoFill);

Ställ in typsnitt för ett textvattenstämpel

Du kan ändra typsnittet för textvattenstämpeln enligt nedan.

$textFormat = $watermarkFrame->getParagraphs()->get_Item(0)->getParagraphFormat()->getDefaultPortionFormat();
$textFormat->setLatinFont(new FontData("Arial"));
$textFormat->setFontHeight(50);

Ställ in färg för vattenstämpeltext

För att ange färg på vattenstämpeltexten, använd denna kod:

$alpha = 150;
$red = 200;
$green = 200;
$blue = 200;
$textColor = new Java("java.awt.Color", $red, $green, $blue, $alpha);

$fillFormat = $watermarkFrame->getParagraphs()->get_Item(0)->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat();
$fillFormat->setFillType(FillType::Solid);
$fillFormat->getSolidFillColor()->setColor($textColor);

Centrera ett textvattenstämpel

Det är möjligt att centrera vattenstämpeln på en bild, och för att göra det kan du göra följande:

$slideSize = $presentation->getSlideSize()->getSize();
$slideWidth = java_values($slideSize->getWidth());
$slideHeight = java_values($slideSize->getHeight());

$watermarkWidth = 400;
$watermarkHeight = 40;
$watermarkX = ($slideWidth - $watermarkWidth) / 2;
$watermarkY = ($slideHeight - $watermarkHeight) / 2;

$watermarkShape = $slide->getShapes()->addAutoShape(
        ShapeType::Rectangle, $watermarkX, $watermarkY, $watermarkWidth, $watermarkHeight);

$watermarkFrame = $watermarkShape->addTextFrame($watermarkText);

Bilden nedan visar slutresultatet.

The text watermark

Bildvattenstämpel

Lägg till ett bildvattenstämpel i en presentation

För att lägga till ett bildvattenstämpel i en presentationsbild kan du göra följande:

$image = Images::fromFile("watermark.png");
$picture = $presentation->getImages()->addImage($image);
$image->dispose();

$watermarkShape->getFillFormat()->setFillType(FillType::Picture);
$watermarkShape->getFillFormat()->getPictureFillFormat()->getPicture()->setImage($picture);
$watermarkShape->getFillFormat()->getPictureFillFormat()->setPictureFillMode(PictureFillMode::Stretch);

Lås ett vattenstämpel från redigering

Om det är nödvändigt att förhindra att ett vattenstämpel redigeras, använd metoden AutoShape.getAutoShapeLock på formen. Med denna egenskap kan du skydda formen från att väljas, ändras i storlek, flyttas, grupperas med andra element, låsa dess text från redigering med mera:

// Lås vattenstämpelformen från att ändras
$watermarkShape->getAutoShapeLock()->setSelectLocked(true);
$watermarkShape->getAutoShapeLock()->setSizeLocked(true);
$watermarkShape->getAutoShapeLock()->setTextLocked(true);
$watermarkShape->getAutoShapeLock()->setPositionLocked(true);
$watermarkShape->getAutoShapeLock()->setGroupingLocked(true);

Flytta ett vattenstämpel framåt

I Aspose.Slides kan Z‑ordningen för former ställas in via metoden ShapeCollection.reorder. För att göra detta måste du anropa metoden från listan med presentationsbilder och skicka referensen till formen samt dess ordningsnummer till metoden. På så sätt är det möjligt att flytta en form framåt eller skicka den bakåt på bilden. Denna funktion är särskilt användbar om du behöver placera ett vattenstämpel framför presentationen:

$shapeCount = java_values($slide->getShapes()->size());
$slide->getShapes()->reorder($shapeCount - 1, $watermarkShape);

Ställ in rotation för vattenstämpel

Här är ett kodexempel på hur du justerar rotationen av vattenstämpeln så att den placeras diagonalt över bilden:

$diagonalAngle = atan($slideWidth / $slideHeight) * 180 / M_PI;

$watermarkShape->setRotation($diagonalAngle);

Ställ in ett namn för ett vattenstämpel

Aspose.Slides låter dig ange ett namn för en form. Genom att använda formulärnamnet kan du i framtiden nå den för att modifiera eller ta bort den. För att ange namn på vattenstämpelformen, tilldela den till metoden AutoShape.setName:

$watermarkShape->setName("watermark");

Ta bort ett vattenstämpel

För att ta bort vattenstämpelformen, använd metoden AutoShape.getName för att hitta den i bildens former. Skicka sedan vattenstämpelformen till metoden ShapeCollection.remove:

$slideShapes = $slide->getShapes()->toArray();
foreach ($slideShapes as $shape) {
    if ($shape->getName() === "watermark") {
        $slide->getShapes()->remove($shape);
    }
}

FAQ

Vad är ett vattenstämpel och varför ska jag använda det?

Ett vattenstämpel är ett text‑ eller bildöverlägg som appliceras på bilder för att skydda immateriella rättigheter, stärka varumärkesigenkänning eller förhindra obehörig användning av presentationer.

Kan jag lägga till ett vattenstämpel på alla bilder i en presentation?

Ja, Aspose.Slides låter dig programatiskt lägga till ett vattenstämpel på varje bild i en presentation. Du kan iterera genom alla bilder och applicera vattenstämpelinställningarna individuellt.

Hur kan jag justera transparensen för vattenstämpeln?

Du kan justera transparensen för vattenstämpeln genom att modifiera fyllningsinställningarna (getFillFormat) för formen. Detta säkerställer att vattenstämpeln är subtil och inte distraherar från bildens innehåll.

Vilka bildformat stöds för vattenstämplar?

Aspose.Slides stöder olika bildformat såsom PNG, JPEG, GIF, BMP, SVG med mera.

Kan jag anpassa typsnitt och stil för ett textvattenstämpel?

Ja, du kan välja vilket typsnitt, storlek och stil som helst för att matcha designen av din presentation och upprätthålla varumärkeskonsistens.

Hur ändrar jag position eller orientering för ett vattenstämpel?

Du kan programatiskt justera position och orientering för vattenstämpeln genom att modifiera formens koordinater, storlek och rotationsegenskaper.