วิธีบันทึกงานนำเสนอใน Python

วิธีบันทึกงานนำเสนอใน Python

Aspose.Slides FOSS for Python บันทึกงานนำเสนอโดยเฉพาะเป็นรูปแบบ .pptx โดยใช้ prs.save(path, SaveFormat.PPTX). คู่มือนี้ครอบคลุมรูปแบบการบันทึกที่ถูกต้อง, การบันทึกไปยังเส้นทางอื่น, และข้อผิดพลาดทั่วไปที่เกี่ยวกับการบันทึก.

คู่มือแบบขั้นตอนต่อขั้นตอน

ขั้นตอนที่ 1: ติดตั้งแพคเกจ

pip install aspose-slides-foss

ขั้นตอนที่ 2: เปิดหรือสร้างงานนำเสนอ

ควรใช้ตัวจัดการบริบทเสมอ การเรียกบันทึกต้องทำภายในบล็อก with.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

# Create new
with slides.Presentation() as prs:
    prs.save("new.pptx", SaveFormat.PPTX)

# Open existing
with slides.Presentation("input.pptx") as prs:
    prs.save("output.pptx", SaveFormat.PPTX)

ขั้นตอนที่ 3: บันทึกที่ส่วนท้ายของ with บล็อก

วางการเรียก save() เป็นคำสั่งสุดท้ายภายในบล็อก with หลังจากการแก้ไขทั้งหมดเสร็จสิ้น.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    shape.add_text_frame("Hello, World!")
    prs.save("output.pptx", SaveFormat.PPTX)

ขั้นตอนที่ 4: บันทึกไปยังเส้นทางอื่น

ระบุเส้นทางเอาต์พุตที่แตกต่างเพื่อสร้างไฟล์ใหม่โดยไม่แก้ไขไฟล์ต้นฉบับ:

with slides.Presentation("template.pptx") as prs:
    # modify ...
    prs.save("customized.pptx", SaveFormat.PPTX)

ไฟล์ template.pptx ไม่ถูกแก้ไข; customized.pptx ถูกสร้าง (หรือเขียนทับหากมีอยู่แล้ว).


ขั้นตอนที่ 5: ตรวจสอบผลลัพธ์

หลังจากบล็อก with สิ้นสุด ไฟล์จะสมบูรณ์และปิดแล้ว ตรวจสอบว่ามีอยู่:

import os
from pathlib import Path

output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")

รูปแบบการบันทึกที่รองรับ

FormatEnum ValueSupported
PPTX (Office Open XML)SaveFormat.PPTXใช่
PDFไม่มีไม่
HTMLไม่มีไม่
SVGไม่มีไม่
PNG / JPEGไม่มีไม่
ODP (OpenDocument)ไม่มีไม่

รองรับเฉพาะ PPTX เท่านั้น การพยายามบันทึกในรูปแบบอื่นใดจะทำให้เกิด NotImplementedError หรือข้อผิดพลาดรูปแบบที่ไม่รองรับ.


ปัญหาทั่วไปและการแก้ไข

PermissionError: [Errno 13] Permission denied

ไฟล์ผลลัพธ์กำลังเปิดอยู่ในแอปพลิเคชันอื่น (เช่น PowerPoint มีไฟล์เปิดอยู่) ปิดไฟล์ในแอปพลิเคชันอื่นก่อนบันทึก.

ไฟล์ถูกสร้างแล้วแต่ดูเหมือนว่างเปล่าหรือเสียหาย

ตรวจสอบให้แน่ใจว่า prs.save() ถูกเรียกภายในบล็อก with ไม่ใช่หลังจากนั้น หลังจากบล็อก with สิ้นสุด วัตถุ Presentation จะถูกทำลายและการเรียกต่อไปจะล้มเหลวโดยไม่มีการแจ้งเตือนหรือเกิดข้อผิดพลาด.

NotImplementedError เมื่อบันทึก

สิ่งนี้เกิดขึ้นเมื่อพยายามบันทึกในรูปแบบที่ไม่ใช่ PPTX หรือเมื่อใช้ฟีเจอร์ที่ไม่รองรับ (เช่น แผนภูมิหรือแอนิเมชัน) ระหว่างการบันทึก.


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

ฉันสามารถบันทึกลงไฟล์เดียวกันที่เปิดไว้ได้หรือไม่?

ใช่ การบันทึกไปยังเส้นทางเดียวกันจะเขียนทับไฟล์ต้นฉบับ:

with slides.Presentation("deck.pptx") as prs:
    # modify ...
    prs.save("deck.pptx", SaveFormat.PPTX)  # overwrites original

ฉันสามารถบันทึกลงบัฟเฟอร์ไบต์แทนไฟล์ได้หรือไม่?

ใช่. ส่งอ็อบเจ็กต์ io.BytesIO โดยตรงไปยัง prs.save() — มันรับปลายทาง BinaryIO ใดก็ได้:

import io
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

buf = io.BytesIO()
with slides.Presentation() as prs:
    # ... modify presentation ...
    prs.save(buf, SaveFormat.PPTX)

pptx_bytes = buf.getvalue()

การบันทึกทำให้เนื้อหาที่ฉันไม่ได้แก้ไขยังคงอยู่หรือไม่?

ใช่. ส่วน XML ที่ไม่รู้จักจากไฟล์ต้นฉบับจะถูกเก็บไว้โดยตรงตามต้นฉบับ. ไลบรารีจะทำการซีเรียลไลซ์เฉพาะส่วนของโมเดลเอกสารที่มันเข้าใจเท่านั้น และจะส่งต่อ XML ใด ๆ ที่มันไม่รู้จักต่อไป.


ดูเพิ่มเติม

 ภาษาไทย