ดึงข้อมูลและอัปเดตข้อมูลงานนำเสนอบน Android
ภาพรวม
Aspose.Slides สามารถระบุรูปแบบของงานนำเสนอและอ่านเมทาดาต้าเอกสารโดยไม่ต้องสร้างโมเดลวัตถุของงานนำเสนอแบบเต็ม นี่เป็นประโยชน์เมื่อคุณต้องการจำแนกไฟล์ สร้างรายการสินค้าคงคลัง หรือสอบถามคุณสมบัติก่อนตัดสินใจว่าจะโหลดและประมวลผลเนื้อหางานนำเสนอหรือไม่
บทความนี้สาธิตการตรวจสอบแบบเบาโดยใช้ PresentationFactory และ IPresentationInfo, พร้อมกับการอัปเดตแบบเจาะจงผ่าน IDocumentProperties.
ตรวจสอบรูปแบบงานนำเสนอ
ใช้ PresentationFactory.getPresentationInfo เพื่อตรวจสอบไฟล์โดยไม่ต้องสร้างอินสแตนซ์ของ Presentation วิธีการ IPresentationInfo.getLoadFormat จะรายงานรูปแบบที่ตรวจพบ เช่น PPTX, PPT หรือ ODP
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;
String[] fileNames = { "pres.pptx", "pres.ppt", "pres.odp" };
for (String fileName : fileNames) {
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(fileName);
int loadFormat = presentationInfo.getLoadFormat();
String formatName = "Other (" + loadFormat + ")";
if (loadFormat == LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat == LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat == LoadFormat.Odp) {
formatName = "ODP";
}
System.out.println(fileName + ": " + formatName);
}
สร้างรายการสินค้าคงคลังงานนำเสนอแบบเบา
เมื่อคุณประมวลผลไฟล์งานนำเสนอจำนวนมาก คุณอาจต้องการรายการสินค้าคงคลังแบบกะทัดรัดสำหรับการตรวจสอบ ดัชนี หรือระบบจัดการเอกสาร ในสถานการณ์นี้ ใช้ PresentationFactory.getPresentationInfo เพื่อรับอ็อบเจ็กต์ IPresentationInfo แล้วเรียก IPresentationInfo.readDocumentProperties เพื่ออ่านเมทาดาต้าเอกสาร วิธีการนี้ไม่สร้างอินสแตนซ์ของ Presentation หรือจำเป็นต้องเรียกดูโมเดลวัตถุของงานนำเสนอแบบเต็ม
คุณสมบัติเพิ่มเติมที่เปิดเผยโดย IDocumentProperties ให้ค่าต่อไปนี้สำหรับรายการสินค้าคงคลัง:
| เมธอด | ค่าที่บันทึก |
|---|---|
| getSlides | จำนวนสไลด์ทั้งหมด. |
| getHiddenSlides | จำนวนสไลด์ที่ซ่อนอยู่. |
| getNotes | จำนวนสไลด์ที่มีโน้ต. |
| getParagraphs | จำนวนย่อหน้าทั้งหมด (เมื่อมี). |
| getWords | จำนวนคำทั้งหมด. |
| getMultimediaClips | จำนวนคลิปเสียงและวิดีโอทั้งหมด. |
ตัวอย่างต่อไปนี้อ่านค่าต่าง ๆ เหล่านี้โดยไม่ต้องสร้างอ็อบเจ็กต์ Presentation และแสดงรายการสินค้าคงคลังแบบกะทัดรัด นอกจากนี้ยังรวม getHeadingPairs กับ getTitlesOfParts เพื่อแสดงกลุ่มเนื้อหาเช่นแบบอักษร, ธีม, และชื่อสไลด์
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IHeadingPair;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;
import java.nio.file.Paths;
String filePath = "sample.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();
int loadFormat = presentationInfo.getLoadFormat();
String formatName = "Other (" + loadFormat + ")";
if (loadFormat == LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat == LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat == LoadFormat.Odp) {
formatName = "ODP";
}
System.out.println("File: " + Paths.get(filePath).getFileName());
System.out.println("Format: " + formatName);
System.out.println("Title: " + documentProperties.getTitle());
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Statistics:");
System.out.println(" Slides: " + documentProperties.getSlides());
System.out.println(" Hidden slides: " + documentProperties.getHiddenSlides());
System.out.println(" Slides with notes: " + documentProperties.getNotes());
System.out.println(" Paragraphs: " + documentProperties.getParagraphs());
System.out.println(" Words: " + documentProperties.getWords());
System.out.println(" Multimedia clips: " + documentProperties.getMultimediaClips());
IHeadingPair[] headingPairs = documentProperties.getHeadingPairs();
String[] titlesOfParts = documentProperties.getTitlesOfParts();
headingPairs = headingPairs != null ? headingPairs : new IHeadingPair[0];
titlesOfParts = titlesOfParts != null ? titlesOfParts : new String[0];
int partIndex = 0;
if (headingPairs.length == 0 || titlesOfParts.length == 0) {
System.out.println("Content groups: not available");
} else {
System.out.println("Content groups:");
for (IHeadingPair headingPair : headingPairs) {
System.out.println(" " + headingPair.getName() + " (" + headingPair.getCount() + ")");
for (int partOffset = 0; partOffset < headingPair.getCount() && partIndex < titlesOfParts.length; partOffset++) {
System.out.println(" - " + titlesOfParts[partIndex]);
partIndex++;
}
}
if (partIndex < titlesOfParts.length) {
System.out.println(" Other parts:");
while (partIndex < titlesOfParts.length) {
System.out.println(" - " + titlesOfParts[partIndex]);
partIndex++;
}
}
}
แต่ละ IHeadingPair ให้ชื่อกลุ่มและจำนวนรายการในกลุ่มนั้น IDocumentProperties.getTitlesOfParts ส่งกลับอีเรย์แบนที่เรียงลำดับ ดังนั้นให้ใช้จำนวนชื่อที่ต่อเนื่องตามที่แต่ละหัวข้อคู่กำหนด
เมทาดาต้าที่จัดเก็บและข้อจำกัดของรูปแบบ
คุณสมบัติรายการสินค้าคงคลังที่ส่งกลับโดย IPresentationInfo.readDocumentProperties สะท้อนเมทาดาต้าที่มีในเอกสารต้นทาง Aspose.Slides ไม่ทำการโหลดและเรียกดูโมเดลวัตถุของงานนำเสนอเพื่อนำค่าต่าง ๆ มาคำนวณใหม่สำหรับการเรียกนี้ คุณสมบัติที่ขาดหายจะถูกแทนด้วยค่าปริยาย และค่าที่เก็บอาจล้าสมัยหากแอปพลิเคชันที่บันทึกไฟล์ครั้งสุดท้ายไม่ได้อัปเดตคุณสมบัติของเอกสาร
- PPTX: รูปแบบนี้ให้คุณสมบัติเพิ่มเติมของเอกสารสำหรับการนับสไลด์, โน้ต, สไลด์ที่ซ่อน, ย่อหน้า, คำ และคลิปมัลติมีเดีย รวมถึงคู่หัวเรื่องและชื่อส่วน การใช้งานขึ้นอยู่กับว่าคุณสมบัติเหล่านั้นถูกเขียนโดยผู้สร้างเอกสารหรือไม่
- PPT: รูปแบบไบนารีนี้สามารถเก็บคุณสมบัติสรุปเอกสารที่สอดคล้องกันได้ หากคุณสมบัตหายไปหรือไม่ได้รับการอัปเดตโดยผู้สร้างเอกสาร Aspose.Slides จะส่งกลับค่าที่เก็บไว้หรือค่าปริยายแทนการคำนวณจากสไลด์
- ODP: เมทาดาต้า OpenDocument ให้สถิติทั่วไปของเอกสาร เช่น จำนวนหน้า, ย่อหน้า, และคำ แต่ค่าดังกล่าวไม่ได้แมพกับคุณสมบัติเพิ่มเติมเฉพาะ PowerPoint ทุกประการ ข้อมูลเมทาดาต้าสไลด์ที่ซ่อน, โน้ต, มัลติมีเดีย, คู่หัวเรื่อง, และชื่อส่วนอาจไม่มีให้ใช้งาน และคุณสมบัติรายการสินค้าคงคลังอาจส่งค่าปริยาย อย่าใช้ค่าเป็นศูนย์หรืออาเรย์ว่างเป็นหลักฐานยืนยันว่าเนื้อหาที่เกี่ยวข้องไม่มีอยู่
ใช้วิธีเมทาดาต้าแบบเบาสำหรับการทำรายการสินค้าคงคลังและการตรวจสอบเบื้องต้น โหลดงานนำเสนอและตรวจสอบโมเดลวัตถุแบบสดเมื่อต้องการให้ผลลัพธ์สะท้อนการเปลี่ยนแปลงในหน่วยความจำหรือเมื่อคุณต้องการตรวจสอบเนื้อจแท้ของงานนำเสนอ
อัปเดตคุณสมบัติงานนำเสนอ
คุณสมบัติที่ส่งกลับโดย IPresentationInfo.readDocumentProperties สามารถเปลี่ยนแปลงได้โดยไม่ต้องสร้างอินสแตนซ์ของ Presentation ใช้การเปลี่ยนแปลงด้วย IPresentationInfo.updateDocumentProperties แล้วเขียนงานนำเสนอที่ผูกไว้ด้วย IPresentationInfo.writeBindedPresentation
ภาพต่อไปนี้แสดงคุณสมบัติเอกสารต้นฉบับของงานนำเสนอ PowerPoint

