Wprowadzenie

Oprócz wysokopoziomowych klas PsDocument i XpsDocument, Aspose.Page FOSS dla Python udostępnia zestaw niższego poziomu narzędzi do budowania dokumentów renderujących, zapisywania wyjścia PDF oraz programowego pracy z pakietami XPS. Narzędzia te są używane wewnętrznie przez klasy wysokiego poziomu i mogą być także używane bezpośrednio, gdy potrzebna jest precyzyjna kontrola nad wyjściem.

Ten artykuł omawia RenderModelBuilder, PdfWriter, PdfMetadata, RasterRenderer i XpsDocumentBuilder — wspólne komponenty używane w potokach PS, EPS i XPS.


Tworzenie dokumentu renderującego

RenderModelBuilder konstruuje RenderDocument stopniowo, wywołując metody cyklu życia strony. Rozpocznij stronę za pomocą begin_page(), dodaj polecenia rysowania, a następnie wywołaj end_page(). Wywołaj document(), aby pobrać ukończony 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()

Dostępne metody rysowania obejmują add_path(), add_text(), add_image(), clip(), save_state() i restore_state(). Wywołaj set_default_page_size() przed begin_page(), aby ustawić domyślny rozmiar obowiązujący wszystkie kolejne strony.


Zapisywanie dokumentu renderującego do PDF

PdfWriter akceptuje instancję PdfMetadata i serializuje RenderDocument do bajtów PDF 1.4. Przekaż obiekt PdfMetadata z polami title, creator, producer, creation_date, mod_date i trapped, a następnie wywołaj write(doc), aby wygenerować wynik.

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)

Renderowanie rastrowe

RasterRenderer renderuje RenderDocument do RasterSurface — bufora pikseli RGBA w pamięci. RasterSurface zapewnia get_pixel() i set_pixel() do bezpośredniego dostępu do pikseli, wraz z właściwościami width i height. To jest podstawowy mechanizm używany przez to_image() zarówno w PsDocument, jak i w XpsDocument przy generowaniu wyjścia PNG lub 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}")

Programowe tworzenie dokumentów XPS

XpsDocumentBuilder zapewnia wysokopoziomowy API do konstruowania pakietów XPS z własnymi stronami i metadanymi. Użyj create_page(), aby dodać strony, a następnie wywołaj to_document(), aby uzyskać XpsDocument, który może być dalej eksportowany do PDF lub obrazów rastrowych.

from aspose.page.xps.document import XpsDocument

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

Rozpoczęcie

Powiązane zasoby