เปิดไฟล์นำเสนอใน PHP
บทนำ
Aspose.Slides for PHP via Java สามารถโหลดไฟล์นำเสนอ PowerPoint และ OpenDocument จากไฟล์และสตรีมได้ หลังจากโหลดไฟล์นำเสนอแล้ว คุณสามารถตรวจสอบโครงสร้าง แก้ไขสไลด์ จัดการทรัพยากร และบันทึกในรูปแบบเดิมหรือรูปแบบอื่นที่สนับสนุนได้
พฤติกรรมการโหลดสามารถปรับแต่งได้ผ่านคลาส LoadOptions ตัวอย่างเช่น คุณสามารถระบุรหัสผ่านเปิดไฟล์ เก็บออบเจ็กต์ไบนารีขนาดใหญ่ให้อยู่ไกลจากหน่วยความจำ Heap ของ Java ควบคุมทรัพยากรภายนอก หรือละเว้นข้อมูลไบนารีที่ฝังอยู่
เปิดไฟล์นำเสนอ
หลังจากโหลดไฟล์หรือสตรีมแล้ว คุณสามารถ กำหนดรูปแบบไฟล์นำเสนอเดิม เพื่อเลือกวิธีที่แอปพลิเคชันของคุณจะประมวลผล
เพื่อเปิดไฟล์นำเสนอที่มีอยู่ ให้ส่งพาธไฟล์ไปยังตัวสร้าง Presentation หลังจากใช้งานเสร็จ ควรทำการกำจัด (dispose) ไฟล์นำเสนอเพื่อให้ตัวจัดการไฟล์ ข้อมูลชั่วคราว และทรัพยากรอื่น ๆ ถูกปล่อยออกอย่างรวดเร็ว
ตัวอย่าง PHP ด้านล่างแสดงวิธีเปิดไฟล์นำเสนอและรับจำนวนสไลด์:
use aspose\slides\Presentation;
$presentation = new Presentation("sample.pptx");
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
เปิดไฟล์นำเสนอที่มีการป้องกันด้วยรหัสผ่าน
รหัสผ่านเปิดไฟล์ทำให้เนื้อหาไฟล์นำเสนอถูกเข้ารหัส เพื่อโหลดไฟล์นำเสนอเต็มรูปแบบ ให้ส่งรหัสผ่านที่ถูกต้องไปยัง LoadOptions::setPassword แล้วให้ตัวเลือกเหล่านั้นกับตัวสร้าง Presentation การโหลดจะล้มเหลวเมื่อรหัสผ่านหายหรือไม่ถูกต้อง
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");
$presentation = new Presentation("encrypted-presentation.pptx", $loadOptions);
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
สำหรับการตรวจจับรหัสผ่าน การตรวจสอบความถูกต้อง และกระบวนการเข้ารหัส โปรดดูที่ Password-Protect Presentations หากไฟล์นำเสนอที่เข้ารหัสถูกบันทึกโดยเจตนาพร้อมกับคุณสมบัติเอกสารสาธารณะ คุณสมบัติเหล่านั้นสามารถอ่านได้โดยไม่ต้องใช้รหัสผ่าน; ดูที่ Manage Presentation Properties
เปิดไฟล์นำเสนอขนาดใหญ่
LoadOptions::getBlobManagementOptions คืนค่าตัวเลือกที่ควบคุมวิธีที่ Aspose.Slides จัดการกับออบเจ็กต์ไบนารีขนาดใหญ่ เช่น ภาพ เสียง และวิดีโอ คุณสามารถล็อกไฟล์ต้นทาง ให้อนุญาตไฟล์ชั่วคราว และจำกัดปริมาณข้อมูล BLOB ที่เก็บไว้ในหน่วยความจำ
โค้ด PHP ด้านล่างแสดงการโหลดไฟล์นำเสนอขนาดใหญ่ (เช่น 2 GB):
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationLockingBehavior;
use aspose\slides\SaveFormat;
$filePath = "large-presentation.pptx";
$loadOptions = new LoadOptions();
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024);
$presentation = new Presentation($filePath, $loadOptions);
try {
$presentation->getSlides()->get_Item(0)->setName("Large presentation");
$presentation->save("large-presentation-copy.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Note
ด้วย PresentationLockingBehavior::KeepLocked ไฟล์ต้นทางจะถูกล็อกจนกว่าตัวอย่างไฟล์นำเสนอจะถูกกำจัด อย่าเคลื่อนย้าย เขียนทับ หรือ ลบไฟล์ต้นทางขณะที่อินสแตนซ์นั้นยังอยู่
Aspose.Slides อาจคัดลอกเนื้อหาของอินพุตสตรีมขณะโหลด สำหรับไฟล์นำเสนอขนาดใหญ่ ดังนั้นการใช้พาธไฟล์โดยทั่วไปจะมีประสิทธิภาพมากกว่าสตรีม ดูที่ Manage BLOBs เพื่อดูตัวเลือกการจัดเก็บและการจัดการหน่วยความจำเพิ่มเติม
ควบคุมทรัพยากรภายนอก
LoadOptions::setResourceLoadingCallback ยอมรับการทำงานของอินเตอร์เฟส Java IResourceLoadingCallback ผ่าน PHP/Java Bridge คอลแบ็คนี้สามารถให้ข้อมูลทดแทน เปลี่ยนเส้นทางทรัพยากร ใช้โหลดเดฟอลต์ หรือข้ามทรัพยากรได้ ประโยชน์เมื่อไฟล์นำเสนอมีภาพภายนอกที่ต้อง resolve ตามกฎความปลอดภัยหรือกฎการจัดเก็บข้อมูลของแอปพลิเคชัน
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\ResourceLoadingAction;
class ImageLoadingHandler {
function resourceLoading($args) {
$originalUri = strtolower(java_values($args->getOriginalUri()));
$approvedImagePath = "approved-image.jpg";
$isJpeg = substr($originalUri, -4) === ".jpg";
if (!$isJpeg || !file_exists($approvedImagePath)) {
return ResourceLoadingAction::Skip;
}
$imageData = file_get_contents($approvedImagePath);
if ($imageData === false) {
echo("The approved replacement image could not be read.\n");
return ResourceLoadingAction::Skip;
}
$args->setData(java_values($imageData));
return ResourceLoadingAction::UserProvided;
}
}
$loadingHandler = java_closure(new ImageLoadingHandler(), null, java("com.aspose.slides.IResourceLoadingCallback"));
$loadOptions = new LoadOptions();
$loadOptions->setResourceLoadingCallback($loadingHandler);
$presentation = new Presentation("presentation-with-external-images.pptx", $loadOptions);
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
โหลดไฟล์นำเสนอโดยไม่รวมออบเจ็กต์ไบนารีฝัง
ไฟล์นำเสนออาจมีข้อมูลไบนารีฝังที่แอปพลิเคชันไม่จำเป็นต้องใช้หรือไม่ต้องการเก็บ ตัวอย่างเช่น:
- โครงการ VBA, สามารถเข้าถึงได้ผ่าน Presentation::getVbaProject;
- ข้อมูล OLE ฝัง, สามารถเข้าถึงได้ผ่าน OleEmbeddedDataInfo::getEmbeddedFileData;
- ข้อมูลคอนโทรล ActiveX, สามารถเข้าถึงได้ผ่าน Control::getActiveXControlBinary.
ตั้งค่า LoadOptions::setDeleteEmbeddedBinaryObjects เป็น true เพื่อเอาข้อมูลไบนารีนี้ออกระหว่างการโหลด บันทึกไฟล์นำเสนอที่โหลดแล้วเพื่อให้ผลลัพธ์ที่ทำความสะอาดคงอยู่
ตัวเลือกนี้ช่วยลดความเสี่ยงจากข้อมูลฝังที่ไม่ต้องการ แต่ไม่ได้เป็นระบบตรวจจับมัลแวร์หรือการทำความสะอาดเนื้อหาอย่างสมบูรณ์
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$loadOptions = new LoadOptions();
$loadOptions->setDeleteEmbeddedBinaryObjects(true);
$presentation = new Presentation("presentation-with-embedded-data.pptx", $loadOptions);
try {
$presentation->save("presentation-without-embedded-data.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
คำถามที่พบบ่อย
ฉันจะรู้ได้อย่างไรว่าไฟล์เสียและไม่สามารถเปิดได้?
Aspose.Slides จะโยนข้อยกเว้นการพาร์สหรือรูปแบบระหว่างการโหลด จัดการข้อผิดพลาดนี้แยกจากข้อผิดพลาดรหัสผ่านไม่ถูกต้อง เพื่อให้แอปพลิเคชันสามารถรายงานสาเหตุได้อย่างแม่นยำ
จะเกิดอะไรขึ้นหากฟอนต์ที่จำเป็นไม่มีอยู่?
ไฟล์นำเสนอยังสามารถโหลดได้ แต่การเรนเดอร์และการส่งออกอาจใช้ฟอนต์ทดแทน คุณสามารถ กำหนดค่าการทดแทนฟอนต์ หรือ จัดหา ฟอนต์กำหนดเอง เพื่อให้ผลลัพธ์คาดเดาได้มากขึ้น
การโหลดไฟล์นำเสนอจะโหลดสื่อที่ฝังอยู่ด้วยหรือไม่?
เสียงและวิดีโอที่ฝังอยู่จะพร้อมใช้งานผ่านโมเดลออบเจ็กต์ของไฟล์นำเสนอ ทรัพยากรภายนอกจะถูก resolve ตามพฤติกรรมการโหลดทรัพยากรที่กำหนดไว้และอาจไม่พร้อมใช้งานหากไม่สามารถเข้าถึงตำแหน่งของมันได้