บันทึกงานนำเสนอใน 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();
}

บันทึกงานนำเสนอในรูปแบบ 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();
}

อัปเดตความคืบหน้าในการบันทึกเป็นเปอร์เซ็นต์

เพื่อเฝ้าติดตามการบันทึก ให้ทำการนำเสนออินเทอร์เฟซ 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();
}

คำถามที่พบบ่อย

Aspose.Slides รองรับการบันทึกแบบเพิ่มเชิงหรือ “บันทึกเร็ว” หรือไม่?

ไม่ การบันทึกแต่ละครั้งจะเขียนไฟล์ผลลัพธ์แบบเต็มแทนการอัปเดตเฉพาะส่วนที่เปลี่ยนแปลง

หลายเธรดสามารถบันทึก Presentation อินสแตนซ์เดียวกันได้หรือไม่?

ไม่ ตัวอินสแตนซ์ Presentation ไม่รองรับการทำงานหลายเธรด ควรเข้าถึงและบันทึกแต่ละอินสแตนซ์จากเธรดเดียวเท่านั้น

ลิงก์และไฟล์ที่เชื่อมโยงภายนอกจะเกิดอะไรขึ้นเมื่อบันทึกงานนำเสนอ?

Hyperlinks ยังคงอยู่ในงานนำเสนอ Aspose.Slides ไม่คัดลอกไฟล์ที่เชื่อมโยงภายนอก ดังนั้นงานนำเสนอที่บันทึกต้องยังคงสามารถเข้าถึงตำแหน่งของไฟล์เหล่านั้นได้

ฉันสามารถบันทึกเมตาดาต้าเอกสาร เช่น ผู้เขียน, ชื่อเรื่อง, บริษัท และวันที่สร้างได้หรือไม่?

ได้ ให้ตั้งค่า document properties ที่เหมาะสมก่อนบันทึก Aspose.Slides จะเขียนข้อมูลเหล่านั้นลงในไฟล์ผลลัพธ์