在 Python 中向现有 PDF 添加图像

在 Python 中向现有 PDF 文件添加图像

本示例展示了如何使用 Aspose.PDF for Python via .NET 在现有 PDF 页面上以固定位置放置图像。

当您需要向现有 PDF 布局中添加徽标、照片、印章、图表或其他图形时,请使用这些示例。您可以使用页面坐标放置图像、通过操作符绘制图像、添加可访问性文本或控制图像压缩。

  1. 加载现有的 PDF ap.Document(infile).
  2. 选择目标页面(document.pages[1] 针对第一页)。
  3. 调用 page.add_image() 使用:
    • 图像文件路径。
    • A 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 添加图像

此方法使用低级 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)

向 PDF 添加带替代文本的图像

此示例添加图像并为可访问性分配替代文本。

  1. 创建一个新 Document 并添加一个页面。
  2. 将图像添加到页面 page.add_image().
  3. 获取图像资源 page.resources.images.
  4. 使用设置 alt 文本 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)

相关图像主题