تحويل شرائح العروض التقديمية إلى صور في بايثون
المقدمة
يمكن لـ Aspose.Slides for Python via Java أن يعرض شرائح فردية من عروض PowerPoint وOpenDocument كصيغ PNG وJPEG وGIF وTIFF وغيرها من صيغ الصور.
لتحويل شريحة إلى صورة، اتبع الخطوات التالية:
- حمّل العرض باستخدام الفئة Presentation.
- اختر الشريحة التي تريد عرضها.
- إذا لزم الأمر، اضبط عملية العرض باستخدام الفئة RenderingOptions أو الفئة TiffOptions.
- استدعِ الطريقة Slide.getImage. تُعيد كائن صورة.
- احفظ الصورة وحدد صيغة الإخراج باستخدام قيمة ImageFormat.
تحويل شريحة إلى صورة PNG
أبسط طريقة للتحويل تستخدم إعدادات العرض الافتراضية. يمكن معالجتها في الذاكرة أو حفظها كملف.
المثال التالي بلغة Python يعرض الشريحة الأولى ويحفظها كصورة PNG:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage()
try:
image.save("Slide_0.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
تحويل الشرائح إلى صور بأحجام مخصصة
استخدم نسخة overload من Slide.getImage التي تقبل قيمة Dimension لتصوير شريحة بأبعاد بكسلية دقيقة.
المثال التالي ينشئ صورة JPEG بأبعاد 1820 × 1040:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension
image_size = Dimension(1820, 1040)
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(image_size)
try:
image.save("Slide_0.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
تحويل الشرائح مع الملاحظات والتعليقات إلى صور
بشكل افتراضي، لا تتضمن صور الشرائح الملاحظات أو التعليقات. مرّر كائنًا من نوع NotesCommentsLayoutingOptions إلى الطريقة RenderingOptions.setSlidesLayoutOptions للتحكم في موضع ظهور الملاحظات والتعليقات.
المثال التالي يضع ملاحظات مقصوصة أسفل الشريحة وتعليقات إلى يمينها:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import CommentsPositions, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, Presentation, RenderingOptions
from java.awt import Color
scale_x = 2.0
scale_y = scale_x
comments_area_color = Color(250, 235, 215)
layout_options = NotesCommentsLayoutingOptions()
layout_options.setNotesPosition(NotesPositions.BottomTruncated)
layout_options.setCommentsPosition(CommentsPositions.Right)
layout_options.setCommentsAreaWidth(500)
layout_options.setCommentsAreaColor(comments_area_color)
rendering_options = RenderingOptions()
rendering_options.setSlidesLayoutOptions(layout_options)
presentation = Presentation("Presentation_with_notes_and_comments.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(rendering_options, scale_x, scale_y)
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 jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation, TiffOptions
from java.awt import Dimension
image_size = Dimension(2160, 2880)
tiff_options = TiffOptions()
tiff_options.setImageSize(image_size)
tiff_options.setDpiX(300)
tiff_options.setDpiY(300)
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(tiff_options)
try:
image.save("output.tiff", ImageFormat.Tiff)
finally:
image.dispose()
finally:
presentation.dispose()
Warning
دعم TIFF غير مضمون في إصدارات Java الأقدم من JDK 9.تحويل جميع الشرائح إلى صور
تجول عبر مجموعة الشرائح لتحويل كامل العرض إلى مجموعة من الصور. تشمل الشرائح المخفية ما لم تقم بتجاوزها صراحةً.
المثال التالي يعرض كل شريحة كصورة JPEG بمعاملات تكبير أفقية وعمودية مقدارها 2:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
scale_x = 2.0
scale_y = scale_x
presentation = Presentation("Presentation.pptx")
try:
slide_count = presentation.getSlides().size()
for index in range(slide_count):
slide = presentation.getSlides().get_Item(index)
image = slide.getImage(scale_x, scale_y)
try:
image.save(f"Slide_{index}.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
إنشاء مخرجات Metafile معززة
ملف Metafile المعزز (EMF) مفيد عندما يجب تبادل الرسومات القائمة على المتجهات مع Microsoft Office أو تطبيقات Windows الأخرى التي تدعم ملفات metafile. على عكس الصورة القائمة على البكسل، يمكن لـ EMF الاحتفاظ بعمليات الرسم المتجهية التي تُكَبَّر دون فقدان الحدة. ومع ذلك، يُعتبر EMF في المقام الأول تنسيق توافق لتطبيقات تدعم ملفات metafile لنظام Windows، وليس تنسيق تبادل شامل. بالإضافة إلى ذلك، قد يُخزن محتوى الشريحة المعقد، مثل الصور النقطية وبعض التأثيرات، كعناصر مُرصَّصة داخل حاوية ملف المتجه.
تصدير شريحة إلى EMF
تكتب الطريقة Slide.writeAsEmf كائنًا من نوع Slide إلى تدفق الهدف بصيغة EMF. المثال التالي يحمل عرضًا، يختار الشريحة الأولى، ويكتبها إلى تدفق ملف EMF:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
from java.io import FileOutputStream
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
emf_stream = FileOutputStream("Slide_0.emf")
try:
slide.writeAsEmf(emf_stream)
finally:
emf_stream.close()
finally:
presentation.dispose()
المستدعي يملك التدفق الممرّر إلى Slide.writeAsEmf وهو مسؤول عن إغلاقه، كما هو موضح أعلاه.
تحويل صورة SVG إلى EMF وإضافتها إلى عرض تقديمي
استخدم SvgImage.writeAsEmf لتحويل محتوى SVG إلى EMF. يمكن إضافة البايتات الناتجة إلى العرض عبر ImageCollection.addImage ووضعها على شريحة باستخدام ShapeCollection.addPictureFrame.
المثال التالي ينشئ كائن SvgImage من شفرة SVG، يحوله إلى EMF في الذاكرة، يُدرج الملف المتجه في الشريحة الأولى، ويحفظ العرض:
import jpype
import asposeslides
if not jpime.isJVMStarted():
jpime.startJVM()
from asposeslides.api import Presentation, SaveFormat, ShapeType, SvgImage
from java.io import ByteArrayOutputStream
svg_content = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>"
svg_image = SvgImage(svg_content)
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
emf_stream = ByteArrayOutputStream()
try:
svg_image.writeAsEmf(emf_stream)
emf_data = emf_stream.toByteArray()
image = presentation.getImages().addImage(emf_data)
slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image)
finally:
emf_stream.close()
presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
طريقة SvgImage.writeAsEmf لا تتولى ملكية تدفق الوجهة. يقوم ByteArrayOutputStream بتخزين جميع البيانات التي تم إنشاؤها في الذاكرة، لذلك لا يلزم إعادة تعيين الموضع قبل استدعاء ByteArrayOutputStream.toByteArray. يظل مصفوفة البايتات المرجعة صالحة بعد إغلاق التدفق.
يتوفر إنشاء ملفات EMF على أنظمة التشغيل التي يدعمها Aspose.Slides for Python via Java وتكوين JDK المختار، لكن قد يختلف العرض عبر الأنظمة عندما تكون الخطوط أو تبعيات الرسومات غير متوفرة. قم بتثبيت الخطوط المستخدمة في المحتوى الأصلي أو اضبط استبدالات مناسبة، واتبع متطلبات النظام لـ Aspose.Slides for Python via Java، وتحقق من النتيجة في التطبيق المستهدف لاستهلاك EMF. غالبًا ما تكون تطبيقات Linux وmacOS ذات دعم محدود أو غير متسق لعرض وتحرير ملفات metafile الخاصة بـ Windows.
عرض الإيموجي الملونة
Note
لعرض الإيموجي الملونة بشكل صحيح عند تحويل شرائح العرض إلى صور، يجب تثبيت خطوط الإيموجي المستخدمة في العرض وتوافرها على النظام الذي يُجري التحويل. على سبيل المثال، إذا كان العرض يستخدم Segoe UI Emoji وكان هذا الخط غير موجود، قد تظهر الإيموجي بالأبيض والأسود في الصور الناتجة.الأسئلة الشائعة
هل يدعم Aspose.Slides عرض الشرائح مع الرسوم المتحركة؟
لا. الطريقة Slide.getImage تُظهر صورة ثابتة للشريحة ولا تُصدّر الرسوم المتحركة.
هل يمكن تصدير الشرائح المخفية كصور؟
نعم. يمكن عرض الشرائح المخفية مثل الشرائح العادية. قم بإدراجها في حلقة المعالجة، كما هو موضح في المثال أعلاه.
هل تُحافظ صور الشرائح على الظلال وغيرها من التأثيرات؟
نعم. يقوم Aspose.Slides بعرض الظلال والشفافية وغيرها من التأثيرات الرسومية المدعومة في صور الشرائح.