ดึงข้อมูลและอัปเดตข้อมูลการนำเสนอใน Python
ภาพรวม
Aspose.Slides สามารถระบุรูปแบบของการนำเสนอและอ่านข้อมูลเมตาดาต้าเอกสารโดยไม่ต้องสร้างโมเดลวัตถุการนำเสนอที่สมบูรณ์ นี่มีประโยชน์เมื่อคุณต้องการจัดประเภทไฟล์ สร้างรายการสต็อก หรือสอบคุณสมบัติก่อนตัดสินใจว่าจะโหลดและประมวลผลเนื้อหาการนำเสนอหรือไม่.
บทความนี้แสดงการตรวจสอบแบบเบาโดยใช้ PresentationFactory และ PresentationInfo, รวมถึงการอัปเดตแบบเจาะจงผ่าน DocumentProperties.
ตรวจสอบรูปแบบการนำเสนอ
ใช้ PresentationFactory.get_presentation_info เพื่อตรวจสอบไฟล์โดยไม่ต้องสร้างอินสแตนซ์ของ Presentation คุณสมบัติ PresentationInfo.load_format รายงานรูปแบบที่ตรวจพบ เช่น PPTX, PPT หรือ ODP.
import aspose.slides as slides
file_names = ["pres.pptx", "pres.ppt", "pres.odp"]
for file_name in file_names:
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_name)
print(f"{file_name}: {presentation_info.load_format}")
สร้างรายการสต็อกการนำเสนอแบบเบา
เมื่อคุณประมวลผลไฟล์การนำเสนอจำนวนมาก คุณอาจต้องการรายการสต็อกที่กะทัดรัดสำหรับการตรวจสอบ ความจัดทำดัชนี หรือระบบการจัดการเอกสาร ในกรณีนี้ ใช้ PresentationFactory.get_presentation_info เพื่อรับอ็อบเจ็กต์ PresentationInfo แล้วเรียก PresentationInfo.read_document_properties เพื่ออ่านข้อมูลเมตาดาต้าเอกสาร วิธีนี้ไม่สร้างอินสแตนซ์ของ Presentation หรือบังคับให้คุณวนรอบโมเดลวัตถุการนำเสนอเต็มรูปแบบ.
คุณสมบัติเพิ่มเติมที่เปิดโดย DocumentProperties ให้ค่ารายการสต็อกต่อไปนี้:
| คุณสมบัติ | ค่ารายการสต็อก |
|---|---|
| slides | จำนวนสไลด์ทั้งหมด. |
| hidden_slides | จำนวนสไลด์ที่ซ่อนอยู่. |
| notes | จำนวนสไลด์ที่มีบันทึกอธิบาย. |
| paragraphs | จำนวนย่อหน้าทั้งหมด (ถ้ามี). |
| words | จำนวนคำทั้งหมด. |
| multimedia_clips | จำนวนคลิปเสียงและวิดีโอทั้งหมด. |
ตัวอย่างต่อไปนี้อ่านค่าเหล่านี้โดยไม่สร้างอ็อบเจ็กต์ Presentation และพิมพ์รายการสต็อกแบบกะทัดรัด นอกจากนี้ยังรวม heading_pairs กับ titles_of_parts เพื่อแสดงกลุ่มเนื้อหา เช่น แบบอักษร ธีม และชื่อสไลด์.
import os
import aspose.slides as slides
file_path = "sample.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)
document_properties = presentation_info.read_document_properties()
print(f"File: {os.path.basename(file_path)}")
print(f"Format: {presentation_info.load_format}")
print(f"Title: {document_properties.title}")
print(f"Author: {document_properties.author}")
print("Statistics:")
print(f" Slides: {document_properties.slides}")
print(f" Hidden slides: {document_properties.hidden_slides}")
print(f" Slides with notes: {document_properties.notes}")
print(f" Paragraphs: {document_properties.paragraphs}")
print(f" Words: {document_properties.words}")
print(f" Multimedia clips: {document_properties.multimedia_clips}")
heading_pairs = document_properties.heading_pairs or []
titles_of_parts = document_properties.titles_of_parts or []
part_index = 0
if not heading_pairs or not titles_of_parts:
print("Content groups: not available")
else:
print("Content groups:")
for heading_pair in heading_pairs:
print(f" {heading_pair.name} ({heading_pair.count})")
for _ in range(heading_pair.count):
if part_index >= len(titles_of_parts):
break
print(f" - {titles_of_parts[part_index]}")
part_index += 1
if part_index < len(titles_of_parts):
print(" Other parts:")
while part_index < len(titles_of_parts):
print(f" - {titles_of_parts[part_index]}")
part_index += 1
แต่ละ HeadingPair ให้ชื่อกลุ่มและจำนวนรายการในกลุ่มนั้น DocumentProperties.titles_of_parts เป็นคอลเลกชันแบบแบนที่เรียงลำดับ ดังนั้นให้ใช้จำนวนชื่อที่ต่อเนื่องตามที่กำหนดโดยแต่ละ heading pair.
เมตาดาต้าจัดเก็บและข้อจำกัดของรูปแบบ
คุณสมบัติรายการสต็อกที่ส่งคืนโดย PresentationInfo.read_document_properties สะท้อนเมตาดาต้าที่มีในเอกสารต้นทาง Aspose.Slides ไม่โหลดและวนรอบโมเดลวัตถุการนำเสนอเพื่อคำนวณค่าตามใหม่สำหรับการเรียกนี้ คุณสมบัติที่ขาดหายจะถูกแทนด้วยค่ามาตรฐาน และค่าที่จัดเก็บอาจล้าสมัยหากแอปพลิเคชันที่บันทึกไฟล์ล่าสุดไม่ได้อัปเดตคุณสมบัติของเอกสาร.
- PPTX: รูปแบบนี้ให้คุณสมบัติเพิ่มเติมของเอกสารสำหรับจำนวนสไลด์, โน้ต, สไลด์ที่ซ่อน, ย่อหน้า, คำ, และมัลติมีเดีย รวมถึง heading pairs และ part titles ความพร้อมใช้งานขึ้นอยู่กับว่าคุณสมบัติเหล่านั้นถูกเขียนโดยผู้ผลิตเอกสารหรือไม่.
- PPT: รูปแบบไบนารีนี้สามารถจัดเก็บคุณสมบัติสรุปเอกสารที่สอดคล้องกัน หากคุณสมบัติเช่นนั้นไม่มีหรือไม่ได้รับการอัปเดตโดยผู้ผลิตเอกสาร Aspose.Slides จะคืนค่าที่จัดเก็บหรือค่าเริ่มต้นแทนที่จะคำนวณจากสไลด์.
- ODP: เมตาดาต้า OpenDocument ให้สถิติทั่วไปของเอกสาร เช่น จำนวนหน้า, ย่อหน้า, และคำ แต่ค่าต่าง ๆ นี้ไม่สอดคล้องกับคุณสมบัติเพิ่มเติมเฉพาะ PowerPoint บางอย่าง เช่น hidden-slide, notes-slide, multimedia, heading-pair, และ part-title อาจไม่มีให้ใช้งาน และคุณสมบัติสต็อกอาจคืนค่ามาตรฐาน อย่ามองว่าค่าเป็นศูนย์หรือคอลเลกชันว่างเป็นหลักฐานที่แน่นอนว่าข้อมูลที่สอดคล้องไม่มีอยู่.
ใช้วิธีเมตาดาต้าแบบเบาสำหรับการสร้างสต็อกและการตรวจสอบเบื้องต้น โหลดการนำเสนอและตรวจสอบโมเดลวัตถุแบบเรียลไทม์เมื่อผลลัพธ์ต้องสะท้อนการเปลี่ยนแปลงในหน่วยความจำหรือเมื่อคุณต้องการตรวจสอบเนื้อหาการนำเสนอจริง.
อัปเดตคุณสมบัติการนำเสนอ
คุณสมบัติที่ส่งคืนโดย PresentationInfo.read_document_properties สามารถเปลี่ยนแปลงได้โดยไม่ต้องสร้างอินสแตนซ์ของ Presentation ใช้การเปลี่ยนแปลงด้วย PresentationInfo.update_document_properties, แล้วเขียนการนำเสนอที่ผูกไว้ด้วย PresentationInfo.write_binded_presentation.
ภาพต่อไปนี้แสดงคุณสมบัติเอกสารต้นฉบับของการนำเสนอ PowerPoint.

