حفظ العروض التقديمية على Android
نظرة عامة
بعد إنشاء عرض تقديمي أو فتح أحد العروض الموجودة، استخدم طريقة Presentation.save لكتابة النتيجة. Aspose.Slides for 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.
ملفات 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();
}
حفظ العروض التقديمية بصيغة Office Open XML الصارمة
لإنشاء ملف PPTX يتطابق مع الملف الشخصي الصارم لـ 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 للتحكم فيما إذا كانت Aspose.Slides تكتب امتدادات ZIP64:
- 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();
}
Warning
إذا تم استخدام Zip64Mode.Never ولا يمكن للعرض التقديمي أن يتناسب ضمن حدود ZIP القياسية، فإن عملية الحفظ تُثير استثناء PptxException.حفظ العروض التقديمية بصيغة 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();
}
Note
تعطيل تحديث الصورة المصغرة يمكن أن يقلل الوقت المطلوب لحفظ ملف PPTX.حفظ تحديثات التقدم كنسبة مئوية
لرصد عملية حفظ، نفّذ واجهة 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();
}
Note
توفر Aspose أداة مجانية تُدعى PowerPoint Splitter مبنية على API الخاص بـ Aspose.Slides. تقوم هذه الأداة بحفظ الشرائح المحددة من عرض تقديمي كملفات PPT أو PPTX منفصلة.الأسئلة المتكررة
هل يدعم Aspose.Slides الحفظ المتدرج أو “الحفظ السريع”?
لا. كل عملية حفظ تكتب ملفًا كاملاً بدلاً من تحديث الأجزاء المتغيّرة فقط.
هل يمكن لعدة خيوط حفظ نفس كائن Presentation؟
لا. كائن Presentation غير آمن للمتعدد الخيوط. يجب الوصول إلى كل كائن وحفظه من خيط واحد في كل مرة.
ماذا يحدث للروابط التشعبية والملفات المرتبطة خارجيًا عندما أحفظ عرضًا تقديميًا؟
Hyperlinks تبقى في العرض. لا تقوم Aspose.Slides بنسخ الملفات المرتبطة خارجيًا، لذا يجب أن يتمكن العرض المحفوظ من الوصول إلى مواقعها.
هل يمكنني حفظ بيانات تعريف المستند مثل المؤلف، العنوان، الشركة، وتاريخ الإنشاء؟
نعم. اضبط document properties قبل الحفظ، وستكتب Aspose.Slides هذه القيم إلى ملف الإخراج.