บันทึกงานนำเสนอใน 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();
}

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

เมธอด 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();
}

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

การรายงานความคืบหน้าในการบันทึกกำหนดค่าผ่านเมธอด 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();
}

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

รองรับ “บันทึกอย่างเร็ว” (การบันทึกแบบเพิ่มส่วน) ที่เขียนเฉพาะการเปลี่ยนแปลงหรือไม่?

ไม่. การบันทึกจะสร้างไฟล์เป้าหมายเต็มทุกครั้ง; การบันทึกแบบเพิ่มส่วน “fast save” ไม่ได้รับการสนับสนุน

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

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

จะเกิดอะไรขึ้นกับไฮเปอร์ลิงก์และไฟล์ที่ลิงก์ภายนอกเมื่อบันทึก?

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

ฉันสามารถตั้งค่า/บันทึกเมตาดาต้าเอกสาร (ผู้เขียน, ชื่อเรื่อง, บริษัท, วันที่) ได้หรือไม่?

ได้. คุณสมบัติเอกสาร มาตรฐานได้รับการสนับสนุนและจะถูกเขียนลงในไฟล์เมื่อบันทึก