ตัวอย่างต่อไปนี้เปลี่ยนชื่อเรื่องและเวลาการบันทึกล่าสุดและเขียนผลลัพธ์ไปยังไฟล์ใหม่:
import datetime
import aspose.slides as slides
source_file = "sample.pptx"
output_file = "sample_with_updated_properties.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(source_file)
document_properties = presentation_info.read_document_properties()
document_properties.title = "Quarterly sales report"
document_properties.last_saved_time = datetime.datetime.now(datetime.timezone.utc)
presentation_info.update_document_properties(document_properties)
with open(output_file, "wb") as output_stream:
presentation_info.write_binded_presentation(output_stream)
ภาพต่อไปนี้แสดงคุณสมบัติเอกสารที่อัปเดต.

ลิงก์ที่เป็นประโยชน์
สำหรับการตรวจสอบความปลอดภัยและการตั้งค่าการปกป้องที่เกี่ยวข้อง ดูบทความต่อไปนี้:
คำถามที่พบบ่อย
ฉันจะตรวจสอบได้อย่างไรว่าแบบอักษรถูกฝังอยู่หรือไม่และมีแบบใดบ้าง?
โหลดการนำเสนอและใช้ Presentation.fonts_manager. เรียก FontsManager.get_embedded_fonts เพื่อรับแบบอักษรที่ฝังอยู่และ FontsManager.get_fonts เพื่อรับแบบอักษรที่การนำใช้เปรียบเทียบผลลัพธ์ทั้งสองเพื่อค้นหาแบบอักษรที่จำเป็นสำหรับการเรนเดอร์แต่ไม่ได้ฝัง.
ฉันจะตรวจสอบอย่างรวดเร็วได้ไหมว่าไฟล์มีสไลด์ที่ซ่อนอยู่หรือไม่และจำนวนเท่าใด?
เมื่อเมตาดาต้าเอกสารที่จัดเก็บเพียงพอ ให้อ่าน DocumentProperties.hidden_slides ผ่าน PresentationFactory.get_presentation_info และ PresentationInfo.read_document_properties. วิธีนี้เหมาะสำหรับการสร้างสต็อกแบบเบา หากการนำเสนอได้รับการแก้ไขในหน่วยความจำ เมตาดาต้าที่จัดเก็บอาจขาดหายหรือล้าสมัย หรือคุณต้องการตรวจสอบค่าที่เป็นจริง ให้วนรอบผ่าน Presentation.slides และตรวจสอบคุณสมบัติ Slide.hidden ของแต่ละสไลด์แทน.
ฉันสามารถตรวจจับได้หรือไม่ว่ามีการใช้ขนาดและการวางแนวสไลด์ที่กำหนดเองหรือไม่ และว่าต่างจากค่าเริ่มต้นหรือไม่?
ได้เลย โหลดการนำเสนอและอ่าน Presentation.slide_size. ตรวจสอบ SlideSize.type, SlideSize.size, และ SlideSize.orientation เพื่อเปรียบเทียบการตั้งค่าปัจจุบันกับค่าที่กำหนดล่วงหน้าและมิติที่คาดหวัง.
มีวิธีรวดเร็วในการตรวจสอบว่ากราฟอ้างอิงแหล่งข้อมูลภายนอกหรือไม่?
ได้เลย ค้นหาแต่ละ Chart และตรวจสอบ ChartData.data_source_type. หากเป็นเวิร์กบุ๊กภายนอก ให้อ่าน ChartData.external_workbook_path. ประเภทแหล่งข้อมูลและเส้นทางบ่งชี้การอ้างอิงภายนอก แต่การตรวจสอบว่าตำแหน่งเป้าหมายพร้อมใช้งานหรือไม่ต้องทำการตรวจสอบทรัพยากรแยกต่างหาก.
ฉันจะประเมินสไลด์ที่ ‘หนัก’ ซึ่งอาจทำให้การเรนเดอร์หรือการส่งออกเป็น PDF ช้าได้อย่างไร?
ไม่มีคุณสมบัติความซับซ้อนเดียวที่ใช้ได้ ให้วนรอบ Presentation.slides และคอลเลกชัน BaseSlide.shapes ของแต่ละสไลด์ ใช้จำนวนรูปทรงและการมีอยู่ของภาพขนาดใหญ่ เอฟเฟกต์ แอนิเมชัน หรือมัลติมีเดียเป็นสัญญาณคัดกรอง และทำการวัดการเรนเดอร์หรือการส่งออกตัวอย่างก่อนที่จะถือว่าสไลด์เป็นคอขวดด้านประสิทธิภาพที่ยืนยันได้.