Конвертировать PPT и PPTX в PDF в Python через Java [Включены расширенные возможности]

Обзор

Преобразование презентаций PowerPoint (PPT, PPTX, ODP и др.) в формат PDF в Python через Java предлагает несколько преимуществ, включая совместимость с различными устройствами и сохранение макета и форматирования вашей презентации. В этом руководстве демонстрируется, как конвертировать презентации в PDF‑документы, использовать различные параметры для управления качеством изображений, включать скрытые слайды, защищать PDF‑файлы паролем, обнаруживать замену шрифтов, выбирать конкретные слайды для конвертации и применять стандарты соответствия к выходным документам.

Конвертации PowerPoint в PDF

Используя Aspose.Slides, вы можете конвертировать презентации в следующих форматах в PDF:

  • PPT
  • PPTX
  • ODP

Чтобы конвертировать презентацию в PDF, передайте имя файла в качестве аргумента классу Presentation и затем сохраните презентацию в PDF, используя метод save. Класс Presentation предоставляет метод save, который обычно используется для конвертации презентации в PDF.

Аспose.Slides позволяет вам конвертировать:

  • Полные презентации в PDF
  • Конкретные слайды из презентации в PDF

Аспose.Slides экспортирует презентации в PDF, обеспечивая, что полученные PDF‑файлы максимально соответствуют оригинальным презентациям. Элементы и атрибуты точно отображаются при конвертации, включая:

  • Изображения
  • Текстовые поля и фигуры
  • Форматирование текста
  • Форматирование абзацев
  • Гиперссылки
  • Верхние и нижние колонтитулы
  • Маркеры
  • Таблицы

Конвертация PowerPoint в PDF

Стандартная конвертация использует настройки экспортирования PDF по умолчанию. Используйте пользовательские параметры, когда необходимо контролировать качество изображений, содержимое страниц или соответствие PDF.

Установите Aspose.Slides for Python via Java и совместимую среду выполнения Java перед запуском примеров. Каждый пример читает presentation.pptx из текущего рабочего каталога; замените его вашим файлом PPT, PPTX или ODP. Запустите JVM один раз за процесс Python.

В следующем примере загружается презентация и сохраняются все видимые слайды в PDF с использованием настроек экспортирования по умолчанию.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation.pdf", SaveFormat.Pdf)
finally:
    presentation.dispose()

Конвертация PowerPoint в PDF с параметрами

Аспose.Slides предоставляет пользовательские параметры — свойства класса PdfOptions, которые позволяют настроить полученный PDF, защитить PDF паролем или задать, как должен происходить процесс конвертации.

Конвертация PowerPoint в PDF с пользовательскими параметрами

Используя пользовательские параметры конвертации, вы можете задать предпочтительные настройки качества растровых изображений, указать, как обрабатывать метафайлы, установить уровень сжатия текста, настроить DPI для изображений и многое другое.

В следующем примере презентация экспортируется в PDF 1.5 с качеством JPEG, установленным на 90, разрешением изображения 300 DPI, метафайлы сохраняются как PNG и используется сжатие текста Flate.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfCompliance, PdfOptions, PdfTextCompression, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setJpegQuality(jpype.JByte(90))
pdf_options.setSufficientResolution(300)
pdf_options.setSaveMetafilesAsPng(True)
pdf_options.setTextCompression(PdfTextCompression.Flate)
pdf_options.setCompliance(PdfCompliance.Pdf15)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-custom.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Сохранение встроенных OLE‑файлов в виде вложений PDF

Если презентация содержит встроенную книгу Excel, вы можете захотеть, чтобы получатели PDF могли получить доступ к данным книги, а также просматривать слайды. Вызовите setIncludeOleData со значением True, чтобы сохранить вложенные OLE‑файлы во вложениях результирующего PDF.

Значение по умолчанию — False: превью‑изображение или значок OLE‑объекта отображается на странице PDF, но встроенный файл не включается как вложение. Установка опции в True дополнительно включает данные файла. Превью остаётся визуальным представлением; вложение позволяет получателям открыть или сохранить встроенный файл отдельно. OLE‑объект не превращается в интерактивный лист Excel на странице PDF.

В следующем примере загружается презентация, уже содержащая встроенную книгу Excel, и экспортируется в PDF с прикреплённой книгой.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setIncludeOleData(True)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Чтобы проверить результат:

  1. Откройте экспортированный PDF в программе, поддерживающей вложения файлов, например Adobe Acrobat Reader.
  2. Откройте панель Attachments (Вложения) в просмотрщике и найдите встроенную книгу.
  3. Сохраните вложение и откройте его в Excel, чтобы проверить данные, или откройте его напрямую, если просмотрщик позволяет. Превью на странице PDF отдельное от вложения.

Конвертация PowerPoint в PDF с скрытыми слайдами

Если презентация содержит скрытые слайды, вы можете использовать метод setShowHiddenSlides класса PdfOptions, чтобы включить скрытые слайды в виде страниц в результирующий PDF.

В следующем примере презентация экспортируется в PDF с включением всех скрытых слайдов.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setShowHiddenSlides(True)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-hidden-slides.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Конвертация PowerPoint в защищённый паролем PDF

