เปิดงานนำเสนอใน C++

บทนำ

นอกเหนือจากการสร้างงานนำเสนอ PowerPoint ตั้งแต่ต้นแล้ว Aspose.Slides ยังสามารถเปิดงานนำเสนอที่มีอยู่ได้ หลังจากโหลดงานนำเสนอแล้ว คุณสามารถดึงข้อมูลเกี่ยวกับงานนำเสนอนั้น, แก้ไขเนื้อหาสไลด์, เพิ่มสไลด์ใหม่, ลบสไลด์ที่มีอยู่, และอื่นๆ อีกมาก

เปิดงานนำเสนอ

เพื่อเปิดงานนำเสนอที่มีอยู่ ให้สร้างอินสแตนซ์ของคลาส Presentation และส่งเส้นทางไฟล์ไปยังคอนสตรักเตอร์ของมัน

ตัวอย่าง C++ ต่อไปนี้แสดงวิธีการเปิดงานนำเสนอและรับจำนวนสไลด์ของมัน:

// สร้างอินสแตนซ์ของคลาส Presentation และส่งเส้นทางไฟล์ไปยังคอนสตรักเตอร์ของมัน.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");

// พิมพ์จำนวนสไลด์ทั้งหมดในงานนำเสนอ.
Console::WriteLine(presentation->get_Slides()->get_Count());

presentation->Dispose();

เปิดงานนำเสนอที่มีการป้องกันด้วยรหัสผ่าน

เมื่อคุณต้องการเปิดงานนำเสนอที่มีการป้องกันด้วยรหัสผ่าน ให้ส่งรหัสผ่านผ่านเมธอด set_Password ของคลาส LoadOptions เพื่อถอดรหัสและโหลดงานนำเสนอ โค้ด C++ ต่อไปนี้แสดงการทำงานนี้:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_Password(u"YOUR_PASSWORD");

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);
    
// ทำการดำเนินการบนงานนำเสนอที่ถอดรหัสแล้ว.

presentation->Dispose();

เปิดงานนำเสนอขนาดใหญ่

Aspose.Slides มีตัวเลือกโดยเฉพาะเมธอด get_BlobManagementOptions ในคลาส LoadOptions เพื่อช่วยคุณโหลดงานนำเสนอที่มีขนาดใหญ่

โค้ด C++ ต่อไปนี้แสดงการโหลดงานนำเสนอขนาดใหญ่ (เช่น 2 GB):

auto filePath = u"LargePresentation.pptx";

auto loadOptions = MakeObject<LoadOptions>();
// เลือกพฤติกรรม KeepLocked—ไฟล์งานนำเสนอจะยังคงถูกล็อคตลอดอายุการทำงานของ
// อินสแตนซ์ Presentation, แต่ไม่จำเป็นต้องโหลดเข้าสู่หน่วยความจำหรือคัดลอกไปยังไฟล์ชั่วคราว.
loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
loadOptions->get_BlobManagementOptions()->set_IsTemporaryFilesAllowed(true);
loadOptions->get_BlobManagementOptions()->set_MaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

auto presentation = MakeObject<Presentation>(filePath, loadOptions);

// งานนำเสนอขนาดใหญ่ได้ถูกโหลดแล้วและสามารถใช้ได้ในขณะที่การใช้หน่วยความจำยังคงต่ำ.

// ทำการเปลี่ยนแปลงงานนำเสนอ.
presentation->get_Slide(0)->set_Name(u"Large presentation");

// บันทึกงานนำเสนอไปยังไฟล์อื่น การใช้หน่วยความจำยังคงต่ำในระหว่างการดำเนินการนี้.
presentation->Save(u"LargePresentation-copy.pptx", SaveFormat::Pptx);

// อย่าทำเช่นนี้! จะเกิดข้อยกเว้น I/O เนื่องจากไฟล์ถูกล็อคจนกว่าจะทำลายวัตถุ Presentation.
File::Delete(filePath);

presentation->Dispose();

// สามารถทำได้ที่นี่ไฟล์ต้นทางไม่ได้ถูกล็อคโดยวัตถุ Presentation อีกต่อไป.
File::Delete(filePath);

ควบคุมทรัพยากรภายนอก

Aspose.Slides มีอินเทอร์เฟซ IResourceLoadingCallback ที่ช่วยให้คุณจัดการทรัพยากรภายนอก โค้ด C++ ต่อไปนี้แสดงวิธีการใช้อินเทอร์เฟซ IResourceLoadingCallback:

class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
    ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
    {
        if (args->get_OriginalUri().EndsWith(u".jpg"))
        {
            try
            {
                // โหลดรูปภาพแทน.
                auto imageData = File::ReadAllBytes(u"aspose-logo.jpg");
                args->SetData(imageData);
                return ResourceLoadingAction::UserProvided;
            }
            catch (Exception&)
            {
                return ResourceLoadingAction::Skip;
            }
        }
        else if (args->get_OriginalUri().EndsWith(u".png"))
        {
            // ตั้งค่า URL แทน.
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // ข้ามรูปภาพอื่นทั้งหมด.
        return ResourceLoadingAction::Skip;
    }
};
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_ResourceLoadingCallback(MakeObject<ImageLoadingHandler>());

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);

โหลดงานนำเสนอโดยไม่มีออบเจ็กต์ไบนารีที่ฝังอยู่

งานนำเสนอ PowerPoint สามารถมีออบเจ็กต์ไบนารีฝังอยู่ประเภทต่อไปนี้:

โดยใช้เมธอด ILoadOptions::set_DeleteEmbeddedBinaryObjects คุณสามารถโหลดงานนำเสนอโดยไม่มีออบเจ็กต์ไบนารีที่ฝังอยู่เลย

เมธอดนี้มีประโยชน์สำหรับการลบเนื้อหาไบนารีที่อาจเป็นอันตราย โค้ด C++ ต่อไปนี้แสดงวิธีการโหลดงานนำเสนอโดยไม่มีเนื้อหาไบนารีที่ฝังอยู่ใดๆ:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_DeleteEmbeddedBinaryObjects(true);

auto presentation = MakeObject<Presentation>(u"malware.ppt", loadOptions);

// Perform operations on the presentation.

presentation->Dispose();

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

ฉันจะทราบได้อย่างไรว่าไฟล์เสียหายและไม่สามารถเปิดได้?

คุณจะได้รับข้อยกเว้นการวิเคราะห์/ตรวจสอบรูปแบบระหว่างการโหลด ข้อผิดพลาดเหล่านี้มักจะระบุโครงสร้าง ZIP ที่ไม่ถูกต้องหรือเรคคอร์ด PowerPoint ที่เสียหาย

เกิดอะไรขึ้นหากฟอนต์ที่ต้องการหายไปเมื่อเปิดไฟล์?

ไฟล์จะเปิดได้ แต่ภายหลัง rendering/export อาจทำการแทนที่ฟอนต์ กำหนดการแทนที่ฟอนต์ หรือ เพิ่มฟอนต์ที่ต้องการ ในสภาพแวดล้อมการทำงาน

แล้วสื่อฝัง (วิดีโอ/เสียง) เมื่อต้องเปิดเป็นอย่างไร?

สื่อเหล่านั้นจะพร้อมใช้งานเป็นทรัพยากรของงานนำเสนอ หากสื่อถูกอ้างอิงผ่านเส้นทางภายนอก ให้ตรวจสอบว่าเส้นทางเหล่านั้นสามารถเข้าถึงได้ในสภาพแวดล้อมของคุณ มิฉะนั้น rendering/export อาจละเว้นสื่อเหล่านั้น