เปิดงานนำเสนอใน 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);

ควบคุมแหล่งข้อมูลภายนอก

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 งานนำเสนออาจมีอ็อบเจ็กต์ไบนารีที่ฝังอยู่ประเภทต่อไปนี้:

โดยใช้เมธอด 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 อาจละเว้นสื่อเหล่านั้น