บันทึกงานนำเสนอใน PHP
ภาพรวม
เปิดงานนำเสนอใน PHP อธิบายวิธีใช้คลาส Presentation เพื่อเปิดงานนำเสนอ บทความนี้อธิบายวิธีสร้างและบันทึกงานนำเสนอ คลาส Presentation มีเนื้อหาของงานนำเสนอ ไม่ว่าคุณจะสร้างงานนำตั้งแต่ต้นหรือแก้ไขงานที่มีอยู่แล้ว คุณก็ต้องบันทึกเมื่อทำเสร็จแล้ว ด้วย Aspose.Slides for PHP คุณสามารถบันทึกเป็น ไฟล์ หรือ สตรีม บทความนี้อธิบายวิธีต่าง ๆ ในการบันทึกงานนำเสนอ
บันทึกงานนำเสนอเป็นไฟล์
บันทึกงานนำเสนอเป็นไฟล์โดยเรียกเมธอด save ของคลาส Presentation. ส่งชื่อไฟล์และรูปแบบการบันทึกไปยังเมธอดนั้น ตัวอย่างต่อไปนี้แสดงวิธีบันทึกงานนำเสนอด้วย Aspose.Slides
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ.
$presentation = new Presentation();
try {
// ทำงานบางอย่างที่นี่...
// บันทึกงานนำเสนอเป็นไฟล์.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
บันทึกงานนำเสนอเป็นสตรีม
คุณสามารถบันทึกงานนำเสนอเป็นสตรีมโดยส่งสตรีมผลลัพธ์ไปยังเมธอด save ของคลาส Presentation. งานนำเสนอสามารถเขียนไปยังสตรีมหลายประเภท ในตัวอย่างด้านล่าง เราจะสร้างงานนำเสนอใหม่และบันทึกเป็นสตรีมไฟล์
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ.
$presentation = new Presentation();
try {
$fileStream = new Java("java.io.FileOutputStream", "Output.pptx");
try {
// บันทึกงานนำเสนอไปยังสตรีม.
$presentation->save($fileStream, SaveFormat::Pptx);
} finally {
$fileStream->close();
}
} finally {
$presentation->dispose();
}
บันทึกงานนำเสนอด้วยมุมมองที่กำหนดล่วงหน้า
Aspose.Slides ให้คุณตั้งค่ามุมมองเริ่มต้นที่ PowerPoint ใช้เมื่อเปิดงานนำเสนอที่สร้างขึ้นผ่านคลาส ViewProperties. ใช้เมธอด setLastView กับค่าจาก enumeration ViewType
$presentation = new Presentation();
try {
$presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
$presentation->save("SlideMasterView.pptx", SaveFormat::Pptx);
} finally {
$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
$options = new PptxOptions();
$options->setConformance(Conformance::Iso29500_2008_Strict);
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ.
$presentation = new Presentation();
try {
// บันทึกงานนำเสนอในรูปแบบ Strict Office Open XML.
$presentation->save("StrictOfficeOpenXml.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
บันทึกงานนำเสนอในรูปแบบ Office Open XML ในโหมด Zip64
ไฟล์ Office Open XML เป็นไฟล์ ZIP ที่กำหนดขีดจำกัด 4 GB (2^32 ไบต์) สำหรับขนาดไฟล์ที่ไม่ได้บีบอัด, ขนาดไฟล์ที่บีบอัด, และขนาดทั้งหมดของอาร์ไคฟ์เวอร์ รวมถึงจำกัดจำนวนไฟล์สูงสุดที่ 65 535 (2^16‑1) ไฟล์ ส่วนส่วนขยายรูปแบบ ZIP64 จะเพิ่มขีดจำกัดเหล่านี้เป็น 2^64
เมธอด PptxOptions.setZip64Mode ให้คุณเลือกว่าจะใช้ส่วนขยายรูปแบบ ZIP64 เมื่อบันทึกไฟล์ Office Open XML หรือไม่
เมธอดนี้สามารถใช้ได้กับโหมดต่อไปนี้
- IfNecessary ใช้ส่วนขยายรูปแบบ ZIP64 เฉพาะเมื่องานนำเสนอเกินข้อจำกัดข้างต้น นี่คือโหมดเริ่มต้น
- Never ไม่ใช้ส่วนขยายรูปแบบ ZIP64 เลย
- Always ใช้ส่วนขยายรูปแบบ ZIP64 เสมอ
โค้ดต่อไปนี้แสดงวิธีบันทึกงานนำเสนอเป็น PPTX พร้อมเปิดใช้งานส่วนขยายรูปแบบ ZIP64
$pptxOptions = new PptxOptions();
$pptxOptions->setZip64Mode(Zip64Mode::Always);
$presentation = new Presentation("Sample.pptx");
try {
$presentation->save("OutputZip64.pptx", SaveFormat::Pptx, $pptxOptions);
} finally {
$presentation->dispose();
}
NOTE
เมื่อคุณบันทึกด้วย Zip64Mode.Never จะมีการโยน PptxException หากงานนำเสนอไม่สามารถบันทึกในรูปแบบ ZIP32บันทึกงานนำเสนอโดยไม่รีเฟรชภาพย่อ
เมธอด PptxOptions.setRefreshThumbnail ควบคุมการสร้างภาพย่อเมื่อบันทึกงานนำเสนอเป็น PPTX:
- หากตั้งค่าเป็น
trueภาพย่อจะถูกรีเฟรชระหว่างบันทึก นี่คือค่าเริ่มต้น - หากตั้งค่าเป็น
falseภาพย่อปัจจุบันจะถูกเก็บไว้ หากงานนำเสนอไม่มีภาพย่อ จะไม่ได้สร้างภาพย่อขึ้นมา
ในโค้ดด้านล่าง งานนำเสนอจะถูกบันทึกเป็น PPTX โดยไม่รีเฟรชภาพย่อของมัน
$pptxOptions = new PptxOptions();
$pptxOptions->setRefreshThumbnail(false);
$presentation = new Presentation("Sample.pptx");
try {
$presentation->save("Output.pptx", SaveFormat::Pptx, $pptxOptions);
}
finally {
$presentation->dispose();
}
Info
ตัวเลือกนี้ช่วยลดเวลาที่ใช้ในการบันทึกงานนำเสนอในรูปแบบ PPTXบันทึกการอัปเดตความคืบหน้าเป็นเปอร์เซ็นต์
การรายงานความคืบหน้าในการบันทึกกำหนดค่าผ่านเมธอด setProgressCallback ของคลาส SaveOptions และคลาสย่อยของมัน ให้คุณส่งพร็อกซี Java ที่ 구현อินเทอร์เฟซ IProgressCallback ; ระหว่างการส่งออก คอลแบ็กจะได้รับการอัปเดตเปอร์เซ็นต์เป็นระยะ
โค้ดสแนปเปิลต่อไปนี้แสดงวิธีใช้ IProgressCallback
class ExportProgressHandler {
function reporting($progressValue) {
// ใช้ค่าร้อยละของความคืบหน้าที่นี่.
$progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
echo($progress . "% of the file has been converted.");
}
}
$progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));
$saveOptions = new PdfOptions();
$saveOptions->setProgressCallback($progressHandler);
$presentation = new Presentation("Sample.pptx");
try {
$presentation->save("Output.pdf", SaveFormat::Pdf, $saveOptions);
} finally {
$presentation->dispose();
}
Info
Aspose ได้พัฒนาแอปฟรี PowerPoint Splitter ด้วย API ของตนเอง แอปนี้ช่วยให้คุณแยกงานนำเสนอเป็นหลายไฟล์โดยบันทึกสไลด์ที่เลือกเป็นไฟล์ PPTX หรือ PPT ใหม่คำถามที่พบบ่อย
รองรับ “บันทึกอย่างเร็ว” (การบันทึกแบบเพิ่มส่วน) ที่เขียนเฉพาะการเปลี่ยนแปลงหรือไม่?
ไม่. การบันทึกจะสร้างไฟล์เป้าหมายเต็มทุกครั้ง; การบันทึกแบบเพิ่มส่วน “fast save” ไม่ได้รับการสนับสนุน
สามารถบันทึกอินสแตนซ์ Presentation เดียวจากหลายเธรดได้อย่างปลอดภัยหรือไม่?
ไม่. อินสแตนซ์ Presentation ไม่ปลอดภัยต่อการทำงานหลายเธรด; ควรบันทึกจากเธรดเดียว
จะเกิดอะไรขึ้นกับไฮเปอร์ลิงก์และไฟล์ที่ลิงก์ภายนอกเมื่อบันทึก?
ไฮเปอร์ลิงก์ จะถูกคงไว้ ไฟล์ที่ลิงก์จากภายนอก (เช่นวิดีโอที่อ้างอิงด้วยเส้นทางสัมพัทธ์) จะไม่ถูกคัดลอกโดยอัตโนมัติ — ตรวจสอบให้แน่ใจว่าเส้นทางที่อ้างอิงยังสามารถเข้าถึงได้
ฉันสามารถตั้งค่า/บันทึกเมตาดาต้าเอกสาร (ผู้เขียน, ชื่อเรื่อง, บริษัท, วันที่) ได้หรือไม่?
ได้. คุณสมบัติเอกสาร มาตรฐานได้รับการสนับสนุนและจะถูกเขียนลงในไฟล์เมื่อบันทึก