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

ภาพรวม

เปิดงานนำเสนอใน PHP อธิบายวิธีการใช้คลาส Presentation เพื่อเปิดงานนำเสนอ บทความนี้อธิบายวิธีการสร้างและบันทึกงานนำเสนอ คลาส Presentation มีเนื้อหาของงานนำเสนอ ไม่ว่าคุณจะสร้างงานนำตั้งแต่เริ่มหรือแก้ไขงานที่มีอยู่แล้ว คุณจะต้องบันทึกเมื่อทำเสร็จ ด้วย Aspose.Slides สำหรับ 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 และตั้งค่า property 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();
}

บันทึกงานนำเสนอในรูปแบบ Office Open XML พร้อมระดับการบีบอัด

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

Aspose.Slides มีเมธอด PptxOptions.setCompressionLevel ให้คุณระบุระดับการบีบอัดเมื่อบันทึกงานนำเสนอในรูปแบบ Office Open XML

ระดับการบีบอัดที่มีให้เลือก ได้แก่:

  • None: ไม่บีบอัด ไฟล์จะถูกเก็บไว้ตามเดิม
  • Level1: การบีบอัดที่เร็วที่สุดด้วยอัตราการบีบอัดต่ำที่สุด
  • Level2: การบีบอัดที่เร็วกว่าโดยอัตราการบีบอัดดีกว่า Level1 เล็กน้อย
  • Level3: ให้การบีบอัดที่ดีกว่า Level2 ด้วยผลกระทบต่อเวลาประมวลผลปานกลาง
  • Level4: ให้การบีบอัดที่ดีกว่า Level3
  • Level5: ปรับปรุงการบีบอัดเหนือ Level4 โดยใช้เวลาประมวลผลเพิ่ม
  • Level6: การบีบอัดมาตรฐานที่ให้สมดุลที่ดีระหว่างความเร็วและขนาดไฟล์ นี้คือ ระดับการบีบอัดเริ่มต้น
  • Level7: ให้การบีบอัดที่ดีกว่า Level6 แต่ประมวลผลช้ากว่า
  • Level8: ให้การบีบอัดที่ดีกว่า Level7
  • Level9: การบีบอัดสูงสุด ให้ขนาดไฟล์ที่เล็กที่สุดแต่ใช้เวลาประมวลผลนานที่สุด

ตัวอย่างต่อไปนี้แสดงวิธีบันทึกงานนำเสนอเป็นไฟล์ PPTX โดยไม่มีการบีบอัด:

$pptxOptions = new PptxOptions();
$pptxOptions->setCompressionLevel(CompressionLevel::None);

$presentation = new Presentation("Sample.pptx");
try {
    $presentation->save("Sample-out.pptx", SaveFormat::Pptx, $pptxOptions);
} finally {
    $presentation->dispose();
}

ตัวอย่างนี้แสดงวิธีบันทึกงานนำเสนอเป็นไฟล์ PPTX ด้วยการบีบอัดสูงสุด:

$pptxOptions = new PptxOptions();
$pptxOptions->setCompressionLevel(CompressionLevel::Level9);

$presentation = new Presentation("Sample.pptx");
try {
    $presentation->save("Sample-level9.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 proxy ที่ทำการ implements อินเทอร์เฟซ 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” (การบันทึกแบบเพิ่ม) รองรับให้บันทึกเฉพาะการเปลี่ยนแปลงหรือไม่?

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

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

ไม่ได้ อินสแตนซ์ Presentation ไม่ปลอดภัยต่อหลายเธรด (/slides/th/php-java/multithreading/) ควรบันทึกจากเธรดเดียว

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

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

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

ได้ คุณสมบัติเพิ่มเติมของเอกสารมาตรฐาน [/slides/th/php-java/presentation-properties/] จะได้รับการสนับสนุนและจะถูกเขียนลงในไฟล์เมื่อบันทึก