วิธีบันทึกงานนำเสนอใน 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")รูปแบบการบันทึกที่รองรับ
| Format | Enum Value | Supported |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | ใช่ |
| ไม่มี | ไม่ | |
| 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 ใด ๆ ที่มันไม่รู้จักต่อไป.