Добавить изображение в PDF с помощью Python

Добавление изображения в существующий PDF‑файл

Этот пример показывает, как разместить изображение в фиксированной позиции на существующей странице PDF с использованием Aspose.PDF for Python via .NET.

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

  1. Загрузите существующий PDF с ap.Document(infile).
  2. Выберите целевую страницу (document.pages[1] для первой страницы).
  3. Вызов page.add_image() с:
    • Путь к файлу изображения.
    • А Rectangle определение координат размещения.
  4. Сохраните обновлённый PDF.
import aspose.pdf as ap


def add_image(infile, image_file, outfile):
    document = ap.Document(infile)
    page = document.pages[1]
    page.add_image(image_file, ap.Rectangle(20, 730, 120, 830, True))
    document.save(outfile)

Добавление изображения с помощью операторов

Этот подход добавляет изображение с помощью низкоуровневых операторов PDF вместо высокоуровневых add_image() помощник.

  1. Создайте новый Document и добавьте страницу.
  2. Добавьте изображение в ресурсы страницы (page.resources.images).
  3. Создайте операторы преобразования (GSave, ConcatenateMatrix, Do, GRestore).
  4. Добавьте операторы в содержимое страницы.
  5. Сохраните полученный PDF.
import aspose.pdf as ap
from io import FileIO


def add_image_using_operators(image_file, outfile):
    document = ap.Document()
    page = document.pages.add()
    page.set_page_size(842, 595)
    resources_images = page.resources.images

    with FileIO(image_file, "rb") as image_stream:
        image_id = resources_images.add(image_stream)

    rectangle = ap.Rectangle(0, 0, page.media_box.width, page.media_box.height, True)

    operators = [
        ap.operators.GSave(),
        ap.operators.ConcatenateMatrix(
            ap.Matrix(
                rectangle.urx - rectangle.llx,
                0,
                0,
                rectangle.ury - rectangle.lly,
                rectangle.llx,
                rectangle.lly,
            )
        ),
        ap.operators.Do(image_id),
        ap.operators.GRestore(),
    ]

    page.contents.add(operators)
    document.save(outfile)

Добавление изображения с альтернативным текстом

В этом примере добавляется изображение и назначается альтернативный текст для доступности.

  1. Создайте новый Document и добавьте страницу.
  2. Добавьте изображение на страницу с page.add_image().
  3. Получите ресурсы изображений из page.resources.images.
  4. Установите альтернативный текст с помощью try_set_alternative_text().
  5. Сохраните полученный PDF.
import aspose.pdf as ap


def add_image_set_alternative_text(image_file, outfile):
    document = ap.Document()
    page = document.pages.add()
    page.set_page_size(842, 595)

    page.add_image(image_file, ap.Rectangle(0, 0, 842, 595, True))
    resources_images = page.resources.images
    x_image = resources_images[1]
    result = x_image.try_set_alternative_text("Alternative text for image", page)

    if result:
        print("Alternative text has been added successfully")

    document.save(outfile)

Добавление изображения в PDF с использованием сжатия Flate

Этот пример вставляет изображение с помощью ImageFilterType.FLATE сжатие.

  1. Создайте новый Document и добавьте страницу.
  2. Добавьте изображение в ресурсы страницы с сжатием Flate.
  3. Используйте матричные операторы для размещения и отрисовки изображения.
  4. Сохраните документ.
import aspose.pdf as ap
from io import FileIO


def add_image_to_pdf_with_flate_compression(image_file, outfile):
    document = ap.Document()
    page = document.pages.add()
    resources_images = page.resources.images

    with FileIO(image_file, "rb") as image_stream:
        image_id = resources_images.add(image_stream, ap.ImageFilterType.FLATE)

    rectangle = ap.Rectangle(0, 0, 600, 600, True)
    matrix = ap.Matrix(
        rectangle.urx - rectangle.llx,
        0,
        0,
        rectangle.ury - rectangle.lly,
        rectangle.llx,
        rectangle.lly,
    )

    page.contents.add([ap.operators.GSave()])
    page.contents.add([ap.operators.ConcatenateMatrix(matrix)])
    page.contents.add([ap.operators.Do(image_id)])
    page.contents.add([ap.operators.GRestore()])

    document.save(outfile)

Связанные темы по изображениям