เพิ่มลายน้ำในงานนำเสนอด้วย PHP
บทนำ
ลายน้ำ ในงานนำเสนอคือข้อความหรือภาพที่ประทับบนสไลด์หรือทั่วทั้งสไลด์ของงานนำเสนอ ปกติแล้วลายน้ำใช้เพื่อระบุว่างานนำเสนอเป็นร่าง (เช่น ลายน้ำ “Draft”) มีข้อมูลเป็นความลับ (เช่น ลายน้ำ “Confidential”) ระบุว่าเป็นของบริษัทใด (เช่น ลายน้ำ “Company Name”) หรือระบุตัวผู้เขียนงานนำเสนอ ฯลฯ ลายน้ำช่วยป้องกันการละเมิดลิขสิทธิ์โดยบอกว่างานนำเสนอไม่ควรคัดลอก ลายน้ำใช้ได้ทั้งในรูปแบบ PowerPoint และ OpenOffice ใน Aspose.Slides คุณสามารถเพิ่มลายน้ำลงในไฟล์ PowerPoint PPT, PPTX และ OpenOffice ODP ได้
ใน Aspose.Slides มีวิธีต่าง ๆ ที่คุณสามารถสร้างลายน้ำในเอกสาร PowerPoint หรือ OpenOffice และปรับแต่งการออกแบบและพฤติกรรมของลายน้ำได้ ส่วนร่วมคือการเพิ่มลายน้ำข้อความคุณควรใช้คลาส TextFrame และเพื่อเพิ่มลายน้ำรูปภาพให้ใช้คลาส PictureFrame หรือเติมรูปภาพลงในรูปร่างลายน้ำ PictureFrame สืบทอดจากคลาส Shape ทำให้คุณสามารถใช้การตั้งค่าต่าง ๆ ของวัตถุ Shape ได้อย่างยืดหยุ่น เนื่องจาก ITextFrame ไม่ใช่ Shape และการตั้งค่าจำกัด จึงถูกห่อหุ้มในอ็อบเจกต์ Shape
มีสองวิธีในการใช้ลายน้ำ: กับสไลด์เดียวหรือกับสไลด์ทั้งหมด การใช้ Slide Master จะทำให้ลายน้ำปรากฏบนสไลด์ทั้งหมด — ลายน้ำถูกเพิ่มลงใน Slide Master ออกแบบที่นั่นแล้วใช้กับสไลด์ทั้งหมดโดยไม่กระทบต่อสิทธิ์การแก้ไขลายน้ำบนสไลด์แต่ละสไลด์
ลายน้ำโดยทั่วไปถือว่าไม่สามารถแก้ไขได้โดยผู้ใช้คนอื่น เพื่อป้องกันไม่ให้ลายน้ำ (หรือรูปร่างแม่ของลายน้ำ) ถูกแก้ไข Aspose.Slides มีฟังก์ชันการล็อกรูปร่าง คุณสามารถล็อกรูปร่างเฉพาะบนสไลด์ปกติหรือบน Slide Master เมื่อรูปร่างลายน้ำถูกล็อกบน Slide Master จะถูกล็อกบนสไลด์ทั้งหมด
คุณสามารถตั้งชื่อให้กับลายน้ำเพื่อให้ในอนาคตเมื่อต้องการลบ สามารถค้นหาได้จากรูปร่างของสไลด์โดยใช้ชื่อ
คุณสามารถออกแบบลายน้ำได้หลายรูปแบบ; อย่างไรก็ตามลายน้ำมักมีลักษณะทั่วไปเช่น จัดกึ่งกลาง, หมุน, อยู่ด้านหน้า เป็นต้น เราจะพิจารณาวิธีใช้เหล่านี้ในตัวอย่างต่อไป
ลายน้ำข้อความ
เพิ่มลายน้ำข้อความลงในสไลด์
เพื่อเพิ่มลายน้ำข้อความใน PPT, PPTX หรือ ODP คุณสามารถเพิ่มรูปร่างลงในสไลด์แล้วเพิ่ม TextFrame ลงในรูปร่างนั้น TextFrame แสดงโดยคลาส TextFrame คลาสนี้ไม่สืบทอดจาก Shape ซึ่งมีคุณสมบัติตั้งค่าการวางตำแหน่งลายน้ำอย่างยืดหยุ่น ดังนั้นอ็อบเจกต์ TextFrame จะถูกห่อหุ้มในอ็อบเจกต์ AutoShape เพื่อเพิ่มข้อความลายน้ำลงในรูปร่าง ให้ใช้เมธอด addTextFrame ตามตัวอย่างด้านล่าง
$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();
ดูเพิ่มเติม
เพิ่มลายน้ำข้อความลงในงานนำเสนอ
หากต้องการเพิ่มลายน้ำข้อความให้กับงานนำเสนอทั้งหมด (เช่น ทุกสไลด์พร้อมกัน) ให้เพิ่มลงใน MasterSlide ส่วนที่เหลือของตรรกะเดียวกับการเพิ่มลายน้ำบนสไลด์เดียว — สร้างอ็อบเจกต์ AutoShape แล้วเพิ่มลายน้ำด้วยเมธอด 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();
ดูเพิ่มเติม
ตั้งค่าความโปร่งใสของรูปร่างลายน้ำ
โดยค่าเริ่มต้นรูปร่างสี่เหลี่ยมจะมีสีเติมและสีเส้น โค้ดต่อไปนี้ทำให้รูปร่างโปร่งใส
$watermarkShape->getFillFormat()->setFillType(FillType::NoFill);
$watermarkShape->getLineFormat()->getFillFormat()->setFillType(FillType::NoFill);
ตั้งค่าฟอนต์สำหรับลายน้ำข้อความ
คุณสามารถเปลี่ยนฟอนต์ของลายน้ำข้อความได้ตามด้านล่าง
$textFormat = $watermarkFrame->getParagraphs()->get_Item(0)->getParagraphFormat()->getDefaultPortionFormat();
$textFormat->setLatinFont(new FontData("Arial"));
$textFormat->setFontHeight(50);
ตั้งค่าสีข้อความลายน้ำ
เพื่อกำหนดสีของข้อความลายน้ำ ให้ใช้โค้ดนี้
$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);
จัดกึ่งกลางลายน้ำข้อความ
คุณสามารถจัดกึ่งกลางลายน้ำบนสไลด์ได้โดยทำตามขั้นตอนต่อไปนี้
$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);
รูปด้านล่างแสดงผลลัพธ์สุดท้าย

