กำหนดรูปแบบพรีเซนเทชันต้นฉบับใน Node.js
ภาพรวม
หลังจากโหลดพรีเซนเทชันแล้ว ให้เรียกเมธอด Presentation.getSourceFormat เพื่อตรวจสอบรูปแบบเดิมของพรีเซนเทชัน ใช้เมธอดนี้เมื่อการประมวลผลต่อไปขึ้นอยู่กับรูปแบบที่อินสแตนซ์ปัจจุบันถูกโหลดมาจาก
รูปแบบแหล่งที่มานั้นแตกต่างจาก SaveFormat ที่เลือกสำหรับไฟล์ผลลัพธ์ การบันทึกเป็นรูปแบบอื่นจะไม่ได้เปลี่ยนรูปแบบแหล่งที่มาของอินสแตนซ์ที่มีอยู่
อ่านรูปแบบแหล่งที่มาของไฟล์
ตัวอย่างนี้ต้องการไฟล์ sample.pptx ที่มีอยู่แล้ว จะโหลดไฟล์และเลือกนโยบายการประมวลผลของแอปพลิเคชันโดยใช้ Presentation.getSourceFormat แทนการอ้างอิงจากชื่อไฟล์ เปลี่ยนเส้นทางอินพุตเพื่อทดสอบรูปแบบอื่น ตัวอย่างจะแสดงนโยบายที่เลือก; สามารถแทนข้อความเหล่านี้ด้วยตรรกะของแอปพลิเคชันของคุณได้
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
switch (presentation.getSourceFormat()) {
case aspose.SourceFormat.Ppt:
case aspose.SourceFormat.Pps:
case aspose.SourceFormat.Pot:
console.log("Use the legacy PowerPoint processing policy.");
break;
case aspose.SourceFormat.Pptx:
console.log("Use the standard PPTX processing policy.");
break;
default:
console.log("Use the general policy for source format " + presentation.getSourceFormat() + ".");
break;
}
} finally {
presentation.dispose();
}
รู้จักค่าที่รองรับ
คลาส SourceFormat กำหนดค่าคงที่จำนวนเต็มที่แยกรูปแบบพรีเซนเทชันต่าง ๆ ด้านล่างเป็นนามสกุลที่เป็นที่ยอมรับ, ไม่ได้เป็นการสร้างชื่อไฟล์เดิมใหม่
| ค่า SourceFormat | นามสกุล | รูปแบบ |
|---|---|---|
Ppt |
.ppt |
การนำเสนอ PowerPoint 97–2003 |
Pptx |
.pptx |
การนำเสนอ Office Open XML |
Pptm |
.pptm |
การนำเสนอ Office Open XML ที่มีแมโคร |
Pps |
.pps |
การแสดงสไลด์ PowerPoint 97–2003 |
Ppsx |
.ppsx |
การแสดงสไลด์ Office Open XML |
Ppsm |
.ppsm |
การแสดงสไลด์ Office Open XML ที่มีแมโคร |
Pot |
.pot |
แม่แบบ PowerPoint 97–2003 |
Potx |
.potx |
แม่แบบ Office Open XML |
Potm |
.potm |
แม่แบบ Office Open XML ที่มีแมโคร |
Odp |
.odp |
การนำเสนอ OpenDocument |
Otp |
.otp |
แม่แบบการนำเสนอ OpenDocument |
Fodp |
.fodp |
การนำเสนอ Flat XML ODF |
Xml |
.xml |
การนำเสนอ PowerPoint XML |
อ่านรูปแบบแหล่งที่มาของสตรีม
ตัวอย่างนี้ต้องการไฟล์ sample.pps ที่มีอยู่แล้ว การอ่านไบต์ของไฟล์นี้ใส่ลงใน MemoryStream จำลองสถานการณ์ที่รับข้อมูลโดยไม่มีชื่อไฟล์ เช่น ค่าที่เก็บในฐานข้อมูลหรืออาร์เรย์ไบต์ที่อัปโหลด ตัวคอนสตรัคเตอร์ของ Presentation จะรับเฉพาะสตรีมเท่านั้น
const aspose = require("aspose.slides.via.java");
const java = require("java");
const fs = require("fs");
const buffer = fs.readFileSync("sample.pps");
const bytes = java.newArray("byte", Array.from(buffer));
const stream = java.newInstanceSync("java.io.ByteArrayInputStream", bytes);
try {
const presentation = new aspose.Presentation(stream);
try {
console.log("Source format: " + presentation.getSourceFormat());
} finally {
presentation.dispose();
}
} finally {
stream.close();
}
PPT, PPS และ POT ใช้รูปแบบไบนารีพื้นฐานเดียวกัน เมื่อโหลดโดยเส้นทางไฟล์ นามสกุลสามารถช่วยแยกสไลด์โชว์หรือแม่แบบได้ หากไม่มีชื่อไฟล์ เนื้อหา PPS หรือ POT แบบดั้งเดิมอาจถูกรายงานเป็น SourceFormat.Ppt; ตัวอย่าง PPS ด้านบนจะแสดงค่าจำนวนเต็มของ SourceFormat.Ppt
หากแอปพลิเคชันของคุณต้องคงความแตกต่างนี้ไว้ ควรเก็บชื่อไฟล์เดิมหรือเมตาดาต้าย่อยแยกต่างหาก นามสกุลเป็นสัญญาณที่เป็นประโยชน์สำหรับย่อยแบบดั้งเดิมเหล่านี้แต่ไม่ควรเป็นฐานเดียวในการระบุเนื้อหาพรีเซนเทชันใด ๆ
เปรียบเทียบการตรวจจับก่อนและหลังการโหลด
ใช้ PresentationFactory.getPresentationInfo และ PresentationInfo.getLoadFormat เมื่อต้องการตรวจสอบไฟล์ก่อนโหลดโมเดลอ็อบเจ็กต์ของพรีเซนเทชันทั้งหมด ใช้ Presentation.getSourceFormat เมื่ออินสแตนซ์มีอยู่แล้ว
ตัวอย่างนี้ต้องการ sample.pptx และจะแสดงค่าจำนวนเต็มของ LoadFormat.Pptx และ SourceFormat.Pptx ตามลำดับ ในการใช้งานจริง ให้เลือก API ที่เหมาะสมกับขั้นตอนการประมวลผลของคุณ; พรีเซนเทชันที่โหลดแล้วไม่จำเป็นต้องตรวจสอบอีกครั้งเพียงเพื่อรับรูปแบบแหล่งที่มา
const aspose = require("aspose.slides.via.java");
const path = "sample.pptx";
const information = aspose.PresentationFactory.getInstance().getPresentationInfo(path);
console.log("Before loading: " + information.getLoadFormat());
const presentation = new aspose.Presentation(path);
try {
console.log("After loading: " + presentation.getSourceFormat());
} finally {
presentation.dispose();
}
ผลลัพธ์ใช้ค่าคงที่จากคลาสต่าง ๆ: LoadFormat และ SourceFormat อย่าเปรียบเทียบค่าตัวเลขของพวกมันหรือสันนิษฐานว่าทุกรูปแบบมีผลลัพธ์การตรวจจับที่เท่ากัน PowerPoint XML อาจถูกรายงานเป็น LoadFormat.Unknown ก่อนการโหลดและ SourceFormat.Xml หลังการโหลด
แยกรูปแบบแหล่งที่มาและรูปแบบผลลัพธ์ออกจากกัน
ตัวอย่างนี้ต้องการ sample.pptx และเขียนไฟล์ converted.odp จะพิมพ์ค่าจำนวนเต็มของ SourceFormat.Pptx ก่อนและหลังการบันทึกอินสแตนซ์ต้นฉบับ อินสแตนซ์ใหม่ที่โหลดจากผลลัพธ์ ODP จะรายงานค่า Odp
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
console.log("Before saving: " + presentation.getSourceFormat());
presentation.save("converted.odp", aspose.SaveFormat.Odp);
console.log("After saving: " + presentation.getSourceFormat());
const reopened = new aspose.Presentation("converted.odp");
try {
console.log("Reopened output: " + reopened.getSourceFormat());
} finally {
reopened.dispose();
}
} finally {
presentation.dispose();
}
พรีเซนเทชันที่สร้างจากศูนย์ด้วย new Presentation() จะรายงาน SourceFormat.Pptx เนื่องจากไม่มีไฟล์อินพุต: นี่เป็นค่าเริ่มต้นสำหรับอินสแตนซ์ที่สร้างใหม่ ไม่ได้เป็นหลักฐานว่าไฟล์ PPTX ถูกโหลด หากความแตกต่างนี้สำคัญ ให้ติดตามว่าแอปพลิเคชันของคุณสร้างหรือโหลดอินสแตนซ์แยกต่างหาก
แมปรูปแบบแหล่งที่มากับนามสกุล
ตัวอย่างต่อไปนี้ต้องการ sample.pptx จะแมปค่าของ SourceFormat ทุกค่าที่รองรับในปัจจุบันเป็นนามสกุลที่เป็นที่ยอมรับ, โดยไม่ต้องพาร์สชื่อไฟล์ อินพุต ตัวสำรองจะหลีกเลี่ยงการกำหนดนามสกุลให้กับค่าที่ไม่รู้จักอย่างเงียบ ๆ
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
let extension;
switch (presentation.getSourceFormat()) {
case aspose.SourceFormat.Ppt:
extension = ".ppt";
break;
case aspose.SourceFormat.Pptx:
extension = ".pptx";
break;
case aspose.SourceFormat.Pptm:
extension = ".pptm";
break;
case aspose.SourceFormat.Pps:
extension = ".pps";
break;
case aspose.SourceFormat.Ppsx:
extension = ".ppsx";
break;
case aspose.SourceFormat.Ppsm:
extension = ".ppsm";
break;
case aspose.SourceFormat.Pot:
extension = ".pot";
break;
case aspose.SourceFormat.Potx:
extension = ".potx";
break;
case aspose.SourceFormat.Potm:
extension = ".potm";
break;
case aspose.SourceFormat.Odp:
extension = ".odp";
break;
case aspose.SourceFormat.Otp:
extension = ".otp";
break;
case aspose.SourceFormat.Fodp:
extension = ".fodp";
break;
case aspose.SourceFormat.Xml:
extension = ".xml";
break;
default:
extension = null;
break;
}
console.log(extension != null ? extension : "No extension mapping is available.");
} finally {
presentation.dispose();
}
การแมปนี้ไม่ได้ทำการแปลงไฟล์หรือกู้คืนย่อยแบบ PPS/POT ที่สูญหายระหว่างการโหลดสตรีม สำหรับการบันทึกจริง ให้เลือก SaveFormat อย่างชัดเจน, หรือใช้การแปลงที่แสดงใน Save Presentations in Their Original Format
ยืนยันรูปแบบโดยการบันทึกและเปิดใหม่
ตัวอย่างแบบ self‑contained นี้สร้างพรีเซนเทชันและเขียนไฟล์สามไฟล์ในไดเรกทอรีทำงาน, ทับไฟล์ที่มีชื่อเดียวกันใหม่ จากนั้นเปิดแต่ละไฟล์ผลลัพธ์ทั้งโดยเส้นทางและผ่านสตรีมหน่วยความจำ สำหรับ PPTX และ ODP ทั้งสองวิธีจะแจ้งรูปแบบที่บันทึกไว้ สำหรับ PPS, การโหลดโดยเส้นทางจะรายงาน Pps ขณะที่การโหลดไบต์เดียวกันโดยไม่มีชื่อไฟล์จะรายงาน Ppt
const aspose = require("aspose.slides.via.java");
const java = require("java");
const fs = require("fs");
const presentation = new aspose.Presentation();
try {
const formats = [aspose.SaveFormat.Pptx, aspose.SaveFormat.Odp, aspose.SaveFormat.Pps];
const extensions = ["pptx", "odp", "pps"];
for (let i = 0; i < formats.length; i++) {
const path = "roundtrip." + extensions[i];
presentation.save(path, formats[i]);
const fromFile = new aspose.Presentation(path);
try {
const buffer = fs.readFileSync(path);
const bytes = java.newArray("byte", Array.from(buffer));
const stream = java.newInstanceSync("java.io.ByteArrayInputStream", bytes);
try {
const fromStream = new aspose.Presentation(stream);
try {
console.log(extensions[i] + ": file=" + fromFile.getSourceFormat() + ", stream=" + fromStream.getSourceFormat());
} finally {
fromStream.dispose();
}
} finally {
stream.close();
}
} finally {
fromFile.dispose();
}
}
} finally {
presentation.dispose();
}
ตารางต่อไปสรุปการระบุรูปแบบแหล่งที่มาสำหรับพรีเซนเทชันที่มีนามสกุลตรงกัน ชื่อตัวแปรเป็นค่าคงที่; ตัวอย่าง JavaScript จะพิมพ์ค่าจำนวนเต็มของมัน:
| รูปแบบที่บันทึก | SourceFormat จากเส้นทางไฟล์ | SourceFormat จากสตรีมไม่มีชื่อ |
|---|---|---|
| PPT | Ppt |
Ppt |
| PPTX, PPTM | Pptx, Pptm ตามลำดับ |
เหมือนกับเส้นทางไฟล์ |
| PPS | Pps |
Ppt |
| PPSX, PPSM | Ppsx, Ppsm ตามลำดับ |
เหมือนกับเส้นทางไฟล์ |
| POT | Pot |
Ppt |
| POTX, POTM | Potx, Potm ตามลำดับ |
เหมือนกับเส้นทางไฟล์ |
| ODP, OTP | Odp, Otp ตามลำดับ |
เหมือนกับเส้นทางไฟล์ |
| FODP | Fodp |
Fodp |
| PowerPoint XML | Xml |
Xml |
เนื้อหา PPS/POT จะถูกระบุเป็น Ppt สำหรับสตรีมที่ไม่มีชื่อ ตารางบรรยายการระบุรูปแบบ, ไม่ได้หมายถึงการคงคุณลักษณะของพรีเซนเทชันทุกอย่างระหว่างการแปลง
คำถามที่พบบ่อย
การบันทึกเป็น ODP จะเปลี่ยนรูปแบบแหล่งที่มาของพรีเซนเทชันที่โหลดจาก PPTX หรือไม่?
ไม่ได้ อินสแตนซ์ที่มีอยู่จะยังคงรายงาน Pptx อินสแตนซ์ที่โหลดจากไฟล์ ODP ที่บันทึกไว้จะรายงาน Odp
สตรีมสามารถแยกแยะพรีเซนเทชันแบบดั้งเดิม, การแสดงสไลด์, และแม่แบบได้เสมอหรือไม่?
ไม่ได้ PPT, PPS และ POT ใช้รูปแบบไบนารีเดียวกัน ต้องเก็บชื่อไฟล์หรือเมตาดาต้าย่อยแยกต่างหากเมื่อความแตกต่างนี้จำเป็น
ควรใช้ API ใดเมื่อพรีเซนเทชันโหลดแล้ว?
อ่าน Presentation.getSourceFormat ใช้ PresentationFactory.getPresentationInfo สำหรับการตรวจสอบก่อนการโหลด