Introduzione

Oltre alle classi di alto livello PsDocument e XpsDocument, Aspose.Page FOSS per Python espone un insieme di utility di livello inferiore per costruire documenti di rendering, generare output PDF e lavorare con pacchetti XPS in modo programmatico. Queste utility vengono utilizzate internamente dalle classi di alto livello e possono anche essere usate direttamente quando è necessario un controllo preciso sull’output.

Questo articolo copre RenderModelBuilder, PdfWriter, PdfMetadata, RasterRenderer e XpsDocumentBuilder — i componenti comuni condivisi tra le pipeline PS, EPS e XPS.


Creazione di un documento di rendering

RenderModelBuilder costruisce un RenderDocument in modo incrementale chiamando i metodi del ciclo di vita della pagina. Inizia una pagina con begin_page(), aggiungi comandi di disegno, poi chiama end_page(). Chiama document() per recuperare il RenderDocument completato.

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()

I metodi di disegno disponibili includono add_path(), add_text(), add_image(), clip(), save_state() e restore_state(). Chiama set_default_page_size() prima di begin_page() per stabilire una dimensione predefinita che si applica a tutte le pagine successive.


Scrittura di un documento di rendering in PDF

PdfWriter accetta un’istanza di PdfMetadata e serializza un RenderDocument in byte PDF 1.4. Passa un oggetto PdfMetadata con i campi title, creator, producer, creation_date, mod_date e trapped, quindi chiama write(doc) per produrre l’output.

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)

Rendering raster

RasterRenderer rende un RenderDocument in un RasterSurface — un buffer di pixel RGBA in memoria. Il RasterSurface fornisce get_pixel() e set_pixel() per l’accesso diretto ai pixel, insieme alle proprietà width e height. Questo è il meccanismo sottostante usato da to_image() sia su PsDocument sia su XpsDocument quando si produce output PNG o 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}")

Creazione di documenti XPS programmaticamente

XpsDocumentBuilder fornisce un API di alto livello per la costruzione di pacchetti XPS con pagine e metadati personalizzati. Usa create_page() per aggiungere pagine, quindi chiama to_document() per ottenere un XpsDocument che può essere ulteriormente esportato in PDF o immagini raster.

from aspose.page.xps.document import XpsDocument

xps = XpsDocument.create("My XPS Document")
page = xps.add_page(595, 842)

Per iniziare

Risorse correlate