บันทึกงานนำเสนอใน JavaScript
ภาพรวม
หลังจากคุณสร้างงานนำเสนอหรือเปิดงานนำเสนอที่มีอยู่, ให้ใช้เมธอด Presentation.save เพื่อบันทึกผลลัพธ์ Aspose.Slides สำหรับ Node.js ผ่าน Java สามารถบันทึกงานนำเสนอเป็นไฟล์หรือสตรีมในรูปแบบ PowerPoint, OpenDocument, PDF และรูปแบบอื่นๆ ส่วนต่อไปนี้อธิบายการบันทึกมาตรฐานและตัวเลือกที่มีสำหรับการส่งออกเป็น PPTX
บันทึกงานนำเสนอเป็นไฟล์
เพื่อบันทึกงานนำเสนอเป็นไฟล์ ให้ส่งพาธเอาต์พุตและค่า SaveFormat ไปยังเมธอด Presentation.save ค่าของรูปแบบกำหนดประเภทของไฟล์ที่ Aspose.Slides สร้าง
ตัวอย่างต่อไปนี้สร้างงานนำเสนอและบันทึกเป็นไฟล์ PPTX:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
// เพิ่มหรือแก้ไขเนื้อหาของการนำเสนอที่นี่.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
บันทึกงานนำเสนอในรูปแบบดั้งเดิมของมัน
สำหรับตัวอย่างการตรวจจับไฟล์และสตรีม, พฤติกรรมของงานนำเสนอที่สร้างใหม่, และความแตกต่างระหว่างรูปแบบต้นฉบับและรูปแบบผลลัพธ์ ดูที่ Determine the Original Presentation Format.
ในแอปพลิเคชันการประมวลผลแบบกลุ่ม, รูปแบบอินพุตอาจไม่รู้ล่วงหน้า หลังจากโหลดไฟล์แล้ว ให้อ่านรูปแบบดั้งเดิมของมันจากเมธอด Presentation.getSourceFormat ส่งค่าของ SourceFormat ไปยัง SlideUtil.toSaveFormat เพื่อรับค่า SaveFormat ที่สอดคล้องกัน แล้วใช้ Presentation.save เพื่อบันทึกงานนำเสนอที่แก้ไข
ตัวอย่างสมบูรณ์ต่อไปนี้ประมวลผลทุกไฟล์ในไดเรกทอรีอินพุต, ปรับปรุงชื่อเรื่องของมัน, และบันทึกไปยังไดเรกทอรีเอาต์พุตในรูปแบบที่โหลดมา:
const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");
const inputDirectory = "Input";
const outputDirectory = "Output";
if (!fs.existsSync(inputDirectory)) {
console.error("The input directory does not exist.");
} else {
fs.mkdirSync(outputDirectory, { recursive: true });
const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
.filter((entry) => entry.isFile());
for (const inputFile of inputFiles) {
const inputPath = path.join(inputDirectory, inputFile.name);
try {
const presentation = new aspose.slides.Presentation(inputPath);
try {
const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
presentation.getDocumentProperties().setTitle("Processed by the batch application");
const outputPath = path.join(outputDirectory, inputFile.name);
presentation.save(outputPath, saveFormat);
} finally {
presentation.dispose();
}
} catch (error) {
console.error(`Cannot process '${inputPath}': ${error.message}`);
}
}
}
SlideUtil.toSaveFormat จะแมป PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP และ PowerPoint XML ไปยังรูปแบบการบันทึกงานนำเสนอที่สอดคล้องกัน มันแมปเฉพาะรูปแบบแหล่งที่มาของงานนำเสนอ; ไม่ได้ออกแบบให้เลือกรูปแบบการส่งออกเช่น PDF, HTML, TIFF หรือรูปภาพ การส่งค่าของ SourceFormat ที่ไม่ได้สนับสนุนหรือไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด
ไฟล์ PPT, PPS และ POT รุ่นเก่าใช้คอนเทนเนอร์ไบนารีเดียวกัน เมื่อโหลดงานนำเสนอเช่นนี้จากสตรีมโดยไม่มีส่วนขยายไฟล์, ไฟล์ PPS หรือ POT อาจถูกระบุเป็น PPT หากต้องการรักษาชนิดย่อยเหล่านี้ไว้, ให้เก็บชื่อไฟล์หรือเมตาดาตรูปแบบเดิมไว้แยกต่างหากและใช้เมื่อตั้งชื่อไฟล์และรูปแบบเอาต์พุต
บันทึกงานนำเสนอเป็นสตรีม
เพื่อบันทึกงานนำเสนอโดยไม่ต้องอ้างอิงถึงพาธไฟล์สุดท้าย, ให้ส่งสตรีมที่เขียนได้และค่า SaveFormat ไปยังเมธอด Presentation.save วิธีนี้เป็นประโยชน์เมื่อเอาต์พุตต้องส่งกลับจากเว็บเซอร์วิส, เก็บในฐานข้อมูล, หรือประมวลผลในหน่วยความจำ
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอใหม่ไปยังสตรีมไฟล์:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
try {
presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
บันทึกงานนำเสนอพร้อมประเภทมุมมองที่กำหนดไว้ล่วงหน้า
คุณสามารถระบุมุมมองที่ PowerPoint เปิดงานนำเสนอที่บันทึกไว้เป็นค่าเริ่มต้นได้ ใช้เมธอด ViewProperties.setLastView กับค่า ViewType ก่อนบันทึก
ตัวอย่างต่อไปนี้กำหนดให้มุมมอง Slide Master เป็นมุมมองเริ่มต้น:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
บันทึกงานนำเสนอในรูปแบบ Strict Office Open XML
เพื่อสร้างไฟล์ PPTX ที่สอดคล้องกับโปรไฟล์ Strict ของ Office Open XML ให้สร้างอินสแตนซ์ PptxOptions และใช้เมธอด setConformance กับค่า Conformance.Iso29500_2008_Strict จากนั้นส่งอ็อปชันไปยังเมธอด Presentation.save
const aspose = { slides: require("aspose.slides.via.java") };
const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
const presentation = new aspose.slides.Presentation();
try {
presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
บันทึกงานนำเสนอในรูปแบบ Office Open XML แบบ Zip64
ไฟล์ ZIP มาตรฐานจำกัดขนาดข้อมูลที่บีบอัดและไม่ได้บีบอัดของแต่ละรายการ, ขนาดรวมของไฟล์ ZIP, และจำนวนรายการ เนื่องจากไฟล์ PPTX เป็นไฟล์ ZIP, งานนำเสนอที่ใหญ่มากอาจเกินขีดจำกัดเหล่านี้ การขยาย Zip64 จะเพิ่มขีดจำกัดขนาดและจำนวนรายการที่ใช้ได้
ใช้เมธอด PptxOptions.setZip64Mode เพื่อควบคุมว่า Aspose.Slides จะเขียนส่วนขยาย ZIP64 หรือไม่:
- IfNecessary ใช้ ZIP64 เฉพาะเมื่อ งานนำเสนอ เกินขีดจำกัด ZIP มาตรฐาน นี่คือโหมดเริ่มต้น
- Never ปิดการใช้งานส่วนขยาย ZIP64
- Always เขียนส่วนขยาย ZIP64 เสมอ
ตัวอย่างต่อไปนี้เปิดใช้งานส่วนขยาย ZIP64 เสมอสำหรับงานนำออก:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setZip64Mode(aspose.slides.Zip64Mode.Always);
presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Warning
หากใช้ Zip64Mode.Never และงานนำเสนอไม่สามารถอยู่ในขีดจำกัด ZIP มาตรฐาน การบันทึกจะโยนข้อยกเว้น PptxException .บันทึกงานนำเสนอในรูปแบบ Office Open XML พร้อมระดับการบีบอัด
สำหรับการส่งออกเป็น PPTX คุณสามารถปรับสมดุลระหว่างความเร็วในการบันทึกและขนาดไฟล์โดยใช้เมธอด PptxOptions.setCompressionLevel คลาส CompressionLevel มีค่าดังต่อไปนี้:
- None เก็บข้อมูลโดยไม่มีการบีบอัด
- Level1 ให้การบีบอัดที่เร็วที่สุดและผลลัพธ์บีบอัดที่ใหญ่ที่สุด
- Level2 ถึง Level5 มีแนวโน้มให้ผลลัพธ์ที่เล็กลงมากกว่าความเร็วในการบันทึก
- Level6 สมดุลระหว่างความเร็วในการบันทึกและขนาดไฟล์ นี่เป็นระดับเริ่มต้น
- Level7 และ Level8 ย้ำให้ผลลัพธ์ที่เล็กลงมากกว่าความเร็วในการบันทึก
- Level9 ให้การบีบอัดที่แรงที่สุดและต้องใช้เวลาประมวลผลมากที่สุด
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอโดยไม่บีบอัด:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.None);
presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
ตัวอย่างต่อไปนี้ใช้ระดับการบีบอัดสูงสุด:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);
presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
บันทึกงานนำเสนอโดยไม่รีเฟรชรูปย่อ
เมื่อบันทึกงานนำเสนอเป็น PPTX เมธอด PptxOptions.setRefreshThumbnail ควบคุมรูปย่อของเอกสารดังนี้:
trueสร้างรูปย่อใหม่ระหว่างการบันทึก นี่คือค่าเริ่มต้นfalseรักษารูปย่อที่มีอยู่ หากงานนำเสนอไม่มีรูปย่อ Aspose.Slides จะไม่สร้าง
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอโดยไม่รีเฟรชรูปย่อ:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setRefreshThumbnail(false);
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Note
การปิดการรีเฟรชรูปย่อสามารถลดเวลาที่ใช้ในการบันทึกไฟล์ PPTX ได้.อัปเดตความคืบหน้าในการบันทึกเป็นเปอร์เซ็นต์
เพื่อเฝ้าติดตามการบันทึก ให้ทำการนำเสนออินเทอร์เฟซ IProgressCallback ด้วยพร็อกซี Java และส่งอิมพลีเมนต์ไปยังเมธอด SaveOptions.setProgressCallback Aspose.Slides จะเรียกเมธอด IProgressCallback.reporting พร้อมค่าความคืบหน้าในระหว่างการส่งออก
ตัวอย่างต่อไปนี้รายงานความคืบหน้าการส่งออก PDF ไปยังคอนโซล:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);
const presentation = new aspose.slides.Presentation("input.pptx");
try {
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
presentation.dispose();
}
Note
Aspose มีบริการ PowerPoint Splitter ฟรีที่สร้างด้วย Aspose.Slides API ซึ่งบันทึกสไลด์ที่เลือกจากงานนำเสนอเป็นไฟล์ PPT หรือ PPTX แยกกัน.คำถามที่พบบ่อย
Aspose.Slides รองรับการบันทึกแบบเพิ่มเชิงหรือ “บันทึกเร็ว” หรือไม่?
ไม่ การบันทึกแต่ละครั้งจะเขียนไฟล์ผลลัพธ์แบบเต็มแทนการอัปเดตเฉพาะส่วนที่เปลี่ยนแปลง
หลายเธรดสามารถบันทึก Presentation อินสแตนซ์เดียวกันได้หรือไม่?
ไม่ ตัวอินสแตนซ์ Presentation ไม่รองรับการทำงานหลายเธรด ควรเข้าถึงและบันทึกแต่ละอินสแตนซ์จากเธรดเดียวเท่านั้น
ลิงก์และไฟล์ที่เชื่อมโยงภายนอกจะเกิดอะไรขึ้นเมื่อบันทึกงานนำเสนอ?
Hyperlinks ยังคงอยู่ในงานนำเสนอ Aspose.Slides ไม่คัดลอกไฟล์ที่เชื่อมโยงภายนอก ดังนั้นงานนำเสนอที่บันทึกต้องยังคงสามารถเข้าถึงตำแหน่งของไฟล์เหล่านั้นได้
ฉันสามารถบันทึกเมตาดาต้าเอกสาร เช่น ผู้เขียน, ชื่อเรื่อง, บริษัท และวันที่สร้างได้หรือไม่?
ได้ ให้ตั้งค่า document properties ที่เหมาะสมก่อนบันทึก Aspose.Slides จะเขียนข้อมูลเหล่านั้นลงในไฟล์ผลลัพธ์