Common Rendering Utilities

Common Rendering Utilities

Common Rendering Utilities

Aspose.Page FOSS for Python exposes a set of lower-level rendering utilities used internally by PsDocument and XpsDocument. These components can also be used directly when precise control over the output is needed.


RenderModelBuilder

RenderModelBuilder constructs a RenderDocument incrementally. Call begin_page() to start a page, add drawing commands, then call end_page(). Call document() to retrieve the completed RenderDocument.

from aspose.page.render.model import RenderModelBuilder

builder = RenderModelBuilder()
builder.begin_page(595, 842)
builder.end_page()
doc = builder.document()

Available drawing methods: add_path(), add_text(), add_image(), clip(), save_state(), and restore_state().


PdfWriter

PdfWriter serializes a RenderDocument to PDF 1.4 bytes. It requires a PdfMetadata instance. See PDF Output for details.


RasterRenderer

RasterRenderer renders a RenderDocument to a RasterSurface — an in-memory RGBA pixel buffer. The RasterSurface provides get_pixel(), set_pixel(), width, and height.

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"Pixels: {surface.width}x{surface.height}")

Tips and Best Practices

  • Use RenderModelBuilder when you need to build a document from drawing primitives.
  • Use PdfWriter with a RenderDocument for custom PDF generation without a source file.
  • RasterSurface pixel access is available via get_pixel() and set_pixel().

API Reference Summary

Class / MethodDescription
RenderModelBuilder.begin_page(width, height)Start a new page
RenderModelBuilder.end_page()Finalize the current page
RenderModelBuilder.document()Retrieve the completed RenderDocument
PdfWriter.write(document)Serialize RenderDocument to PDF bytes
RasterRenderer.render(document, page_index)Render a page to RasterSurface
RasterSurface.widthSurface width in pixels
RasterSurface.heightSurface height in pixels

See Also