การดำเนินการพรีเซนเทชันแบบ 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 สามารถลบองค์ประกอบโครงสร้างที่ไม่ได้ใช้และลดข้อมูลฟอนต์ที่ฝังไว้ได้:
- Compress::removeUnusedLayoutSlides ลบสไลด์เลย์เอาต์ที่ไม่มีสไลด์ปกติอ้างอิง
- Compress::removeUnusedMasterSlides ลบมาสเตอร์สไลด์ที่ไม่ได้ใช้แล้ว
- Compress::compressEmbeddedFonts ลบอักขระที่ไม่ได้ใช้จากฟอนต์ฝัง
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 เพื่อบันทึกผลลัพธ์