บันทึกงานนำเสนอใน C++

ภาพรวม

Open Presentations in C++ อธิบายวิธีใช้คลาส Presentation เพื่อเปิดงานนำเสนอ บทความนี้อธิบายวิธีสร้างและบันทึกงานนำเสนอ คลาส Presentation มีเนื้อหาของงานนำเสนอ ไม่ว่าคุณจะสร้างงานนำเสนอจากศูนย์หรือแก้ไขงานที่มีอยู่ คุณจะต้องบันทึกเมื่อทำเสร็จ ด้วย Aspose.Slides สำหรับ C++ คุณสามารถบันทึกลง ไฟล์ หรือ สตรีม บทความนี้อธิบายวิธีต่าง ๆ ในการบันทึกงานนำเสนอ.

บันทึกงานนำเสนอเป็นไฟล์

บันทึกงานนำเสนอลงไฟล์โดยเรียกเมธอด Save ของคลาส Presentation ส่งชื่อไฟล์และรูปแบบการบันทึกให้เมธอด ตัวอย่างต่อไปนี้แสดงวิธีบันทึกงานนำเสนอด้วย Aspose.Slides.

// สร้างอินสแทนซ์ของคลาส Presentation ที่แสดงไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>();

// ทำงานบางอย่างที่นี่...
// บันทึกงานนำเสนอลงไฟล์.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);

presentation->Dispose();

บันทึกงานนำเสนอเป็นสตรีม

คุณสามารถบันทึกงานนำเสนอเป็นสตรีมโดยส่งสตรีมผลลัพธ์ไปยังเมธอด Save ของคลาส Presentation งานนำเสนอสามารถเขียนลงสตรีมได้หลายประเภท ในตัวอย่างด้านล่าง เราจะสร้างงานนำเสนอใหม่และบันทึกลงสตรีมไฟล์.

// สร้างอินสแทนซ์ของคลาส Presentation ที่แสดงไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>();

auto fileStream = MakeObject<FileStream>(u"Output.pptx", FileMode::Create);

// บันทึกงานนำเสนอไปยังสตรีม.
presentation->Save(fileStream, SaveFormat::Pptx);

presentation->Dispose();
fileStream->Close();

บันทึกงานนำเสนอพร้อมประเภทมุมมองที่กำหนดไว้ล่วงหน้า

Aspose.Slides ให้คุณกำหนดมุมมองเริ่มต้นที่ PowerPoint ใช้เมื่อเปิดงานนำเสนอที่สร้างขึ้นผ่านคลาส ViewProperties ใช้วิธี set_LastView พร้อมค่าจาก enumeration ViewType.

auto presentation = MakeObject<Presentation>();

presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);

presentation->Save(u"SlideMasterView.pptx", SaveFormat::Pptx);
presentation->Dispose();

บันทึกงานนำเสนอในรูปแบบ Strict Office Open XML

Aspose.Slides ให้คุณบันทึกงานนำเสนอในรูปแบบ Strict Office Open XML ใช้คลาส PptxOptions และตั้งค่าคุณสมบัติ conformance ขณะบันทึก หากคุณตั้งค่า Conformance.Iso29500_2008_Strict ไฟล์ผลลัพธ์จะถูกบันทึกในรูปแบบ Strict Office Open XML
ตัวอย่างด้านล่างสร้างงานนำเสนอและบันทึกในรูปแบบ Strict Office Open XML

auto options = MakeObject<PptxOptions>();
options->set_Conformance(Conformance::Iso29500_2008_Strict);

// สร้างอินสแทนซ์ของคลาส Presentation ที่แสดงไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>();

// บันทึกงานนำเสนอในรูปแบบ Strict Office Open XML.
presentation->Save(u"StrictOfficeOpenXml.pptx", SaveFormat::Pptx, options);
presentation->Dispose();

บันทึกงานนำเสนอในรูปแบบ Office Open XML ในโหมด Zip64

