เปิดงานนำเสนอใน .NET

บทนำ

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

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

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

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

// สร้างอ็อบเจ็กต์ของคลาส Presentation และส่งพาธไฟล์ให้กับคอนสตรัคเตอร์ของมัน.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // พิมพ์จำนวนสไลด์ทั้งหมดในงานนำเสนอ.
    System.Console.WriteLine(presentation.Slides.Count);
}

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

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

LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
using (Presentation presentation = new Presentation("Sample.pptx", loadOptions))
{
    // ดำเนินการต่าง ๆ บนงานนำเสนอที่ถอดรหัสแล้ว.
}

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

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

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

const string filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = 
    {
        // เลือกพฤติกรรม KeepLocked—ไฟล์งานนำเสนอจะถูกล็อกไว้ตลอดอายุของ 
        // อินสแตนซ์ Presentation แต่ไม่จำเป็นต้องโหลดเข้าสู่หน่วยความจำหรือคัดลอกไปยังไฟล์ชั่วคราว.
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024 // 10 MB
    }
};

using (Presentation presentation = new Presentation(filePath, loadOptions))
{
    // งานนำเสนอขนาดใหญ่ได้ถูกโหลดและสามารถใช้งานได้ ในขณะที่การใช้หน่วยความจำน้อย

    // ทำการเปลี่ยนแปลงงานนำเสนอ
    presentation.Slides[0].Name = "Large presentation";

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

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

// สามารถทำได้ที่นี่ไฟล์ต้นฉบับไม่ถูกล็อกโดยอ็อบเจ็กต์ Presentation อีกต่อไป
File.Delete(filePath);

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

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

LoadOptions loadOptions = new LoadOptions();
loadOptions.ResourceLoadingCallback = new ImageLoadingHandler();

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
public class ImageLoadingHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
    {
        if (args.OriginalUri.EndsWith(".jpg"))
        {
            try
            {
                // โหลดภาพทดแทน.
                byte[] imageData = File.ReadAllBytes("aspose-logo.jpg");
                args.SetData(imageData);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // กำหนด URL ทดแทน.
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // ข้ามภาพอื่นทั้งหมด.
        return ResourceLoadingAction.Skip;
    }
}

โหลดงานนำเสนอโดยไม่มีวัตถุไบนารีฝัง

งานนำเสนอ PowerPoint สามารถมีประเภทของวัตถุไบนารีฝังดังต่อไปนี้:

โดยใช้คุณสมบัติ ILoadOptions.DeleteEmbeddedBinaryObjects คุณสามารถโหลดงานนำเสนอโดยไม่มีวัตถุไบนารีฝังใด ๆ

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

LoadOptions loadOptions = new LoadOptions()
{
	DeleteEmbeddedBinaryObjects = true
}

using (Presentation presentation = new Presentation("malware.ppt", loadOptions))
{
    // ดำเนินการต่าง ๆ บนงานนำเสนอ.
}

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

How can I tell that a file is corrupted and can’t be opened?

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

What happens if required fonts are missing when opening?

ไฟล์จะเปิดได้ แต่ภายหลังการ rendering/export อาจทำการทดแทนฟอนท์ Configure font substitutions หรือ add the required fonts ให้กับสภาพแวดล้อมการทำงาน

What about embedded media (video/audio) when opening?

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