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

Обзор

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

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

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

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

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

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

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

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

Python Конвертация PDF в Изображение

Aspose.PDF для Python использует несколько подходов для конвертации PDF в изображение. В общем, мы используем два подхода: преобразование с использованием устройства и преобразование с использованием 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. Вызовите метод TiffDevice.Process() для преобразования PDF документа в TIFF.

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

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

from asposepdf import Api, Device

# инициализация лицензии
documentName = "testdata/license/Aspose.PDF.PythonviaJava.lic"
licenseObject = Api.License()
licenseObject.setLicense(documentName)

# Открыть PDF документ
DIR_INPUT = "testdata/"
DIR_OUTPUT = "testout/"
input_pdf = DIR_INPUT + "source.pdf"
output_image = DIR_OUTPUT + "image.tiff"
# Открыть PDF документ
document = Api.Document(input_pdf)
# Создать объект разрешения
resolution = Device.Resolution(300)

# Создать объект TiffSettings
tiffSettings = Device.TiffSettings()
tiffSettings._CompressionType = Device.CompressionType.LZW
tiffSettings._ColorDepth = Device.ColorDepth.Default
tiffSettings._Skip_blank_pages = False

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

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

Преобразование 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

from asposepdf import Api, Device

DIR_INPUT = "testdata/"
DIR_OUTPUT = "testout/"

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

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

for i in range(0, document.getPages.size):
    # Создать имя файла для сохранения
    imageFileName = output_pdf + "_page_" + str(i + 1) + "_out.bmp"
    # Преобразовать определенную страницу и сохранить изображение в файл
    device.process(document.getPages.getPage(i + 1), outputFileName=imageFileName)

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


from asposepdf import Api, Device

DIR_INPUT = "../../testdata/"
DIR_OUTPUT = "../../testout/"

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

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

for i in range(0, document.getPages.size):
    # Создать имя файла для сохранения
    imageFileName = output_pdf + "_page_" + str(i + 1) + "_out.emf"
    # Конвертировать конкретную страницу и сохранить изображение в файл
    device.process(document.getPages.getPage(i + 1), outputFileName=imageFileName)

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


from asposepdf import Api, Device

DIR_INPUT = "../../testdata/"
DIR_OUTPUT = "../../testout/"

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

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

for i in range(0, document.getPages.size):
    # Создать имя файла для сохранения
    imageFileName = output_pdf + "_page_" + str(i + 1) + "_out.jpeg"
    # Конвертировать конкретную страницу и сохранить изображение в файл
    device.process(document.getPages.getPage(i + 1), outputFileName=imageFileName)

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


from asposepdf import Api, Device

DIR_INPUT = "../../testdata/"
DIR_OUTPUT = "../../testout/"

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

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

for i in range(0, document.getPages.size):
    # Создать имя файла для сохранения
    imageFileName = output_pdf + "_page_" + str(i + 1) + "_out.png"
    # Конвертировать определенную страницу и сохранить изображение в файл
    device.process(document.getPages.getPage(i + 1), outputFileName=imageFileName)

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


from asposepdf import Api, Device

DIR_INPUT = "../../testdata/"
DIR_OUTPUT = "../../testout/"

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

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

for i in range(0, document.getPages.size):
    # Создать имя файла для сохранения
    imageFileName = output_pdf + "_page_" + str(i + 1) + "_out.gif"
    # Конвертировать определенную страницу и сохранить изображение в файл
    device.process(document.getPages.getPage(i + 1), outputFileName=imageFileName)

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

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

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

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

Aspose.PDF для 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


from asposepdf import Api

documentName = "testdata/input.pdf"
doc = Api.Document(documentName, None)
documentOutName = "testout/out.svg"
doc.save(documentOutName, Api.SaveFormat.Svg)