ลายน้ำรูปภาพ
เพิ่มลายน้ำรูปภาพลงในงานนำเสนอ
เพื่อเพิ่มลายน้ำรูปภาพลงในสไลด์ของงานนำเสนอ คุณสามารถทำตามขั้นตอนต่อไปนี้
$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);
ล็อกลายน้ำไม่ให้แก้ไข
หากต้องการป้องกันไม่ให้ลายน้ำถูกแก้ไข ใช้เมธอด AutoShape.getAutoShapeLock บนรูปร่าง ด้วยคุณสมบัตินี้คุณสามารถป้องกันไม่ให้รูปร่างถูกเลือก, ปรับขนาด, ย้ายตำแหน่ง, รวมกลุ่มกับองค์ประกอบอื่น, ล็อกข้อความจากการแก้ไข ฯลฯ
// ล็อกรูปลายน้ำไม่ให้แก้ไข
$watermarkShape->getAutoShapeLock()->setSelectLocked(true);
$watermarkShape->getAutoShapeLock()->setSizeLocked(true);
$watermarkShape->getAutoShapeLock()->setTextLocked(true);
$watermarkShape->getAutoShapeLock()->setPositionLocked(true);
$watermarkShape->getAutoShapeLock()->setGroupingLocked(true);
นำลายน้ำไปอยู่ด้านหน้า
ใน Aspose.Slides การจัดลำดับ Z ของรูปร่างสามารถตั้งค่าได้ผ่านเมธอด ShapeCollection.reorder เพียงเรียกเมธอดนี้จากรายการสไลด์ของงานนำเสนอและส่งอ้างอิงรูปร่างพร้อมหมายเลขลำดับเข้าไป จะทำให้สามารถนำรูปร่างไปอยู่ด้านหน้า หรือส่งไปอยู่ด้านหลังของสไลด์ได้ ฟีเจอร์นี้มีประโยชน์เมื่อคุณต้องการให้ลายน้ำอยู่ด้านหน้าของงานนำเสนอ
$shapeCount = java_values($slide->getShapes()->size());
$slide->getShapes()->reorder($shapeCount - 1, $watermarkShape);
ตั้งค่าการหมุนของลายน้ำ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีปรับการหมุนของลายน้ำให้ตำแหน่งเป็นแนวทแยงมุมบนสไลด์
$diagonalAngle = atan($slideWidth / $slideHeight) * 180 / M_PI;
$watermarkShape->setRotation($diagonalAngle);
ตั้งชื่อให้กับลายน้ำ
Aspose.Slides อนุญาตให้คุณตั้งชื่อให้กับรูปร่างได้ โดยใช้ชื่อรูปร่างคุณสามารถเข้าถึงเพื่อแก้ไขหรือทำการลบในภายหลัง เพื่อกำหนดชื่อให้กับรูปร่างลายน้ำ ให้เรียกเมธอด AutoShape.setName
$watermarkShape->setName("watermark");
ลบลายน้ำ
เพื่อทำการลบรูปร่างลายน้ำ ให้ใช้เมธอด AutoShape.getName เพื่อค้นหาในรูปร่างของสไลด์ จากนั้นส่งรูปร่างลายน้ำเข้าเมธอด ShapeCollection.remove
$slideShapes = $slide->getShapes()->toArray();
foreach ($slideShapes as $shape) {
if ($shape->getName() === "watermark") {
$slide->getShapes()->remove($shape);
}
}
คำถามที่พบบ่อย
ลายน้ำคืออะไรและทำไมต้องใช้?
ลายน้ำคือชั้นทับข้อความหรือรูปภาพบนสไลด์ที่ช่วยปกป้องทรัพย์สินทางปัญญา เสริมการรับรู้แบรนด์ หรือป้องกันการใช้งานนำเสนอโดยไม่ได้รับอนุญาต
ฉันสามารถเพิ่มลายน้ำให้กับทุกสไลด์ในงานนำเสนอได้หรือไม่?
ได้, Aspose.Slides อนุญาตให้คุณเพิ่มลายน้ำให้กับทุกสไลด์ในงานนำเสนอโดยเขียนโค้ดวนลูปผ่านสไลด์ทั้งหมดและกำหนดค่าลายน้ำแต่ละสไลด์
ฉันจะปรับความโปร่งใสของลายน้ำอย่างไร?
คุณสามารถปรับความโปร่งใสของลายน้ำโดยแก้ไขการตั้งค่าการเติม (getFillFormat) ของรูปร่าง ซึ่งทำให้ลายน้ำดูอ่อนโยนและไม่รบกวนเนื้อหาในสไลด์
ลายน้ำรองรับรูปแบบไฟล์ภาพใดบ้าง?
Aspose.Slides รองรับรูปแบบภาพหลายประเภท เช่น PNG, JPEG, GIF, BMP, SVG และอื่น ๆ
ฉันสามารถกำหนดฟอนต์และสไตล์ของลายน้ำข้อความได้หรือไม่?
ได้, คุณสามารถเลือกฟอนต์, ขนาด, และสไตล์ใดก็ได้เพื่อให้สอดคล้องกับการออกแบบงานนำเสนอและคงความสอดคล้องของแบรนด์
ฉันจะเปลี่ยนตำแหน่งหรือการวางแนวของลายน้ำอย่างไร?
คุณสามารถปรับตำแหน่งและการวางแนวของลายน้ำโดยโปรแกรมโดยแก้ไขพิกัด, ขนาด, และคุณสมบัติการหมุนของรูปร่างได้