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

نمای کلی

پس از ایجاد یک ارائه یا باز کردن یک ارائه موجود، از روش Presentation.save برای نوشتن نتیجه استفاده کنید. Aspose.Slides برای Android از طریق 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 استفاده کنید.

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

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 توسط Aspose.Slides استفاده کنید:

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

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

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

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

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