จำกัดการแก้ไขงานนำเสนอด้วยการล็อครูปทรงใน PHP

ภาพรวม

การใช้งานทั่วไปของ Aspose.Slides for PHP via Java คือการสร้าง, ปรับปรุงและบันทึกงานนำเสนอ PowerPoint (PPTX) เป็นส่วนหนึ่งของกระบวนการทำงานอัตโนมัติ เมื่อผู้ใช้ได้รับงานนำเสนอเหล่านี้ การจำกัดการเปลี่ยนแปลงรูปทรงสามารถช่วยรักษาเค้าโครงและเนื้อหาตามที่ตั้งใจไว้ได้

บทความนี้อธิบายวิธีที่รูปทรงถูกจัดเรียงบนสไลด์และวิธีการเพิ่มและลบการล็อครูปทรงในงานนำเสนอ PPTX การล็อกเหล่านี้ช่วยให้คุณจำกัดการดำเนินการแก้ไขเฉพาะบนรูปทรงแต่ละรูปได้

ส่วนประกอบของสไลด์

สไลด์งานนำเสนอประกอบด้วยส่วนประกอบต่าง ๆ เช่น ออโต้เชป, ตาราง, วัตถุ OLE, รูปทรงที่จัดกลุ่ม, กรอบรูปภาพ, กรอบวีดีโอ, ตัวเชื่อมต่อ และองค์ประกอบอื่น ๆ ที่ใช้สร้างงานนำเสนอ ใน Aspose.Slides for PHP via Java แต่ละองค์ประกอบบนสไลด์จะแสดงโดยอ็อบเจกต์ที่สืบทอดจากคลาส Shape

ประเภทรูปทรงที่แตกต่างกันมีตัวเลือกการล็อกที่แตกต่างกัน คลาส BaseShapeLock เป็นคลาสฐานสำหรับการล็อครูปทรง Aspose.Slides for PHP via Java มีคลาสล็อกต่อไปนี้:

เพื่อเพิ่มการล็อกให้ทั่วทั้ง Presentation, ให้วนผ่านสไลด์ทั้งหมดและกำหนดการล็อกที่เหมาะสมบนรูปทรงที่รองรับแต่ละรูป

การเพิ่มและลบการปกป้อง

การล็อครูปทรงจำกัดการดำเนินการเช่น การเลือก, การย้ายและการปรับขนาดรูปทรง พวกมันไม่ได้ทำให้ทั้งงานนำเสนอไม่สามารถแก้ไขได้

เพิ่มการปกป้องให้รูปทรง PPTX

Aspose.Slides for PHP via Java มีคลาส Shape เพื่อทำงานกับรูปทรงบนสไลด์

ตัวอย่างเรียกใช้ setSelectLocked, setPositionLocked, และ setSizeLocked ด้วยค่า true สำหรับออโต้เชป, พร้อมล็อกที่เทียบเท่าสำหรับรูปทรงกลุ่ม, ตัวเชื่อมต่อ, และกรอบภาพ ตัวเชื่อมต่อใช้ setPositionMove เพื่อการเคลื่อนที่; กลุ่มยังใช้ setGroupingLocked เพื่อจำกัดการจัดกลุ่ม

ตัวอย่างโหลดงานนำเสนอ PPTX ที่มีอยู่, ตรวจสอบรูปทรงในคอลเลกชันรูปทรงของแต่ละสไลด์, และบันทึกสำเนาที่มีการจำกัดเหล่านี้ถูกนำไปใช้ รูปทรงที่อยู่นอกสี่ประเภทที่จัดการจะคงอยู่โดยไม่เปลี่ยนแปลง ลูปนี้ไม่ได้เดินทางผ่านรูปทรงลูกภายในกลุ่ม

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("Sample.pptx");
try {
    foreach ($presentation->getSlides()->toArray() as $slide) {
        foreach ($slide->getShapes()->toArray() as $shape) {
            if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setGroupingLocked(true);
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionMove(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            }
        }
    }

    $presentation->save("ProtectedSample.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

ลบการปกป้อง

เพื่อเอาการล็อครูปทรงออก, ให้ตั้งค่าของมันเป็น false ตัวอย่างต่อไปนี้โหลดงานนำเสนอที่มีการล็อครูปทรงและล้างการจำกัดการเลือก, การเคลื่อนที่, และการปรับขนาดผ่าน AutoShapeLock, GroupShapeLock, ConnectorLock, และ PictureFrameLock. มันยังลบข้อจำกัดการจัดกลุ่มโดยส่งค่า false ไปยัง GroupShapeLock::setGroupingLocked และบันทึกสำเนาของงานนำเสนอ การตั้งค่าล็อกอื่น ๆ จะคงไว้โดยไม่มีการเปลี่ยนแปลง

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("ProtectedSample.pptx");
try {
    foreach ($presentation->getSlides()->toArray() as $slide) {
        foreach ($slide->getShapes()->toArray() as $shape) {
            if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setGroupingLocked(false);
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionMove(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            }
        }
    }

    $presentation->save("RemovedProtectionSample.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

สรุป

Aspose.Slides for PHP via Java ให้คุณจำกัดการดำเนินการแก้ไขเฉพาะบนรูปทรงแต่ละรูปหรือใช้ข้อจำกัดเดียวกันทั่วสไลด์ทั้งหมด เลือกการล็อกที่รองรับโดยแต่ละประเภทรูปทรงและตั้งค่าของมันเป็น false เมื่อคุณต้องการเอาข้อจำกัดเหล่านั้นออก

คำถามที่พบบ่อย

ฉันสามารถรวมการล็อครูปทรงและการป้องกันด้วยรหัสผ่านในงานนำเสนอเดียวได้หรือไม่?

ใช่ การล็อครูปทรงจำกัดการดำเนินการแก้ไขเฉพาะ ในขณะที่ การป้องกันด้วยรหัสผ่าน สามารถจำกัดการเปิดหรือการแก้ไขงานนำเสนอ คุณสามารถใช้ทั้งสองอย่างในไฟล์เดียวได้

ฉันสามารถจำกัดการแก้ไขบนสไลด์เฉพาะได้โดยไม่กระทบสไลด์อื่นหรือไม่?

ใช่ ให้เพิ่มการล็อกเฉพาะกับรูปทรงบนสไลด์ที่เลือกเท่านั้น ส่วนนี้จะไม่เปลี่ยนแปลงการตั้งค่าล็อกบนสไลด์อื่น

ฉันจะเพิ่มการล็อกให้รูปทรงแต่ละอันภายในกลุ่มได้อย่างไร?

วนผ่านคอลเลกชันที่คืนค่ามาจากเมธอด getShapes ของกลุ่มและเพิ่มการล็อกที่เหมาะสมให้กับรูปทรงลูกแต่ละอัน ทำซ้ำสำหรับกลุ่มซ้อนกัน ตัวอย่างข้างต้นประมวลผลเฉพาะคอลเลกชันรูปทรงของสไลด์เท่านั้น ดังนั้นจึงไม่ได้ตั้งการล็อกบนสมาชิกกลุ่มแต่ละอัน