ذخیرهٔ ارائه‌ها در JavaScript

مروری کلی

Open Presentations in JavaScript توضیح داد که چگونه از کلاس Presentation برای باز کردن یک ارائه استفاده کنید. این مقاله نحوه ایجاد و ذخیرهٔ ارائه‌ها را شرح می‌دهد. کلاس Presentation محتوای یک ارائه را در خود دارد. چه از ابتدا یک ارائه ایجاد کنید و چه یک ارائه موجود را اصلاح کنید، پس از اتمام می‌خواهید آن را ذخیره کنید. با Aspose.Slides برای Node.js می‌توانید به فایل یا جریان ذخیره کنید. این مقاله روش‌های مختلف ذخیرهٔ یک ارائه را توضیح می‌دهد.

ذخیرهٔ ارائه‌ها به فایل‌ها

یک ارائه را با فراخوانی متد save کلاس Presentation به یک فایل ذخیره کنید. نام فایل و فرمت ذخیره را به متد پاس بدهید. مثال زیر نشان می‌دهد چگونه یک ارائه را با Aspose.Slides ذخیره کنید.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

// نمونه‌سازی کلاس Presentation که نمایانگر یک فایل ارائه است.
let presentation = new aspose.slides.Presentation();
try {
    // انجام برخی کارها در اینجا...

    // ذخیرهٔ ارائه به یک فایل.
    presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها به جریان‌ها

می‌توانید یک ارائه را به یک جریان ذخیره کنید؛ کافی است یک خروجی جریان را به متد save کلاس Presentation پاس بدهید. یک ارائه می‌تواند به انواع مختلفی از جریان‌ها نوشته شود. در مثال زیر، یک ارائه جدید ایجاد می‌کنیم و آن را به یک جریان فایل ذخیره می‌کنیم.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

// نمونه‌سازی کلاس Presentation که نمایانگر یک فایل ارائه است.
let presentation = new aspose.slides.Presentation();
try {
    let fileStream = java.newInstanceSync("java.io.FileOutputStream", "Output.pptx");
    try {
        // ذخیرهٔ ارائه به جریان.
        presentation.save(fileStream, aspose.slides.SaveFormat.Pptx);
    } finally {
        fileStream.close();
    }
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها با نوع نمایش از پیش تعریف‌شده

Aspose.Slides به شما امکان می‌دهد نمای اولیه‌ای که PowerPoint هنگام باز شدن ارائهٔ تولید شده استفاده می‌کند، از طریق کلاس ViewProperties تنظیم کنید. از متد setLastView با یک مقدار از enumeration ViewType استفاده کنید.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let presentation = new aspose.slides.Presentation();
try {
    presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
    presentation.save("SlideMasterView.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها در قالب Strict Office Open XML

Aspose.Slides به شما امکان می‌دهد یک ارائه را در قالب Strict Office Open XML ذخیره کنید. از کلاس PptxOptions استفاده کنید و هنگام ذخیره، ویژگی conformance آن را تنظیم کنید. اگر Conformance.Iso29500_2008_Strict را تنظیم کنید، فایل خروجی در قالب Strict Office Open XML ذخیره می‌شود.

مثال زیر یک ارائه ایجاد می‌کند و آن را در قالب Strict Office Open XML ذخیره می‌نماید.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);

// نمونه‌سازی کلاس Presentation که نمایانگر یک فایل ارائه است.
let presentation = new aspose.slides.Presentation();
try {
    // ذخیرهٔ ارائه در قالب Strict Office Open XML.
    presentation.save("StrictOfficeOpenXml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها در قالب Office Open XML در حالت Zip64

یک فایل Office Open XML یک آرشیو ZIP است که محدودیت ۴ گیگابایت (۲^۳۲ بایت) بر اندازهٔ فشرده‌نشده هر فایل، اندازهٔ فشرده هر فایل و مجموع اندازهٔ آرشیو اعمال می‌کند و همچنین تعداد فایل‌ها را به ۶۵٬۵۳۵ (۲^۱۶‑۱) محدود می‌سازد. افزونه‌های فرمت ZIP64 این محدودیت‌ها را به ۲^۶۴ افزایش می‌دهند.

متد PptxOptions.setZip64Mode به شما اجازه می‌دهد هنگام ذخیرهٔ یک فایل Office Open XML، زمانی که باید از افزونه‌های فرمت ZIP64 استفاده کنید را انتخاب کنید.

این متد می‌تواند با حالت‌های زیر استفاده شود:

  • IfNecessary فقط در صورتی که ارائه محدودیت‌های فوق را تجاوز کند، از افزونه‌های ZIP64 استفاده می‌کند. این حالت پیش‌فرض است.
  • Never هرگز از افزونه‌های ZIP64 استفاده نمی‌کند.
  • Always همیشه از افزونه‌های ZIP64 استفاده می‌کند.

کد زیر نحوهٔ ذخیرهٔ یک ارائه به شکل فایل PPTX با فعال‌سازی افزونه‌های فرمت ZIP64 را نشان می‌دهد:

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setZip64Mode(aspose.slides.Zip64Mode.Always);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("OutputZip64.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها در قالب Office Open XML با سطوح فشرده‌سازی

هنگام کار با ارائه‌های بزرگ، می‌توانید سطح فشرده‌سازی را تنظیم کنید تا بین اندازهٔ فایل و زمان پردازش تعادل برقرار شود. بسته به نیازهای شما ممکن است پردازش سریع‌تر یا فایل خروجی کوچکتر ترجیح داده شود.

Aspose.Slides متد PptxOptions.setCompressionLevel را فراهم می‌کند که به شما اجازه می‌دهد سطح فشرده‌سازی مورد استفاده هنگام ذخیرهٔ یک ارائه در قالب Office Open XML را مشخص کنید.

سطوح فشرده‌سازی موجود عبارتند از:

  • None: هیچ فشرده‌سازی‌ای اعمال نمی‌شود. فایل‌ها همان‌گونه ذخیره می‌شوند.
  • Level1: سریع‌ترین فشرده‌سازی با کمترین نسبت فشرده‌سازی.
  • Level2: فشرده‌سازی سریع‌تر با نسبت کمی بهتر نسبت به Level1.
  • Level3: فشرده‌سازی بهتر از Level2 با تأثیر متوسط بر زمان پردازش.
  • Level4: فشرده‌سازی بهتر از Level3.
  • Level5: فشرده‌سازی بهبود یافته نسبت به Level4 با زمان پردازش بیشتر.
  • Level6: فشرده‌سازی استاندارد که تعادل خوبی بین سرعت پردازش و اندازهٔ فایل ارائه می‌دهد. این سطح فشرده‌سازی پیش‌فرض است.
  • Level7: فشرده‌سازی بهتر از Level6 با پردازش کندتر.
  • Level8: فشرده‌سازی بهتر از Level7.
  • Level9: حداکثر فشرده‌سازی. کوچک‌ترین حجم فایل را تولید می‌کند اما طولانی‌ترین زمان پردازش را می‌طلبد.

مثال زیر نشان می‌دهد چگونه یک ارائه را به صورت فایل PPTX بدون فشرده‌سازی ذخیره کنید:

const aspose = { slides: require("aspose.slides.via.java") };

const pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setCompressionLevel(aspose.slides.CompressionLevel.None);

const presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Sample-out.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

این مثال چگونگی ذخیرهٔ یک ارائه به عنوان فایل PPTX با حداکثر فشرده‌سازی را نشان می‌دهد:

const aspose = { slides: require("aspose.slides.via.java") };

const pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setCompressionLevel(aspose.slides.CompressionLevel.Level9);

const presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Sample-level9.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

ذخیرهٔ ارائه‌ها بدون تازه‌سازی تصویر بند انگشتی

متد PptxOptions.setRefreshThumbnail کنترل می‌کند که آیا هنگام ذخیرهٔ یک ارائه به PPTX تصویر بند انگشتی تولید شود یا نه:

  • اگر به true تنظیم شود، تصویر بند انگشتی در هنگام ذخیره تازه‌سازی می‌شود. این حالت پیش‌فرض است.
  • اگر به false تنظیم شود، تصویر بند انگشتی فعلی حفظ می‌شود. اگر ارائه هیچ تصویر بند انگشتی نداشته باشد، تصویری تولید نمی‌شود.

در کد زیر، ارائه بدون تازه‌سازی تصویر بند انگشتی به PPTX ذخیره می‌شود.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setRefreshThumbnail(false);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
}
finally {
    presentation.dispose();
}

ذخیرهٔ به‌روزرسانی‌های پیشرفت به درصد

گزارش‌گذاری پیشرفت ذخیره‌سازی از طریق متد setProgressCallback روی SaveOptions و زیرکلاس‌های آن پیکربندی می‌شود. یک پروکسی Java که رابط IProgressCallback را پیاده‌سازی می‌کند ارائه دهید؛ در طول خروجی، این callback به‌صورت دوره‌ای به‌روزرسانی‌های درصدی دریافت می‌کند.

کدهای زیر نشان می‌دهند چگونه از IProgressCallback استفاده کنید.

var aspose = aspose || {};
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.`);
    }
});

let saveOptions = new aspose.slides.PdfOptions();
saveOptions.setProgressCallback(ExportProgressHandler);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Output.pdf", aspose.slides.SaveFormat.Pdf, saveOptions);
} finally {
    presentation.dispose();
}

پرسش‌های متداول

آیا «ذخیره سریع» (ذخیره افزایشی) پشتیبانی می‌شود تا فقط تغییرات نوشته شوند؟

خیر. هر بار ذخیره‌سازی، فایل هدف کامل ایجاد می‌شود؛ ذخیره‌سازی افزایشی «ذخیره سریع» پشتیبانی نمی‌شود.

آیا ذخیرهٔ یک شیء Presentation از چندین نخ همزمان ایمن است؟

خیر. یک شیء Presentation ایمن برای استفاده از چندین نخ نیست؛ آن را از یک نخ ذخیره کنید.

هنگام ذخیره‌سازی، چه اتفاقی برای پیوندهای فراگیر و فایل‌های خارجی لینک‌شده می‌افتد؟

Hyperlinks حفظ می‌شوند. فایل‌های خارجی لینک‌شده (مثلاً ویدئوها با مسیرهای نسبی) به طور خودکار کپی نمی‌شوند؛ اطمینان حاصل کنید مسیرهای ارجاعی در دسترس باقی بمانند.

آیا می‌توان متادیتاهای سند (نویسنده، عنوان، شرکت، تاریخ) را تنظیم/ذخیره کرد؟

بله. ویژگی‌های سند استاندارد پشتیبانی می‌شوند و هنگام ذخیره به فایل نوشته می‌شوند.