Конвертация PDF в различные форматы изображений на Python

Обзор

В этой статье объясняется, как конвертировать PDF в различные форматы изображений с использованием Python. Она охватывает следующие темы.

Формат изображения: TIFF

Формат изображения: BMP

Формат изображения: EMF

Формат изображения: JPG

Формат изображения: PNG

Формат изображения: GIF

Формат изображения: SVG

Python Конвертировать PDF в изображение

Aspose.PDF для Python использует несколько подходов для конвертации PDF в изображение. В общем, мы используем два подхода: преобразование с использованием Device подхода и преобразование с использованием SaveOption. Этот раздел покажет вам, как преобразовать PDF-документы в форматы изображений, такие как BMP, JPEG, GIF, PNG, EMF, TIFF и SVG, используя один из этих подходов.

В библиотеке имеется несколько классов, которые позволяют использовать виртуальное устройство для преобразования изображений. DocumentDevice ориентирован на преобразование всего документа, а ImageDevice - для определённой страницы.

Преобразование PDF с использованием класса DocumentDevice

Aspose.PDF для Python позволяет преобразовывать страницы PDF в изображения TIFF.

Класс TiffDevice (основанный на DocumentDevice) позволяет преобразовывать страницы PDF в изображения TIFF. Этот класс предоставляет метод с именем process, который позволяет преобразовать все страницы в PDF-файле в одно изображение TIFF.

Преобразование страниц PDF в одно изображение TIFF

Aspose.PDF для Python объясняет, как преобразовать все страницы в PDF-файле в одно изображение TIFF:

Шаги: Преобразование PDF в TIFF на Python

  1. Создайте объект класса Document.

  2. Создайте объекты TiffSettings и TiffDevice.

  3. Вызовите метод process, чтобы преобразовать PDF-документ в TIFF.

  4. Чтобы задать свойства выходного файла, используйте класс TiffSettings.

Следующий фрагмент кода показывает, как преобразовать все страницы PDF в одно изображение TIFF.


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_tiff.tiff"
    # Открыть PDF-документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)

    # Создать объект TiffSettings
    tiffSettings = ap.devices.TiffSettings()
    tiffSettings.compression = ap.devices.CompressionType.LZW
    tiffSettings.depth = ap.devices.ColorDepth.DEFAULT
    tiffSettings.skip_blank_pages = False

    # Создать устройство TIFF
    tiffDevice = ap.devices.TiffDevice(resolution, tiffSettings)

    # Преобразовать конкретную страницу и сохранить изображение в поток
    tiffDevice.process(document, output_pdf)

Преобразование PDF с использованием класса ImageDevice

ImageDevice является предком для BmpDevice, JpegDevice, GifDevice, PngDevice и EmfDevice.

  • Класс BmpDevice позволяет преобразовывать страницы PDF в изображения BMP.

  • Класс EmfDevice позволяет преобразовывать страницы PDF в изображения EMF.

  • Класс JpegDevice позволяет преобразовывать страницы PDF в изображения JPEG.

  • Класс PngDevice позволяет преобразовывать страницы PDF в изображения PNG.

  • Класс GifDevice позволяет преобразовывать страницы PDF в изображения GIF.

Давайте рассмотрим, как преобразовать страницу PDF в изображение.

Класс BmpDevice предоставляет метод под названием process, который позволяет преобразовать определенную страницу PDF файла в формат изображения BMP. Другие классы имеют тот же метод. Таким образом, если нам нужно преобразовать страницу PDF в изображение, мы просто создаем экземпляр необходимого класса.

Следующие шаги и фрагмент кода на Python демонстрируют эту возможность

Шаги: PDF в изображение (BMP, EMF, JPG, PNG, GIF) на Python

  1. Загрузите PDF-файл, используя класс Document.
  2. Создайте экземпляр подкласса ImageDevice, например:
    • BmpDevice (для конвертации PDF в BMP)
    • EmfDevice (для конвертации PDF в Emf)
    • JpegDevice (для конвертации PDF в JPG)
    • PngDevice (для конвертации PDF в PNG)
    • GifDevice (для конвертации PDF в GIF)
  3. Вызовите метод ImageDevice.Process() для выполнения конвертации PDF в изображение.

