Skip to content

渲染内容

HTML、Markdown 与文本

from entari_plugin_htmlrender import HtmlRenderer, RasterOptions

async def render_all(renderer: HtmlRenderer):
    raster = RasterOptions(width=720)
    html_image = await renderer.rasterize_html(
        "<main>Hello</main>",
        raster=raster,
    )
    markdown_image = await renderer.rasterize_markdown(
        "# Hello",
        raster=raster,
    )
    text_image = await renderer.rasterize_text("Hello", raster=raster)
    return html_image, markdown_image, text_image

方法返回 RenderedImage。交给消息、HTTP 或文件 API 时调用 bytes(image)formatmedia_typewidthheight 描述真实编码结果。

Markdown 保留原始 HTML,不负责净化不可信内容。用户或模型输入应先按业务策略处理标签、属性和 URL;不需要富文本时使用 rasterize_text()

Jinja 模板

from pathlib import Path

from entari_plugin_htmlrender import HtmlRenderer, RasterOptions, TemplateRef

async def render_profile(renderer: HtmlRenderer, username: str):
    return await renderer.rasterize_template(
        TemplateRef(Path("templates"), "profile.html"),
        {"username": username},
        raster=RasterOptions(width=440, height=None),
    )

模板目录须列入 resources.local_access.allowed_paths;相对 stylesheet 与图片由preparation/resource pipeline 处理。

导航/selector 使用 Playwright capability,Takumi SVG/字体使用 TakumiCapability,无 HTML 的像素绘制使用 RasterScene。仓库示例只返回 artifact/bytes,不绑定消息 adapter。