تحويل شرائح العروض التقديمية إلى صور في بايثون

المقدمة

يمكن لـ Aspose.Slides for Python via Java أن يعرض شرائح فردية من عروض PowerPoint وOpenDocument كصيغ PNG وJPEG وGIF وTIFF وغيرها من صيغ الصور.

لتحويل شريحة إلى صورة، اتبع الخطوات التالية:

  1. حمّل العرض باستخدام الفئة Presentation.
  2. اختر الشريحة التي تريد عرضها.
  3. إذا لزم الأمر، اضبط عملية العرض باستخدام الفئة RenderingOptions أو الفئة TiffOptions.
  4. استدعِ الطريقة Slide.getImage. تُعيد كائن صورة.
  5. احفظ الصورة وحدد صيغة الإخراج باستخدام قيمة 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()

تحويل الشرائح إلى صور باستخدام خيارات 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()

تحويل جميع الشرائح إلى صور

تجول عبر مجموعة الشرائح لتحويل كامل العرض إلى مجموعة من الصور. تشمل الشرائح المخفية ما لم تقم بتجاوزها صراحةً.

المثال التالي يعرض كل شريحة كصورة 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.

عرض الإيموجي الملونة

الأسئلة الشائعة

هل يدعم Aspose.Slides عرض الشرائح مع الرسوم المتحركة؟

لا. الطريقة Slide.getImage تُظهر صورة ثابتة للشريحة ولا تُصدّر الرسوم المتحركة.

هل يمكن تصدير الشرائح المخفية كصور؟

نعم. يمكن عرض الشرائح المخفية مثل الشرائح العادية. قم بإدراجها في حلقة المعالجة، كما هو موضح في المثال أعلاه.

هل تُحافظ صور الشرائح على الظلال وغيرها من التأثيرات؟

نعم. يقوم Aspose.Slides بعرض الظلال والشفافية وغيرها من التأثيرات الرسومية المدعومة في صور الشرائح.