简介
除了高级的 PsDocument 和 XpsDocument 类之外,针对 Python 的 Aspose.Page FOSS 还提供了一套用于构建渲染文档、生成 PDF 输出以及以编程方式处理 XPS 包的底层实用工具。这些实用工具由高级类内部使用,也可以在需要对输出进行精确控制时直接使用。
本文涵盖 RenderModelBuilder、PdfWriter、PdfMetadata、RasterRenderer 和 XpsDocumentBuilder — 在 PS、EPS 和 XPS 流水线中共享的通用组件。
构建渲染文档
RenderModelBuilder 通过调用页面生命周期方法逐步构建一个 RenderDocument。使用 begin_page() 开始一个页面,添加绘图指令,然后调用 end_page()。调用 document() 以获取完成的 RenderDocument。
from aspose.page.render.model import RenderModelBuilder
builder = RenderModelBuilder()
builder.begin_page(595, 842)
# add paths, text, images here
builder.end_page()
doc = builder.document()
可用的绘图方法包括 add_path()、add_text()、add_image()、clip()、save_state() 和 restore_state()。在 begin_page() 之前调用 set_default_page_size(),以设定适用于所有后续页面的默认尺寸。
将渲染文档写入 PDF
PdfWriter 接受一个 PdfMetadata 实例,并将 RenderDocument 序列化为 PDF 1.4 字节。传入一个包含 title、creator、producer、creation_date、mod_date 和 trapped 字段的 PdfMetadata 对象,然后调用 write(doc) 生成输出。
from aspose.page.render.model import RenderModelBuilder
from aspose.page.pdf.writer import PdfWriter
from aspose.page.pdf.metadata import PdfMetadata
from pathlib import Path
builder = RenderModelBuilder()
builder.begin_page(595, 842)
builder.end_page()
doc = builder.document()
metadata = PdfMetadata(
title="My Document",
creator="My App",
producer="Aspose.Page FOSS for Python",
creation_date="D:20260609000000",
mod_date="D:20260609000000",
trapped=False,
)
writer = PdfWriter(metadata)
pdf_bytes = writer.write(doc)
Path("output.pdf").write_bytes(pdf_bytes)
光栅渲染
RasterRenderer 将 RenderDocument 渲染为 RasterSurface — 一个内存中的 RGBA 像素缓冲区。RasterSurface 提供 get_pixel() 和 set_pixel() 以直接像素访问,并附带 width 和 height 属性。这是 to_image() 在 PsDocument 和 XpsDocument 上生成 PNG 或 JPEG 输出时使用的底层机制。
from aspose.page.render.model import RenderModelBuilder
from aspose.page.image.raster_renderer import RasterRenderer
builder = RenderModelBuilder()
builder.begin_page(400, 300)
builder.end_page()
doc = builder.document()
renderer = RasterRenderer()
surface = renderer.render(doc, page_index=0)
print(f"Surface size: {surface.width}x{surface.height}")
以编程方式构建 XPS 文档
XpsDocumentBuilder 提供了一个高级 API 用于构建带有自定义页面和元数据的 XPS 包。使用 create_page() 添加页面,然后调用 to_document() 获取一个可以进一步导出为 PDF 或光栅图像的 XpsDocument。
from aspose.page.xps.document import XpsDocument
xps = XpsDocument.create("My XPS Document")
page = xps.add_page(595, 842)