Создать просмотрщик презентаций в Python через Java
Введение
Aspose.Slides for Python via Java используется для создания файлов презентаций со слайдами. Эти слайды можно просматривать, открывая презентации в Microsoft PowerPoint, например. Однако иногда разработчикам может потребоваться просматривать слайды как изображения в их предпочтительном просмотрщике изображений или создавать свой собственный просмотрщик презентаций. В таких случаях Aspose.Slides позволяет экспортировать отдельный слайд в виде изображения. В этой статье описано, как это сделать.
Создание SVG‑изображения из слайда
Чтобы создать SVG‑изображение из слайда презентации с помощью Aspose.Slides, выполните следующие действия:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Откройте байтовый поток.
- Сохраните слайд как SVG‑изображение в поток и запишите его в файл.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
from java.io import ByteArrayOutputStream
slide_index = 0
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(slide_index)
svg_stream = ByteArrayOutputStream()
try:
slide.writeAsSvg(svg_stream)
svg_data = bytes(svg_stream.toByteArray())
with open("output.svg", "wb") as output_file:
output_file.write(svg_data)
finally:
svg_stream.close()
finally:
presentation.dispose()
Создание SVG с пользовательским идентификатором формы
Aspose.Slides можно использовать для создания SVG из слайда с пользовательским идентификатором формы. Для этого используйте метод SvgShape.setId из SvgShape. CustomSvgShapeFormattingController может быть использован для установки идентификатора формы.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SVGOptions
from java.io import ByteArrayOutputStream
class CustomSvgShapeFormattingController:
def __init__(self, shape_start_index=0):
self.shape_index = shape_start_index
def formatShape(self, svg_shape, shape):
svg_shape.setId(f"shape-{self.shape_index}")
self.shape_index += 1
slide_index = 0
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(slide_index)
controller = CustomSvgShapeFormattingController()
controller_proxy = jpype.JProxy("com.aspose.slides.ISvgShapeFormattingController", inst=controller)
svg_options = SVGOptions()
svg_options.setShapeFormattingController(controller_proxy)
svg_stream = ByteArrayOutputStream()
try:
slide.writeAsSvg(svg_stream, svg_options)
svg_data = bytes(svg_stream.toByteArray())
with open("output.svg", "wb") as output_file:
output_file.write(svg_data)
finally:
svg_stream.close()
finally:
presentation.dispose()
Создание эскиза слайда
Aspose.Slides помогает генерировать миниатюрные изображения слайдов. Чтобы создать миниатюру слайда с помощью Aspose.Slides, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Получите миниатюрное изображение указанного слайда с заданным масштабом.
- Сохраните миниатюрное изображение в любом требуемом формате изображения.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ImageFormat
slide_index = 0
scale_x = 1.0
scale_y = scale_x
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(slide_index)
image = slide.getImage(scale_x, scale_y)
try:
image.save("output.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
Создание миниатюры слайда с пользовательскими размерами
Чтобы создать миниатюру слайда с пользовательскими размерами, выполните следующие действия:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Получите миниатюрное изображение указанного слайда с заданными размерами.
- Сохраните миниатюрное изображение в любом требуемом формате изображения.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ImageFormat
from java.awt import Dimension
slide_index = 0
slide_size = Dimension(1200, 800)
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(slide_index)
image = slide.getImage(slide_size)
try:
image.save("output.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
Создание миниатюры слайда с примечаниями докладчика
Чтобы создать миниатюру слайда с примечаниями докладчика с помощью Aspose.Slides, выполните следующие шаги:
- Создайте экземпляр класса RenderingOptions.
- Используйте метод RenderingOptions.setSlidesLayoutOptions для установки положения примечаний докладчика.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Получите миниатюрное изображение указанного слайда с указанными параметрами рендеринга.
- Сохраните миниатюрное изображение в любом требуемом формате изображения.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, RenderingOptions
slide_index = 0
layouting_options = NotesCommentsLayoutingOptions()
layouting_options.setNotesPosition(NotesPositions.BottomTruncated)
rendering_options = RenderingOptions()
rendering_options.setSlidesLayoutOptions(layouting_options)
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(slide_index)
image = slide.getImage(rendering_options)
try:
image.save("output.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Живой пример
Вы можете попробовать бесплатное приложение Aspose.Slides Viewer чтобы увидеть, что можно реализовать с помощью API Aspose.Slides:

FAQ
Можно ли встроить просмотрщик презентаций в веб‑приложение?
Да. Вы можете использовать Aspose.Slides на стороне сервера для рендеринга слайдов в изображения или HTML и отображать их в браузере. Навигацию и масштабирование можно реализовать с помощью JavaScript для интерактивного опыта.
Какой лучший способ отображать слайды внутри собственного просмотрщика?
Рекомендуется рендерить каждый слайд как изображение (например, PNG или SVG) или преобразовывать его в HTML с помощью Aspose.Slides, а затем выводить результат в элементе picture (для настольных приложений) или в HTML‑контейнере (для веба).
Как работать с большими презентациями, содержащими множество слайдов?
Для больших наборов слайдов используйте отложенную загрузку или рендеринг по требованию. Это значит генерировать содержимое слайда только тогда, когда пользователь переходит к нему, что снижает потребление памяти и время загрузки.