在 Python 中向现有 PDF 添加图像
Contents
[
Hide
]
在 Python 中向现有 PDF 文件添加图像
本示例展示了如何使用 Aspose.PDF for Python via .NET 在现有 PDF 页面上以固定位置放置图像。
当您需要向现有 PDF 布局中添加徽标、照片、印章、图表或其他图形时,请使用这些示例。您可以使用页面坐标放置图像、通过操作符绘制图像、添加可访问性文本或控制图像压缩。
- 加载现有的 PDF
ap.Document(infile). - 选择目标页面(
document.pages[1]针对第一页)。 - 调用
page.add_image()使用:- 图像文件路径。
- A
Rectangle定义放置坐标。
- 保存更新后的 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() 助手。
- 创建一个新
Document并添加一个页面。 - 将图像添加到页面资源(
page.resources.images). - 创建转换运算符 (
GSave,ConcatenateMatrix,Do,GRestore). - 向页面内容添加运算符。
- 保存生成的 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 添加带替代文本的图像
此示例添加图像并为可访问性分配替代文本。
- 创建一个新
Document并添加一个页面。 - 将图像添加到页面
page.add_image(). - 获取图像资源
page.resources.images. - 使用设置 alt 文本
try_set_alternative_text(). - 保存生成的 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 压缩。
- 创建一个新
Document并添加一个页面。 - 将图像以 Flate 压缩方式添加到页面资源中。
- 使用矩阵运算符来放置和绘制图像。
- 保存文档。
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)