การดำเนินการพรีเซนเทชันแบบ Low-Code ใน PHP

ภาพรวม

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

ผู้ช่วยแบบ low‑code มีประโยชน์เมื่อการดำเนินการใช้กับไฟล์หรือพรีเซนเทชันทั้งหมดและเวิร์กโฟลว์เริ่มต้นตรงตามความต้องการของคุณ ใช้โมเดลออบเจกต์เต็มของ Aspose.Slides เมื่อคุณต้องการควบคุมระดับละเอียดบนสไลด์เดี่ยว มาสเตอร์ เลย์เอาต์ รูปร่าง การตั้งค่าการส่งออก หรือความสัมพันธ์ระหว่างองค์ประกอบของพรีเซนเทชัน

ตารางต่อไปสรุปผู้ช่วยที่พร้อมใช้งาน:

Helper Use it for
Convert แปลงพรีเซนเทชันเป็นรูปแบบอื่นโดยเรียกไฟล์‑to‑ไฟล์โดยตรง
Merger รวมไฟล์พรีเซนเทชันเต็มรูปแบบเดียวกัน
ForEach_ เรียกคอลแบ็กสำหรับทุกสไลด์ รูปร่าง ย่อหน้า หรือส่วนของข้อความ
Collect ดึงรูปร่างทั้งหมดจากพรีเซนเทชันเพื่อประมวลผลหรือวิเคราะห์ซ้ำ
Compress ลบมาสเตอร์และเลย์เอาต์ที่ไม่ได้ใช้และลดข้อมูลฟอนต์ที่ฝังอยู่

แปลงพรีเซนเทชัน

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

use aspose\slides\Convert;

Convert::autoByExtension("input.pptx", "output.pdf");

คลาส Convert ยังมีเมธอดเฉพาะสำหรับการส่งออกเป็น PDF, SVG, JPEG, PNG และ TIFF ใช้โมเดลออบเจกต์เต็มเมื่อคุณต้องการตรวจสอบหรือแก้ไขพรีเซนเทชันก่อนส่งออก หรือกำหนดตัวเลือกการส่งออกที่ผู้ช่วยไม่ได้เปิดเผย ดู Convert Presentation สำหรับเวิร์กโฟลว์และตัวเลือกตามรูปแบบ

รวมพรีเซนเทชัน

ใช้ Merger::process เพื่อรวมไฟล์พรีเซนเทชันเต็มรูปแบบด้วยการเรียกครั้งเดียว พรีเซนเทชันที่นำเข้า必须มีรูปแบบไฟล์เดียวกัน

use aspose\slides\Merger;

$inputFiles = ["part-1.pptx", "part-2.pptx"];
Merger::process($inputFiles, "merged.pptx");

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

วนรอบผ่านองค์ประกอบพรีเซนเทชัน

คลาส ForEach_ จะเรียกคอลแบ็กสำหรับประเภทขององค์ประกอบพรีเซนเทชันที่คุณร้องขอ มันช่วยหลีกเลี่ยงลูปการเก็บรวบรวมซ้อนกันและสะดวกสำหรับการตรวจสอบหรือเปลี่ยนรูปแบบทั่วพรีเซนเทชัน

ตัวอย่างต่อไปนี้ใช้ ForEach_::slide, ForEach_::shape, ForEach_::paragraph และ ForEach_::portion เพื่อตรวจสอบองค์ประกอบที่สอดคล้องกัน:

use aspose\slides\ForEach_;
use aspose\slides\Presentation;

class SlideCallback {
    public function invoke($slide, $index): void {
        $slideIndex = java_values($index);
        $shapeCount = java_values($slide->getShapes()->size());
        echo sprintf("Slide %d: %d shapes", $slideIndex, $shapeCount) . PHP_EOL;
    }
}

class ShapeCallback {
    public function invoke($shape, $slide, $index): void {
        $shapeIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $shapeName = java_values($shape->getName());
        echo sprintf("Shape %d on %s: %s", $shapeIndex, $slideType, $shapeName) . PHP_EOL;
    }
}

class ParagraphCallback {
    public function invoke($paragraph, $slide, $index): void {
        $paragraphIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $text = java_values($paragraph->getText());
        echo sprintf("Paragraph %d on %s: %s", $paragraphIndex, $slideType, $text) . PHP_EOL;
    }
}

class PortionCallback {
    public function invoke($portion, $paragraph, $slide, $index): void {
        $portionIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $text = java_values($portion->getText());
        echo sprintf("Portion %d on %s: %s", $portionIndex, $slideType, $text) . PHP_EOL;
    }
}

$presentation = new Presentation("input.pptx");
try {
    $slideCallback = java_closure(new SlideCallback(), null, java('com.aspose.slides.ForEach_$ForEachSlideCallback'));
    $shapeCallback = java_closure(new ShapeCallback(), null, java('com.aspose.slides.ForEach_$ForEachShapeCallback'));
    $paragraphCallback = java_closure(new ParagraphCallback(), null, java('com.aspose.slides.ForEach_$ForEachParagraphCallback'));
    $portionCallback = java_closure(new PortionCallback(), null, java('com.aspose.slides.ForEach_$ForEachPortionCallback'));

    ForEach_::slide($presentation, $slideCallback);
    ForEach_::shape($presentation, $shapeCallback);
    ForEach_::paragraph($presentation, $paragraphCallback);
    ForEach_::portion($presentation, $portionCallback);
} finally {
    $presentation->dispose();
}

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

