เปิดงานนำเสนอใน JavaScript
บทนำ
นอกเหนือจากการสร้างงานนำเสนอ PowerPoint ตั้งแต่ต้น Aspose.Slides ยังทำให้คุณเปิดงานนำเสนอที่มีอยู่ได้ หลังจากโหลดงานนำเสนอแล้ว คุณสามารถดึงข้อมูลเกี่ยวกับมัน แก้ไขเนื้อหาสไลด์ เพิ่มสไลด์ใหม่ ลบสไลด์ที่มีอยู่ และอื่น ๆ อีกมาก
เปิดงานนำเสนอ
เพื่อเปิดงานนำเสนอที่มีอยู่ ให้สร้างอินสแตนซ์ของคลาส Presentation และส่งเส้นทางไฟล์ไปยังคอนสตรัคเตอร์ของมัน
ตัวอย่าง JavaScript ด้านล่างแสดงวิธีการเปิดงานนำเสนอและรับจำนวนสไลด์ของมัน:
// สร้างอินสแตนซ์ของคลาส Presentation และส่งเส้นทางไฟล์ไปยังคอนสตรัคเตอร์ของมัน.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
// แสดงจำนวนสไลด์ทั้งหมดในงานนำเสนอ.
console.log(presentation.getSlides().size());
} finally {
presentation.dispose();
}
เปิดงานนำเสนอที่มีการป้องกันด้วยรหัสผ่าน
เมื่อคุณต้องการเปิดงานนำเสนอที่มีการป้องกันด้วยรหัสผ่าน ให้ส่งรหัสผ่านผ่านเมธอด setPassword ของคลาส LoadOptions เพื่อถอดรหัสและโหลดงานนำเสนอ ตัวอย่างโค้ด JavaScript ด้านล่างแสดงการดำเนินการนี้:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
// ดำเนินการต่าง ๆ บนงานนำเสนอที่ถอดรหัสแล้ว.
} finally {
presentation.dispose();
}
เปิดงานนำเสนอขนาดใหญ่
Aspose.Slides มีตัวเลือก—โดยเฉพาะเมธอด getBlobManagementOptions ในคลาส LoadOptions—เพื่อช่วยคุณโหลดงานนำเสนอขนาดใหญ่
โค้ด JavaScript ด้านล่างแสดงการโหลดงานนำเสนอขนาดใหญ่ (เช่น 2 GB):
const filePath = "LargePresentation.pptx";
let loadOptions = new aspose.slides.LoadOptions();
// เลือกพฤติกรรม KeepLocked — ไฟล์งานนำเสนอจะยังคงถูกล็อกตลอดอายุของ
// อินสแตนซ์ Presentation, แต่ไม่จำเป็นต้องโหลดเข้าสู่หน่วยความจำหรือคัดลอกไปยังไฟล์ชั่วคราว.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB
let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
// งานนำเสนอขนาดใหญ่ได้ถูกโหลดแล้วและสามารถใช้ได้ ขณะที่การใช้หน่วยความจือน้อย.
// ทำการเปลี่ยนแปลงงานนำเสนอ.
presentation.getSlides().get_Item(0).setName("Large presentation");
// บันทึกงานนำเสนอไปยังไฟล์อื่น การใช้หน่วยความจำยังคงต่ำในระหว่างการดำเนินการนี้.
presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);
// อย่าทำเช่นนี้! จะเกิดข้อยกเว้น I/O เนื่องจากไฟล์ถูกล็อกจนกว่าอ็อบเจ็กต์ Presentation จะถูกทำลาย.
//fs.unlinkSync(filePath);
} finally {
presentation.dispose();
}
// สามารถทำได้ที่นี่ ฟイルต้นทางไม่ถูกล็อกโดยอ็อบเจ็กต์ Presentation อีกต่อไป.
fs.unlinkSync(filePath);
Info
เพื่อแก้ไขข้อจำกัดบางประการเมื่อทำงานกับสตรีม Aspose.Slides อาจคัดลอกเนื้อหาของสตรีม การโหลดงานนำเสนอขนาดใหญ่จากสตรีมจะทำให้ต้องคัดลอกงานนำเสนอและอาจทำให้การโหลดช้าลง ดังนั้นเมื่อคุณต้องการโหลดงานนำเสนอขนาดใหญ่ เราแนะนำอย่างยิ่งให้ใช้เส้นทางไฟล์ของงานนำเสนอแทนการใช้สตรีม
เมื่อสร้างงานนำเสนอที่มีวัตถุขนาดใหญ่ (วิดีโอ, เสียง, รูปภาพความละเอียดสูง ฯลฯ) คุณสามารถใช้ BLOB management เพื่อลดการใช้หน่วยความจำ
ควบคุมแหล่งข้อมูลภายนอก
Aspose.Slides มีอินเทอร์เฟซ IResourceLoadingCallback ที่ให้คุณจัดการแหล่งข้อมูลภายนอก โค้ด JavaScript ด้านล่างแสดงวิธีการใช้อินเทอร์เฟซ IResourceLoadingCallback :
const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// โหลดภาพทดแทน.
const imageData = fs.readFileSync("aspose-logo.jpg");
args.setData(imageData);
return aspose.slides.ResourceLoadingAction.UserProvided;
} catch {
return aspose.slides.ResourceLoadingAction.Skip;
}
} else if (args.getOriginalUri().endsWith(".png")) {
// ตั้งค่า URL ทดแทน.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return aspose.slides.ResourceLoadingAction.Default;
}
// ข้ามภาพอื่นทั้งหมด.
return aspose.slides.ResourceLoadingAction.Skip;
}
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
โหลดงานนำเสนอโดยไม่มีอ็อบเจ็กต์ไบนารีที่ฝังอยู่
PowerPoint งานนำเสนออาจมีอ็อบเจ็กต์ไบนารีที่ฝังอยู่ประเภทต่อไปนี้:
- โครงการ VBA (เข้าถึงได้ผ่าน Presentation.getVbaProject);
- ข้อมูลที่ฝังอยู่ของวัตถุ OLE (เข้าถึงได้ผ่าน OleEmbeddedDataInfo.getEmbeddedFileData);
- ข้อมูลไบนารีของคอนโทรล ActiveX (เข้าถึงได้ผ่าน Control.getActiveXControlBinary).
โดยใช้เมธอด LoadOptions.setDeleteEmbeddedBinaryObjects คุณสามารถโหลดงานนำเสนอโดยไม่มีอ็อบเจ็กต์ไบนารีที่ฝังอยู่ใด ๆ
เมธอดนี้มีประโยชน์สำหรับการลบเนื้อหาไบนารีที่อาจเป็นอันตราย ตัวอย่างโค้ด JavaScript ด้านล่างแสดงวิธีโหลดงานนำเสนอโดยไม่มีเนื้อหาไบนารีที่ฝังอยู่ใด ๆ:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
// ดำเนินการต่าง ๆ บนงานนำเสนอ.
} finally {
presentation.dispose();
}
คำถามที่พบบ่อย
ฉันจะรู้ว่าไฟล์เสียหายและไม่สามารถเปิดได้อย่างไร?
คุณจะได้รับข้อยกเว้นการตรวจสอบการแยกวิเคราะห์/รูปแบบระหว่างการโหลด ข้อผิดพลาดเหล่านี้มักระบุว่าโครงสร้าง ZIP ไม่ถูกต้องหรือบันทึก PowerPoint ผิดพลาด
จะเกิดอะไรขึ้นถ้าฟอนต์ที่ต้องการหายไปขณะเปิด?
ไฟล์จะเปิดได้ แต่ภายหลังการ rendering/export อาจแทนที่ฟอนต์โดยอัตโนมัติ ให้ กำหนดการแทนที่ฟอนต์ หรือ เพิ่มฟอนต์ที่จำเป็น ในสภาพแวดล้อมการทำงาน
แล้วสื่อที่ฝังอยู่ (วิดีโอ/เสียง) จะเป็นอย่างไรเมื่อเปิด?
สื่อเหล่านั้นจะพร้อมใช้งานเป็นทรัพยากรของงานนำเสนอ หากสื่อถูกอ้างอิงผ่านเส้นทางภายนอก ให้ตรวจสอบว่าเส้นทางนั้นเข้าถึงได้ในสภาพแวดล้อมของคุณ มิฉะนั้นการ rendering/export อาจละเว้นสื่อเหล่านั้น