مقدمه

علاوه بر کلاس‌های سطح بالای PsDocument و XpsDocument، Aspose.Page FOSS برای Python مجموعه‌ای از ابزارهای سطح پایین را برای ساخت اسناد رندر، نوشتن خروجی PDF و کار برنامه‌نویسی با بسته‌های XPS ارائه می‌دهد. این ابزارها به‌صورت داخلی توسط کلاس‌های سطح بالا استفاده می‌شوند و در صورت نیاز به کنترل دقیق خروجی می‌توانند به‌صورت مستقیم نیز به کار گرفته شوند.

این مقاله به RenderModelBuilder، PdfWriter، PdfMetadata، RasterRenderer و XpsDocumentBuilder می‌پردازد — مؤلفه‌های مشترک استفاده‌شده در خطوط پردازش PS، EPS و XPS.


ساختن یک سند رندر

RenderModelBuilder به‌صورت تدریجی یک RenderDocument را با فراخوانی روش‌های چرخه‌زندگی صفحه می‌سازد. یک صفحه را با begin_page() آغاز کنید، دستورات رسم را اضافه کنید، سپس end_page() را فراخوانی کنید. برای دریافت RenderDocument تکمیل‌شده، document() را صدا بزنید.

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 را به بایت‌های PDF1.4 سریال‌سازی می‌کند. یک شیء PdfMetadata با فیلدهای title، creator، producer، creation_date، mod_date و trapped پاس دهید، سپس برای تولید خروجی 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() را فراخوانی کنید تا یک XpsDocument دریافت کنید که می‌تواند به‌طور بیشتر به PDF یا تصاویر رستر صادر شود.

from aspose.page.xps.document import XpsDocument

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

شروع کار

منابع مرتبط