ذخیره ارائه‌ها در جاوا

بررسی کلی

پس از اینکه یک ارائه ایجاد کنید یا یک ارائه موجود را باز کنید، از روش Presentation.save برای نوشتن نتیجه استفاده کنید. Aspose.Slides for Java می‌تواند یک ارائه را به یک فایل یا جریان در فرمت‌های PowerPoint، OpenDocument، PDF و سایر فرمت‌ها ذخیره کند. بخش‌های زیر عملیات ذخیره‌سازی استاندارد و گزینه‌های موجود برای خروجی PPTX را پوشش می‌دهند.

ذخیره ارائه‌ها در فایل‌ها

برای ذخیره یک ارائه در فایل، مسیر خروجی و مقدار SaveFormat را به روش Presentation.save بدهید. مقدار فرمت نوع فایلی که Aspose.Slides ایجاد می‌کند را تعیین می‌کند.

مثال زیر یک ارائه ایجاد کرده و به‌عنوان فایل PPTX ذخیره می‌کند:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation();
try {
    // در اینجا محتویات ارائه را اضافه یا اصلاح کنید.

    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ذخیره ارائه‌ها در فرمت اصلی آنها

برای مثال‌های تشخیص فایل و جریان، رفتار ارائه‌های تازه‌ساخته‌شده و تمایز بین فرمت منبع و خروجی، به Determine the Original Presentation Format مراجعه کنید.

در یک برنامه پردازش دسته‌ای، ممکن است فرمت ورودی از پیش شناخته‌شده نباشد. پس از بارگذاری یک فایل، فرمت اصلی آن را از روش IPresentation.getSourceFormat بخوانید. مقدار حاصل SourceFormat را به SlideUtil.toSaveFormat بدهید تا مقدار متناظر SaveFormat را دریافت کنید، و سپس از Presentation.save برای نوشتن ارائه اصلاح‌شده استفاده کنید.

مثال کامل زیر هر فایل در یک پوشه ورودی را پردازش می‌کند، عنوان آن را به‌روز می‌کند و در پوشه خروجی به همان فرمی که بارگذاری شده ذخیره می‌کند:

import com.aspose.slides.Presentation;
import com.aspose.slides.SlideUtil;
import java.io.File;

File inputDirectory = new File("Input");
File outputDirectory = new File("Output");

if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
    System.err.println("Cannot create the output directory.");
}

File[] inputFiles = inputDirectory.listFiles(File::isFile);
if (inputFiles != null && outputDirectory.isDirectory()) {
    for (File inputFile : inputFiles) {
        try {
            Presentation presentation = new Presentation(inputFile.getPath());
            try {
                int saveFormat = SlideUtil.toSaveFormat(presentation.getSourceFormat());
                presentation.getDocumentProperties().setTitle("Processed by the batch application");

                File outputFile = new File(outputDirectory, inputFile.getName());
                presentation.save(outputFile.getPath(), saveFormat);
            } finally {
                presentation.dispose();
            }
        } catch (IllegalArgumentException exception) {
            System.err.println("Cannot map the source format of '" + inputFile.getPath() + "': " + exception.getMessage());
        } catch (Exception exception) {
            System.err.println("Cannot process '" + inputFile.getPath() + "': " + exception.getMessage());
        }
    }
}

SlideUtil.toSaveFormat فرمت‌های PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP و PowerPoint XML را به فرمت‌های ذخیره‌سازی مرتبطشان تبدیل می‌کند. این متد فقط فرمت‌های منبع ارائه را نگاشت می‌کند؛ برای انتخاب فرمت‌های خروجی مانند PDF، HTML، TIFF یا تصاویر منظور نیست. استفاده از مقدار SourceFormat پشتیبانی‌نشده یا نامعتبر منجر به بروز یک IllegalArgumentException می‌شود.

فایل‌های Legacy PPT, PPS و POT از همان کانتینر باینری استفاده می‌کنند. وقتی چنین ارائه‌ای بدون پسوند فایل از یک جریان بارگذاری شود، ممکن است یک فایل PPS یا POT به‌عنوان PPT تشخیص داده شود. اگر نیاز به حفظ این زیرنوع‌های قدیمی باشد، نام فایل یا متادیتای فرمت اصلی را به‌صورت جداگانه نگهداری کنید و هنگام انتخاب نام و فرمت خروجی از آن استفاده کنید.

