ذخیره ارائه‌ها در جاوا اسکریپت

بررسی کلی

پس از اینکه یک ارائه ایجاد کردید یا یک ارائه موجود را باز کنید، از روش 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 و XML PowerPoint را به فرمت‌های ذخیره‌سازی متناظرشان نگاشت می‌کند. این متد فقط فرمت‌های منبع ارائه را نگاشت می‌کند؛ برای انتخاب فرم‌های خروجی مانند 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 استاندارد اندازه فشرده‌شده و غیر فشرده‌شده هر ورودی، مجموع اندازه آرشیو و تعداد ورودی‌ها را محدود می‌کند. چون یک فایل PPTX در واقع یک آرشیو ZIP است، یک ارائه بسیار بزرگ می‌تواند این محدودیت‌ها را پشت سر بگذارد. افزونه‌های ZIP64 محدودیت‌های مربوط به اندازه و تعداد ورودی را افزایش می‌دهند.

از روش PptxOptions.setZip64Mode برای کنترل نوشتن افزونه‌های ZIP64 استفاده کنید:

  • IfNecessary فقط زمانی که ارائه از محدودیت‌های استاندارد ZIP فراتر رود، از ZIP64 استفاده می‌کند. این حالت پیش‌فرض است.
  • 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 ایمن برای چندنخی نیست. هر نمونه باید فقط توسط یک نخ در هر زمان دسترسی پیدا کرده و ذخیره شود.

چه اتفاقی برای لینک‌های فراملی و فایل‌های لینک‌خورده خارجی می‌افتد وقتی یک ارائه را ذخیره می‌کنم؟

لینک‌های فراملی در ارائه باقی می‌مانند. Aspose.Slides فایل‌های لینک‌خورده خارجی را کپی نمی‌کند، بنابراین ارائه ذخیره‌شده باید همچنان به مکان‌های آن‌ها دسترسی داشته باشد.

آیا می‌توانم متاداده‌های سند مانند نویسنده، عنوان، شرکت و تاریخ ایجاد را ذخیره کنم؟

بله. قبل از ذخیره، ویژگی‌های مناسب document properties را تنظیم کنید و Aspose.Slides آن‌ها را در فایل خروجی می‌نویسد.