ดึงข้อมูลและอัปเดตข้อมูลการนำเสนอใน Python
ภาพรวม
Aspose.Slides สามารถระบุรูปแบบของการนำเสนอและอ่านเมตาดาต้าเอกสารโดยไม่ต้องสร้างอ็อบเจกต์โมเดลการนำเสนอเต็มรูปแบบ ซึ่งเป็นประโยชน์เมื่อต้องจัดประเภทไฟล์ สร้างรายการตรวจสอบ หรือสอบคุณสมบัติก่อนตัดสินใจว่าจะโหลดและประมวลผลเนื้อหาการนำเสนอหรือไม่
บทความนี้แสดงการตรวจสอบแบบน้ำหนักเบาผ่าน PresentationFactory และ PresentationInfo พร้อมกับการอัปเดตแบบเจาะจงผ่าน DocumentProperties
ตรวจสอบรูปแบบการนำเสนอ
หากคุณมีการนำเสนอที่โหลดแล้วแล้ว ให้ดู Determine the Original Presentation Format เพื่อทำการตรวจจับหลังจากโหลดและดูข้อจำกัดของสตรีม PPT, PPS, และ POT รุ่นเก่า
ใช้ 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 ให้ค่าต่อไปนี้สำหรับรายการตรวจสอบ:
| Property | ค่าที่เก็บไว้ |
|---|---|
| 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 ทุกอย่าง เมตาดาต้าเกี่ยวกับสไลด์ที่ซ่อน, โน้ต, มัลติมีเดีย, heading‑pair, และ part‑title อาจไม่มีและคุณสมบัติรายการตรวจสอบอาจคืนค่าดีฟอลต์ อย่าพิจารณาค่า 0 หรือคอลเลกชันว่างเป็นหลักฐานแน่นอนว่าข้อมูลดังกล่าวไม่มีอยู่
ใช้วิธีเมตาดาต้าน้ำหนักเบาสำหรับรายการตรวจสอบและการตรวจสอบเบื้องต้น โหลดการนำเสนอและสำรวจโมเดลอ็อบเจกต์แบบสดเมื่อผลลัพธ์ต้องสะท้อนการเปลี่ยนแปลงในหน่วยความจำหรือเมื่อจำเป็นต้องตรวจสอบเนื้อหาการนำเสนอจริง
อัปเดตคุณสมบัติการนำเสนอ
คุณสมบัติที่คืนค่าจาก PresentationInfo.read_document_properties สามารถเปลี่ยนแปลงได้โดยไม่ต้องสร้างอินสแตนซ์ของ Presentation ใช้ PresentationInfo.update_document_properties เพื่อบันทึกการเปลี่ยนแปลง แล้วเขียนการนำเสนอที่เชื่อมโยงด้วย PresentationInfo.write_binded_presentation
รูปภาพต่อไปนี้แสดงคุณสมบัติเอกสารต้นฉบับ

ตัวอย่างต่อไปนี้เปลี่ยนชื่อเรื่องและเวลาบันทึกครั้งสุดท้าย แล้วเขียนผลลัพธ์ไปยังไฟล์ใหม่:
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 หากเป็น workbook ภายนอก ให้อ่าน ChartData.external_workbook_path ชนิดของแหล่งข้อมูลและเส้นทางจะบ่งชี้ว่ามีการอ้างอิงภายนอก แต่การตรวจสอบว่าไฟล์เป้าหมายพร้อมใช้งานหรือไม่ต้องทำตรวจสอบทรัพยากรแยกต่างหาก
ฉันจะประเมินสไลด์ ‘หนัก’ ที่อาจทำให้การเรนเดอร์หรือการส่งออก PDF ช้าได้อย่างไร?
ไม่มีคุณสมบัติความซับซ้อนเพียงอย่างเดียว ให้เดินทางผ่าน Presentation.slides และคอลเลกชั่น BaseSlide.shapes ของแต่ละสไลด์ ใช้จำนวนรูปทรงและการมีภาพขนาดใหญ่, เอฟเฟกต์, แอนิเมชัน หรือมัลติมีเดียเป็นสัญญาณการคัดกรอง แล้ววัดการเรนเดอร์หรือการส่งออกตัวอย่างก่อนที่จะสรุปว่าสไลด์เป็นคอขวดประสิทธิภาพที่ยืนยันได้