บันทึกงานนำเสนอใน 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();
NOTE
เมื่อคุณบันทึกด้วยZip64Mode.Never จะเกิด PptxException หากไม่สามารถบันทึกงานนำเสนอในรูปแบบ ZIP32
บันทึกงานนำเสนอโดยไม่ทำการรีเฟรชรูปย่อ
เมธอด 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();
Info
ตัวเลือกนี้ช่วยลดเวลาในการบันทึกงานนำเสนอในรูปแบบ PPTXบันทึกการอัปเดตความคืบหน้าเป็นเปอร์เซ็นต์
อินเทอร์เฟซ 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();
Info
Aspose ได้พัฒนาแอป PowerPoint Splitter ฟรี โดยใช้ API ของตนเอง แอปนี้ช่วยคุณแยกงานนำเสนอเป็นหลายไฟล์โดยบันทึกสไลด์ที่เลือกเป็นไฟล์ PPTX หรือ PPT ใหม่คำถามที่พบบ่อย
รองรับ “fast save” (การบันทึกแบบเพิ่มส่วน) เพื่อให้เขียนเฉพาะการเปลี่ยนแปลงหรือไม่?
ไม่มี การบันทึกจะสร้างไฟล์เต็มทุกครั้ง; การบันทึกแบบเพิ่มส่วน “fast save” ไม่ได้รับการสนับสนุน
การบันทึกอินสแตนซ์ Presentation เดียวกันจากหลายเธรดปลอดภัยหรือไม่?
ไม่มี อินสแตนซ์ Presentation ไม่ปลอดภัยต่อการทำงานหลายเธรด; ให้บันทึกจากเธรดเดียว
เกิดอะไรขึ้นกับไฮเปอร์ลิงก์และไฟล์ที่ลิงก์จากภายนอกเมื่อบันทึก?
ไฮเปอร์ลิงก์ จะถูกรักษาไว้ ไฟล์ที่ลิงก์จากภายนอก (เช่น วิดีโอที่อ้างอิงแบบ relative path) จะไม่ถูกคัดลอกโดยอัตโนมัติ—ให้ตรวจสอบว่าหนทางที่อ้างอิงยังเข้าถึงได้
ฉันสามารถตั้งค่า/บันทึกเมทาดาต้าเอกสาร (Author, Title, Company, Date) ได้หรือไม่?
ได้ มีการสนับสนุน คุณสมบัติเอกสารมาตรฐาน และจะถูกเขียนลงไฟล์เมื่อบันทึก