ไฟล์ Office Open XML เป็นไฟล์ ZIP ที่จำกัดขนาดไม่บีบอัดของไฟล์ใด ๆ ไม่เกิน 4 GB (2^32 ไบต์) ขนาดที่บีบอัดของไฟล์ใด ๆ ไม่เกิน 4 GB และขนาดรวมของไฟล์อับรวมไม่เกิน 4 GB รวมทั้งจำกัดจำนวนไฟล์ในอาร์ไคฟ์ไม่เกิน 65,535 (2^16‑1) ไฟล์ ส่วนขยายรูปแบบ ZIP64 จะเพิ่มข้อจำกัดเหล่านี้เป็น 2^64
เมธอด IPptxOptions::set_Zip64Mode ให้คุณเลือกว่าจะใช้ส่วนขยายรูปแบบ ZIP64 หรือไม่ขณะบันทึกไฟล์ Office Open XML
เมธอดนี้สามารถใช้กับโหมดต่อไปนี้:

  • IfNecessary ใช้ส่วนขยายรูปแบบ ZIP64 เฉพาะเมื่อรายการนำเสนอเกินขีดจำกัดดังกล่าว นี่คือโหมดเริ่มต้น.
  • Never จะไม่ใช้ส่วนขยายรูปแบบ ZIP64.
  • Always จะใช้ส่วนขยายรูปแบบ ZIP64 เสมอ.

โค้ดต่อไปนี้แสดงวิธีบันทึกงานนำเสนอเป็น PPTX โดยเปิดใช้ส่วนขยายรูปแบบ ZIP64:

auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_Zip64Mode(Zip64Mode::Always);

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

presentation->Save(u"OutputZip64.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();

บันทึกงานนำเสนอโดยไม่ทำการรีเฟรชรูปย่อ

เมธอด PptxOptions::set_RefreshThumbnail ควบคุมการสร้างรูปย่อเมื่อบันทึกงานนำเสนอเป็น PPTX:

  • หากตั้งค่าเป็น true รูปย่อจะถูกรีเฟรชระหว่างการบันทึก นี่คือค่าเริ่มต้น.
  • หากตั้งค่าเป็น false รูปย่อปัจจุบันจะถูกเก็บไว้ หากงานนำเสนอไม่มีรูปย่อ จะไม่สร้างรูปย่อใด

ในโค้ดด้านล่าง งานนำเสนอจะถูกบันทึกเป็น PPTX โดยไม่รีเฟรชรูปย่อ.

auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_RefreshThumbnail(false);

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

presentation->Save(u"Output.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();

บันทึกการอัปเดตความคืบหน้าเป็นเปอร์เซ็นต์

อินเทอร์เฟซ IProgressCallback ถูกใช้ผ่านเมธอด set_ProgressCallback ที่เปิดให้ใช้โดยอินเทอร์เฟซ ISaveOptions และคลาสเชิงนามธรรม SaveOptions กำหนดการใช้งานของ IProgressCallback ด้วย set_ProgressCallback เพื่อรับการอัปเดตความคืบหน้าในการบันทึกเป็นเปอร์เซ็นต์
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้ IProgressCallback.

class ExportProgressHandler : public IProgressCallback
{
public:
    void Reporting(double progressValue)
    {
        // ใช้ค่าร้อยละของความคืบหน้าในที่นี้.
        int progress = static_cast<int>(progressValue);

        Console::WriteLine(u"{0}% of the file has been converted.", progress);
    }
};
auto saveOptions = MakeObject<PdfOptions>();
saveOptions->set_ProgressCallback(MakeObject<ExportProgressHandler>());

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

presentation->Save(u"Output.pdf", SaveFormat::Pdf, saveOptions);
presentation->Dispose();

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

รองรับ “fast save” (การบันทึกแบบเพิ่มส่วน) เพื่อให้เขียนเฉพาะการเปลี่ยนแปลงหรือไม่?
ไม่มี การบันทึกจะสร้างไฟล์เต็มทุกครั้ง; การบันทึกแบบเพิ่มส่วน “fast save” ไม่ได้รับการสนับสนุน

การบันทึกอินสแตนซ์ Presentation เดียวกันจากหลายเธรดปลอดภัยหรือไม่?
ไม่มี อินสแตนซ์ Presentation ไม่ปลอดภัยต่อการทำงานหลายเธรด; ให้บันทึกจากเธรดเดียว

เกิดอะไรขึ้นกับไฮเปอร์ลิงก์และไฟล์ที่ลิงก์จากภายนอกเมื่อบันทึก?
ไฮเปอร์ลิงก์ จะถูกรักษาไว้ ไฟล์ที่ลิงก์จากภายนอก (เช่น วิดีโอที่อ้างอิงแบบ relative path) จะไม่ถูกคัดลอกโดยอัตโนมัติ—ให้ตรวจสอบว่าหนทางที่อ้างอิงยังเข้าถึงได้

ฉันสามารถตั้งค่า/บันทึกเมทาดาต้าเอกสาร (Author, Title, Company, Date) ได้หรือไม่?
ได้ มีการสนับสนุน คุณสมบัติเอกสารมาตรฐาน และจะถูกเขียนลงไฟล์เมื่อบันทึก