В следующем примере презентация экспортируется в PDF, требующий пароль password для открытия. Права доступа позволяют печать, включая печать высокого качества.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfAccessPermissions, PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setPassword("password")
pdf_options.setAccessPermissions(PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-protected.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Обнаружение замены шрифтов

Аспose.Slides предоставляет метод setWarningCallback в классе PdfOptions, позволяющий обнаруживать замену шрифтов во время процесса конвертации презентации в PDF.

В следующем примере презентация экспортируется в PDF и выводит предупреждения о замене шрифтов в консоль. Предупреждение выводится только когда недоступный шрифт заменяется при экспортировании. Используйте прокси JPype для получения обратных вызовов предупреждений из Java API. Преобразуйте строку описания из Java в строку Python перед проверкой её префикса:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, ReturnAction, SaveFormat, WarningType

class FontSubstitutionHandler:
    def warning(self, warning):
        description = str(warning.getDescription())
        if warning.getWarningType() == WarningType.DataLoss and description.startswith("Font will be substituted"):
            print(f"Font substitution warning: {description}")
        return ReturnAction.Continue


handler = FontSubstitutionHandler()
callback = jpype.JProxy("com.aspose.slides.IWarningCallback", inst=handler)

pdf_options = PdfOptions()
pdf_options.setWarningCallback(callback)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-font-warnings.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Конвертация выбранных слайдов PowerPoint в PDF

Номера слайдов, передаваемые в Presentation.save, начинаются с 1. В этом примере экспортируются слайды 1 и 3, если они существуют:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    slide_numbers = jpype.JArray(jpype.JInt)([1, 3])
    presentation.save("presentation-selected-slides.pdf", slide_numbers, SaveFormat.Pdf)
finally:
    presentation.dispose()

Конвертация PowerPoint в PDF с пользовательским размером слайда

В этом примере первый слайд экспортируется на страницу размером 612 × 792 пунктов (US Letter). Слайд клонируется в новую презентацию с указанным размером, и содержимое слайда масштабируется для соответствия.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideSizeScaleType

presentation = Presentation("presentation.pptx")
resized_presentation = Presentation()
try:
    resized_presentation.getSlideSize().setSize(612, 792, SlideSizeScaleType.EnsureFit)
    slide = presentation.getSlides().get_Item(0)
    resized_presentation.getSlides().insertClone(0, slide)

    # Удалить пустой слайд, с которым была создана новая презентация.
    resized_presentation.getSlides().removeAt(1)

    resized_presentation.save("presentation-custom-size.pdf", SaveFormat.Pdf)
finally:
    presentation.dispose()
    resized_presentation.dispose()

Конвертация PowerPoint в PDF в виде заметок к слайдам

В следующем примере презентация экспортируется в PDF, размещая заметки докладчика каждого слайда под самим слайдом. Используйте презентацию, содержащую заметки докладчика, чтобы увидеть результат.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import NotesCommentsLayoutingOptions, NotesPositions, PdfOptions, Presentation, SaveFormat

notes_options = NotesCommentsLayoutingOptions()
notes_options.setNotesPosition(NotesPositions.BottomFull)

pdf_options = PdfOptions()
pdf_options.setSlidesLayoutOptions(notes_options)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-with-notes.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Стандарты доступности и соответствия для PDF

При подготовке доступных PDF обратитесь к Руководствам по доступности веб‑контенту (WCAG). Используйте PdfOptions.setCompliance для выбора выходного стандарта: PDF/A1a, PDF/A1b и PDF/UA.

Этот код демонстрирует процесс конвертации PowerPoint в PDF, создающий несколько PDF‑файлов в зависимости от различных стандартов соответствия:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfCompliance, PdfOptions, Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    pdf_options = PdfOptions()

    pdf_options.setCompliance(PdfCompliance.PdfA1a)
    presentation.save("presentation-a1a.pdf", SaveFormat.Pdf, pdf_options)

    pdf_options.setCompliance(PdfCompliance.PdfA1b)
    presentation.save("presentation-a1b.pdf", SaveFormat.Pdf, pdf_options)
    
    pdf_options.setCompliance(PdfCompliance.PdfUa)
    presentation.save("presentation-ua.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Примечание: При экспорте в PDF/UA Aspose.Slides рассматривает сложную графику, такую как SmartArt, диаграммы и формулы, как единую фигурой. Отдельные элементы пути не сохраняются как отдельный контент и могут быть помечены как артефакты; альтернативный текст предоставляется только для всей фигуры.

FAQ

Могу ли я конвертировать несколько файлов PowerPoint в PDF пакетно?

Да, Aspose.Slides поддерживает пакетную конвертацию нескольких файлов PPT или PPTX в PDF. Вы можете перебрать свои файлы и программно выполнить процесс конвертации.

Можно ли защитить полученный PDF паролем?

Да. Используйте класс PdfOptions для установки пароля и определения прав доступа в процессе конвертации.

Как включить скрытые слайды в PDF?

Вызовите setShowHiddenSlides со значением True в классе PdfOptions для включения скрытых слайдов в результирующий PDF.

Может ли Aspose.Slides сохранять высокое качество изображений в PDF?

Да, вы можете контролировать качество изображений, используя методы, такие как setJpegQuality и setSufficientResolution в классе PdfOptions для обеспечения высокого качества изображений в вашем PDF.

Поддерживает ли Aspose.Slides стандарты соответствия PDF/A?

Да, Aspose.Slides позволяет экспортировать PDF, соответствующие различным стандартам, включая PDF/A1a, PDF/A1b и PDF/UA, для доступности или архивирования. Выберите необходимый стандарт и проверьте полученный результат в соответствии с вашими требованиями.

Дополнительные ресурсы