ذخیره ارائه‌ها در جریان‌ها

برای نوشتن یک ارائه بدون وابستگی به مسیر نهایی فایل، یک جریان قابل نوشتن و مقدار SaveFormat را به روش Presentation.save بدهید. این روش زمانی مفید است که خروجی باید از یک سرویس وب بازگردانده شود، در پایگاه‌داده ذخیره شود یا در حافظه پردازش گردد.

مثال زیر یک ارائه جدید را در یک جریان فایل ذخیره می‌کند:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import java.io.FileOutputStream;
import java.io.OutputStream;

Presentation presentation = new Presentation();
try {
    OutputStream outputStream = new FileOutputStream("Output.pptx");
    try {
        presentation.save(outputStream, SaveFormat.Pptx);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

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

می‌توانید نمایی که PowerPoint به‌صورت اولیه هنگام باز کردن یک ارائه ذخیره‌شده استفاده می‌کند را مشخص کنید. پیش از ذخیره از روش ViewProperties.setLastView همراه با مقدار ViewType استفاده کنید.

مثال زیر نمای Slide Master را به عنوان نمای اولیه تنظیم می‌کند:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ViewType;

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

ذخیره ارائه‌ها در فرمت Strict Office Open XML

برای ایجاد یک فایل PPTX که با پروفایل Strict Office Open XML سازگار باشد، یک نمونه PptxOptions بسازید و از روش setConformance همراه با Conformance.Iso29500_2008_Strict استفاده کنید. سپس این گزینه‌ها را به روش Presentation.save بدهید.

import com.aspose.slides.Conformance;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);

Presentation presentation = new Presentation();
try {
    presentation.save("StrictOfficeOpenXml.pptx", 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 را فعال می‌کند:

import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.Zip64Mode;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setZip64Mode(Zip64Mode.Always);

    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

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

برای خروجی PPTX می‌توانید با استفاده از روش PptxOptions.setCompressionLevel سرعت ذخیره را در مقابل اندازه فایل متعادل کنید. کلاس CompressionLevel این مقادیر را فراهم می‌کند:

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

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

import com.aspose.slides.CompressionLevel;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.None);

    presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

مثال زیر از حداکثر سطح فشرده‌سازی استفاده می‌کند:

import com.aspose.slides.CompressionLevel;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.Level9);

    presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

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

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

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

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

import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setRefreshThumbnail(false);

    presentation.save("Output.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

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

برای نظارت بر عملیات ذخیره، رابط IProgressCallback را پیاده‌سازی کنید و پیاده‌سازی را به روش ISaveOptions.setProgressCallback پاس دهید. سپس Aspose.Slides در طول صادرات، متد IProgressCallback.reporting را با مقادیر پیشرفت فراخوانی می‌کند.

مثال زیر پیشرفت صادرات PDF را در کنسول گزارش می‌دهد:

import com.aspose.slides.IProgressCallback;
import com.aspose.slides.PdfOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

class ExportProgressHandler implements IProgressCallback {
    public void reporting(double progressValue) {
        int progress = (int) progressValue;
        System.out.println(progress + "% of the file has been converted.");
    }
}

PdfOptions options = new PdfOptions();
options.setProgressCallback(new ExportProgressHandler());

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

سؤالات متداول

آیا Aspose.Slides از ذخیره‌سازی تدریجی یا «ذخیره سریع» پشتیبانی می‌کند؟

خیر. هر عملیات ذخیره یک فایل خروجی کامل می‌نویسد و فقط بخش‌های تغییر یافته را به‌روز نمی‌کند.

آیا چندین رشته می‌توانند یک نمونه Presentation را ذخیره کنند؟

خیر. یک نمونه Presentation thread‑safe نیست. هر نمونه باید فقط از یک رشته در هر زمان دسترسی و ذخیره شود.

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

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

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

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