รวบรวมรูปร่าง

ใช้ Collect::shapes เมื่อคุณต้องการคอลเลกชันของรูปร่างทั้งหมดในพรีเซนเทชัน แทนการใช้คอลแบ็กสำหรับแต่ละรูปร่าง ซึ่งมีประโยชน์เมื่อชุดเดียวกันต้องถูกกรอง นับ หรือประมวลผลหลายครั้ง

use aspose\slides\Collect;
use aspose\slides\Presentation;

$presentation = new Presentation("input.pptx");
try {
    $shapes = Collect::shapes($presentation);

    foreach ($shapes as $shape) {
        $shapeName = java_values($shape->getName());
        $shapeType = java_values($shape->getClass()->getSimpleName());
        echo sprintf("%s: %s", $shapeName, $shapeType) . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

ใช้ ForEach_::shape แทนเมื่อสามารถจัดการแต่ละรูปร่างได้ทันทีและไม่จำเป็นต้องเก็บผลลัพธ์ที่รวบรวมไว้

บีบอัดเนื้อหาพรีเซนเทชัน

คลาส Compress สามารถลบองค์ประกอบโครงสร้างที่ไม่ได้ใช้และลดข้อมูลฟอนต์ที่ฝังไว้ได้:

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

$presentation = new Presentation("input.pptx");
try {
    Compress::removeUnusedLayoutSlides($presentation);
    Compress::removeUnusedMasterSlides($presentation);
    Compress::compressEmbeddedFonts($presentation);

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

ให้ลบเลย์เอาต์ที่ไม่ใช้ก่อนมาสเตอร์ที่ไม่ใช้ เพื่อให้มาสเตอร์ที่กลายเป็นไม่มีการอ้างอิงหลังการทำความสะอาดเลย์เอาต์ถูกลบด้วย บันทึกพรีเซนเทชันที่ทำให้เหมาะสมลงในไฟล์ใหม่หากคุณอาจต้องการมาสเตอร์, เลย์เอาต์ หรือข้อมูลฟอนต์ฝังทั้งหมดในภายหลัง สำหรับรายละเอียดเพิ่มเติม ดู Slide Master และ Embedded Font

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

เมื่อไหร่ที่ควรใช้ API low‑code แทนโมเดลออบเจกต์เต็ม?

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

Merger สามารถรวมพรีเซนเทชันที่มีรูปแบบไฟล์ต่างกันได้หรือไม่?

ไม่ได้. Merger::process ต้องการพรีเซนเทชันอินพุตที่มีรูปแบบเดียวกัน แปลงไฟล์อินพุตให้เป็นรูปแบบเดียวกันก่อน เช่นใช้ Convert::autoByExtension แล้วจึงทำการรวมไฟล์ที่แปลงแล้ว

**ForEach_ ประมวลผลสไลด์มาสเตอร์, เลย์เอาต์ และโน้ตหรือไม่?**

ForEach_::slide วนรอบสไลด์พรีเซนเทชันแบบปกติ การทำงานทั่วพรีเซนเทชันของ ForEach_::shape, ForEach_::paragraph และ ForEach_::portion รวมสไลด์ปกติ, มาสเตอร์และเลย์เอาต์โดยค่าเริ่มต้น ใช้ overload ที่มี includeNotes ตั้งค่าเป็น true เพื่อรวมสไลด์โน้ตด้วย

**ความแตกต่างระหว่าง ForEach_::shape กับ Collect::shapes คืออะไร?**

ใช้ ForEach_::shape เพื่อประมวลผลแต่ละรูปร่างทันทีผ่านคอลแบ็ก ใช้ Collect::shapes เมื่อคุณต้องการผลลัพธ์ที่สามารถเก็บไว้, กรอง, นับหรือวนรอบหลายครั้ง

Compress ทำให้ไฟล์พรีเซนเทชันเล็กลงเสมอหรือไม่?

ไม่จำเป็น ผลลัพธ์ขึ้นกับว่าพรีเซนเทชันมีเลย์เอาต์ที่ไม่ได้ใช้, มาสเตอร์ที่ไม่ได้ใช้ หรือฟอนต์ฝังที่มีอักขระไม่ได้ใช้หรือไม่ หากไม่มีสิ่งเหล่านี้ การดำเนินการ Compress ที่เกี่ยวข้องอาจไม่ได้ลดขนาดไฟล์

**การเปลี่ยนแปลงที่ทำโดย ForEach_ หรือ Compress จะถูกบันทึกโดยอัตโนมัติหรือไม่?**

ไม่ การช่วยเหลือนี้ทำงานบนอ็อบเจกต์ Presentation ที่โหลดไว้ในหน่วยความจำ หลังจากเปลี่ยนแปลงองค์ประกอบในคอลแบ็กของ ForEach_ หรือเรียกใช้ Compress ต้องเรียก Presentation::save เพื่อบันทึกผลลัพธ์

บทความที่เกี่ยวข้อง