Конвертировать PDF в BMP


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_bmp"
    # Открыть PDF-документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)
    device = ap.devices.BmpDevice(resolution)

    for i in range(0, len(document.pages)):
        # Создать файл для сохранения
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.bmp", 'x'
        )
        # Конвертировать конкретную страницу и сохранить изображение в поток
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

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


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_emf"
    # Открыть PDF документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)
    device = ap.devices.EmfDevice(resolution)

    for i in range(0, len(document.pages)):
        # Создать файл для сохранения
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.emf", 'x'
        )
        # Конвертировать определенную страницу и сохранить изображение в поток
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

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


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_jpeg"
    # Открыть PDF документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)
    device = ap.devices.JpegDevice(resolution)

    for i in range(0, len(document.pages)):
        # Создать файл для сохранения
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.jpeg", "x"
        )
        # Конвертировать определенную страницу и сохранить изображение в поток
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()  

Преобразование PDF в PNG


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_png"
    # Открыть PDF документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)
    device = ap.devices.PngDevice(resolution)

    for i in range(0, len(document.pages)):
        # Создать файл для сохранения
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.png", 'x'
        )
        # Конвертировать определенную страницу и сохранить изображение в поток
        device.process(document.pages[i + 1], imageStream)
        imageStream.close()

Преобразование PDF в GIF


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "many_pages.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_gif"
    # Открыть PDF документ
    document = ap.Document(input_pdf)

    # Создать объект разрешения
    resolution = ap.devices.Resolution(300)

    device = ap.devices.GifDevice(resolution)

    for i in range(0, len(document.pages)):
        # Создать файл для сохранения
        imageStream = io.FileIO(
            output_pdf + "_page_" + str(i + 1) + "_out.gif", 'x'
        )
        # Конвертировать определенную страницу и сохранить изображение в поток
        device.process(document.pages[i + 1], imageStream)
        # Закрыть поток
        imageStream.close()

Преобразование PDF с использованием класса SaveOptions

Эта часть статьи показывает, как преобразовать PDF в SVG с использованием Python и класса SaveOptions.

Scalable Vector Graphics (SVG) - это семейство спецификаций формата файлов на основе XML для двумерной векторной графики, как статической, так и динамической (интерактивной или анимированной). Спецификация SVG является открытым стандартом, который разрабатывается Консорциумом Всемирной паутины (W3C) с 1999 года.

SVG-изображения и их поведение определяются в текстовых файлах XML. Это означает, что они могут быть найдены, индексированы, скриптованы и, если необходимо, сжаты. Как XML-файлы, SVG-изображения могут быть созданы и отредактированы с помощью любого текстового редактора, но чаще всего их удобнее создавать с помощью программ для рисования, таких как Inkscape.

Aspose.PDF for Python поддерживает функцию конвертации изображений SVG в формат PDF, а также предлагает возможность конвертации PDF-файлов в формат SVG. Чтобы выполнить это требование, в пространство имен Aspose.PDF был введен класс SvgSaveOptions. Создайте объект SvgSaveOptions и передайте его как второй аргумент в метод Document.Save().

Следующий фрагмент кода показывает шаги по преобразованию PDF-файла в формат SVG с помощью Python.

Шаги: Преобразование PDF в SVG на Python

  1. Создайте объект класса Document.
  2. Создайте объект SvgSaveOptions с необходимыми настройками.
  3. Вызовите метод Document.Save() и передайте объект SvgSaveOptions, чтобы конвертировать PDF-документ в SVG.

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


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "sample.pdf"
    output_pdf = DIR_OUTPUT + "convert_pdf_to_svg.svg"
    # Открыть PDF-документ
    document = ap.Document(input_pdf)

    # Создать экземпляр объекта SvgSaveOptions
    saveOptions = ap.SvgSaveOptions()

    # Не сжимать изображение SVG в Zip-архив
    saveOptions.compress_output_to_zip_archive = False
    saveOptions.treat_target_file_name_as_directory = True

    # Сохранить вывод в файлы SVG
    document.save(output_pdf, saveOptions)