تحويل شرائح العروض إلى صور في Java
المقدمة
يمكن لـ Aspose.Slides for Java تحويل الشرائح الفردية من عروض PowerPoint وOpenDocument إلى صيغ PNG وJPEG وGIF وTIFF وغيرها من صيغ الصور.
لتحويل شريحة إلى صورة، اتبع الخطوات التالية:
- احمل العرض باستخدام الفئة Presentation .
- اختر الشريحة التي تريد تحويلها.
- إذا لزم الأمر، قم بتكوين عملية التحويل باستخدام الفئة RenderingOptions أو الفئة TiffOptions .
- استدعِ الطريقة ISlide.getImage . تُعيد كائنًا من النوع IImage .
- استدعِ الطريقة IImage.save وحدد صيغة الإخراج باستخدام قيمة من النوع ImageFormat .
تحويل شريحة إلى صورة PNG
أبسط طريقة للتحويل تستخدم إعدادات التحويل الافتراضية. يمكن معالجة كائن IImage الناتج في الذاكرة أو حفظه إلى ملف.
المثال التالي بلغة Java يقوم بتحويل الشريحة الأولى وحفظها كصورة PNG:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage();
try {
image.save("Slide_0.png", ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
تحويل الشرائح إلى صور بأحجام مخصصة
استخدم التحميل الزائد للطريقة ISlide.getImage الذي يقبل قيمة من النوع Dimension لتحديد أبعاد البكسل الدقيقة للشفرة.
المثال التالي ينشئ صورة JPEG بحجم 1820 × 1040 بكسل:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import java.awt.Dimension;
Dimension imageSize = new Dimension(1820, 1040);
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(imageSize);
try {
image.save("Slide_0.jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
تحويل الشرائح مع الملاحظات والتعليقات إلى صور
بشكل افتراضي، لا تشمل صور الشرائح الملاحظات أو التعليقات. مرّر كائنًا من النوع NotesCommentsLayoutingOptions إلى الطريقة RenderingOptions.setSlidesLayoutOptions للتحكم في موضع ظهور الملاحظات والتعليقات.
المثال التالي يضع الملاحظات المختصرة أسفل الشريحة والتعليقات إلى يمينها:
import com.aspose.slides.CommentsPositions;
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.NotesCommentsLayoutingOptions;
import com.aspose.slides.NotesPositions;
import com.aspose.slides.Presentation;
import com.aspose.slides.RenderingOptions;
import java.awt.Color;
float scaleX = 2f;
float scaleY = scaleX;
Color commentsAreaColor = new Color(250, 235, 215);
NotesCommentsLayoutingOptions layoutOptions = new NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);
RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);
Presentation presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(renderingOptions, scaleX, scaleY);
try {
image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Warning
لتحويل الشرائح إلى صور، لا تمرر BottomFull إلى الطريقة NotesCommentsLayoutingOptions.setNotesPosition . قد تحتوي الملاحظات على نص أكثر مما تسمح به مساحة الصورة الثابتة. استخدم BottomTruncated بدلًا من ذلك.تحويل الشرائح إلى صور باستخدام خيارات TIFF
تتيح الفئة TiffOptions التحكم في الحجم والدقة والخصائص الأخرى لصورة TIFF المُحوَّلة.
المثال التالي يحول الشريحة الأولى إلى صورة TIFF بحجم 2160 × 2880 بكسل وبنقطة 300 DPI:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.TiffOptions;
import java.awt.Dimension;
Dimension imageSize = new Dimension(2160, 2880);
TiffOptions tiffOptions = new TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(tiffOptions);
try {
image.save("output.tiff", ImageFormat.Tiff);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Warning
دعم TIFF غير مضمون في إصدارات Java السابقة لـ JDK 9.تحويل جميع الشرائح إلى صور
قم بالتكرار عبر مجموعة الشرائح لتحويل كامل العرض إلى سلسلة من الصور. تُضمّن الشرائح المخفية ما لم تقم بتخطيها صراحةً.
المثال التالي يحول كل شريحة إلى صورة JPEG مع عوامل مقياس أفقي ورأسي مقدارها 2:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
float scaleX = 2f;
float scaleY = scaleX;
Presentation presentation = new Presentation("Presentation.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int index = 0; index < slideCount; index++) {
ISlide slide = presentation.getSlides().get_Item(index);
IImage image = slide.getImage(scaleX, scaleY);
try {
image.save("Slide_" + index + ".jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
}
} finally {
presentation.dispose();
}
إنشاء مخرج Metafile محسن (EMF)
يُعد Enhanced Metafile (EMF) مفيدًا عندما يجب تبادل الرسوميات القائمة على المتجهات مع Microsoft Office أو تطبيقات Windows الأخرى التي تدعم ملفات Metafile. على عكس الصورة القائمة على البكسل، يمكن لـ EMF الاحتفاظ بعمليات الرسم المتجهية التي تُوسع دون فقدان الحدة. ومع ذلك، يُعَد EMF في الأساس صيغة توافق لتطبيقات تدعم ملفات Metafile على Windows، وليس صيغة تبادل عالمية. بالإضافة إلى ذلك، قد يتم تخزين محتوى الشريحة المعقد، مثل الصور النقطية وبعض التأثيرات، كعناصر مُرصَّصة داخل حاوية ملف Metafile المتجه.
تصدير شريحة إلى EMF
تكتب الطريقة ISlide.writeAsEmf كائنًا من النوع ISlide إلى تدفق الهدف بصيغة EMF. المثال التالي يحمل عرضًا، يختار الشريحة الأولى، ويكتبها إلى تدفق ملف EMF:
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.io.FileOutputStream;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
FileOutputStream emfStream = new FileOutputStream("Slide_0.emf");
try {
slide.writeAsEmf(emfStream);
} finally {
emfStream.close();
}
} finally {
presentation.dispose();
}
يمتلك المتصل التدفق الممرَّ إلى ISlide.writeAsEmf ويكون مسؤولاً عن إغلاقه، كما هو موضح أعلاه.
تحويل صورة SVG إلى EMF وإضافتها إلى عرض
استخدم الطريقة ISvgImage.writeAsEmf لتحويل محتوى SVG إلى EMF. يمكن إضافة البايتات الناتجة إلى العرض عبر الطريقة IImageCollection.addImage ووضعها على شريحة باستخدام الطريقة IShapeCollection.addPictureFrame .
المثال التالي ينشئ كائنًا من النوع SvgImage من شيفرة SVG، يحوله إلى EMF في الذاكرة، يدرج ملف Metafile على الشريحة الأولى، ويحفظ العرض:
import com.aspose.slides.IPPImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ISvgImage;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
import com.aspose.slides.SvgImage;
import java.io.ByteArrayOutputStream;
String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
ISvgImage svgImage = new SvgImage(svgContent);
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ByteArrayOutputStream emfStream = new ByteArrayOutputStream();
try {
svgImage.writeAsEmf(emfStream);
byte[] emfData = emfStream.toByteArray();
IPPImage image = presentation.getImages().addImage(emfData);
slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
} finally {
emfStream.close();
}
presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
الطريقة ISvgImage.writeAsEmf لا تتولى ملكية تدفق الوجهة. تخزن فئة ByteArrayOutputStream جميع البيانات المُولَّدة في الذاكرة، لذا لا يلزم إعادة تعيين الموضع قبل استدعاء toByteArray. يظل مصفوفة البايتات المرجعية صالحة بعد إغلاق التدفق.
يتوفر توليد EMF على أنظمة التشغيل التي تدعمها تكوينات Aspose.Slides for Java وJDK المختارة، لكن قد تختلف عملية التحويل عبر الأنظمة عندما تكون الخطوط أو تبعيات الرسوميات غير متاحة. ثبّت الخطوط المستخدمة في المحتوى الأصلي أو قم بتكوين بدائل مناسبة، وتبع متطلبات النظام لـ Aspose.Slides for Java، وتحقق من النتيجة في التطبيق المستهدف الذي يستهلك EMF. غالبًا ما يكون لدعم تطبيقات Linux وmacOS لعرض وتحرير ملفات Metafile الخاص بـ Windows قيود أو عدم اتساق.
تجسيد الرموز التعبيرية الملونة
Note
لضمان تجسيد الرموز التعبيرية الملونة بشكل صحيح عند تحويل شرائح العرض إلى صور، يجب أن تكون خطوط الرموز التعبيرية المستخدمة في العرض مثبتة ومتاحة على النظام الذي يجري التحويل. على سبيل المثال، إذا كان العرض يستخدم Segoe UI Emoji وكانت هذه الخط غير موجودة، قد تظهر الرموز التعبيرية بأحادية اللون في الصور الناتجة.الأسئلة المتكررة
هل يدعم Aspose.Slides تجسيد الشرائح مع الرسوم المتحركة؟
لا. الطريقة ISlide.getImage تُنتج صورة ثابتة للشريحة ولا تُصدِّر الرسوم المتحركة.
هل يمكن تصدير الشرائح المخفية كصور؟
نعم. يمكن تحويل الشرائح المخفية مثل الشرائح العادية. تضمّنها في حلقة المعالجة، كما هو موضح في المثال أعلاه.
هل تُحفظ الظلال وغيرها من التأثيرات في صور الشرائح؟
نعم. يقوم Aspose.Slides بتجسيد الظلال والشفافية وغيرها من التأثيرات الرسومية المدعومة في صور الشرائح.