ตัวอย่างต่อไปนี้เปลียนชื่อเรื่องและเวลาบันทึกล่าสุดและเขียนผลลัพธ์ลงในไฟล์ใหม่:
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.PresentationFactory;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
String sourceFile = "sample.pptx";
String outputFile = "sample_with_updated_properties.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(sourceFile);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();
documentProperties.setTitle("Quarterly sales report");
documentProperties.setLastSavedTime(new Date());
presentationInfo.updateDocumentProperties(documentProperties);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
presentationInfo.writeBindedPresentation(outputStream);
}
ภาพต่อไปนี้แสดงคุณสมบัติเอกสารที่อัปเดต

ลิงก์ที่เป็นประโยชน์
สำหรับการตรวจสอบความปลอดภัยและการตั้งค่าการป้องกันที่เกี่ยวข้อง ดูบทความต่อไปนี้:
คำถามที่พบบ่อย
ฉันจะตรวจสอบว่าแบบอักษรถูกฝังและแบบใดบ้าง?
โหลดงานนำเสนอและใช้ Presentation.getFontsManager. เรียก IFontsManager.getEmbeddedFonts เพื่อรับแบบอักษรที่ฝังไว้และ IFontsManager.getFonts เพื่อรับแบบอักษรที่ใช้ในงานนำเสนอ เปรียบเทียบผลลัพธ์สองชุดเพื่อหาแบบอักษรที่จำเป็นต้องใช้ในการเรนเดอร์แต่ไม่ได้ฝังไว้
ฉันจะตรวจสอบได้อย่างรวดเร็วว่าไฟล์มีสไลด์ที่ซ่อนอยู่หรือไม่และจำนวนเท่าไร?
เมื่อเมทาดาต้าเอกสารที่เก็บไว้เพียงพอ ให้อ่าน IDocumentProperties.getHiddenSlides ผ่าน PresentationFactory.getPresentationInfo และ IPresentationInfo.readDocumentProperties ซึ่งเหมาะกับการทำรายการสินค้าคงคลังแบบเบา หากงานนำเสนอถูกแก้ไขในหน่วยความจำ เมทาดาต้าที่เก็บไว้อาจขาดหายหรือไม่มีอัปเดต หรือคุณต้องการตรวจสอบค่าจริง ให้วนลูปผ่าน Presentation.getSlides และตรวจสอบเมธอด ISlide.getHidden ของแต่ละสไลด์แทน
ฉันสามารถตรวจจับได้หรือไม่ว่ามีการใช้ขนาดและทิศทางสไลด์ที่กำหนดเอง และว่าแตกต่างจากค่าเริ่มต้นหรือไม่?
ใช่ โหลดงานนำเข้ามาและเรียก Presentation.getSlideSize. ใช้ ISlideSize.getType, ISlideSize.getSize และ ISlideSize.getOrientation เพื่อเปรียบเทียบการตั้งค่าปัจจุบันกับค่าที่กำหนดล่วงหน้าและมิติที่คาดหวัง
มีวิธีรวดเร็วในการดูว่าแผนภูมิอ้างอิงแหล่งข้อมูลภายนอกหรือไม่?
ใช่ ค้นหาแต่ละ Chart แล้วเรียก IChartData.getDataSourceType สำหรับเวิร์กบุ๊คภายนอก ให้เรียก IChartData.getExternalWorkbookPath ประเภทและเส้นทางของแหล่งข้อมูลจะระบุการอ้างอิงภายนอก แต่การตรวจสอบว่าเป้าหมายพร้อมใช้งานต้องทำการตรวจสอบทรัพยากรแยกต่างหาก
ฉันจะประเมินสไลด์ที่ ‘หนัก’ ที่อาจทำให้การเรนเดอร์หรือการส่งออกเป็น PDF ช้าได้อย่างไร?
ไม่มีคุณสมบัติความซับซ้อนเดียวที่ใช้ได้ ให้เรียกดู Presentation.getSlides และคอลเลกชัน IBaseSlide.getShapes ของแต่ละสไลด์ ใช้จำนวนรูปร่างและการมีอยู่ของภาพขนาดใหญ่, เอฟเฟกต์, แอนิเมชั่น หรือมัลติมีเดียเป็นสัญญาณคัดกรอง และวัดการเรนเดอร์หรือการส่งออกตัวอย่างก่อนพิจารณาสไลด์เป็นคอขวดประสิทธิภาพที่ยืนยันแล้ว