A4 页面模拟 (794px × 1123px) 缩放比例 100%
DOMPDF.JS CAPABILITY REPORT

纯前端 DOM 转 PDF 能力演示文档

这个默认示例不再强调“花哨样式拼盘”,而是更贴近真实业务文档:同一份 DOM 同时覆盖中英混排、长文本、结构化表格、内联 SVG、代码块、数学公式、分页控制和跨页保护容器。这样既能更完整地展示 dompdf.js 的能力,也更容易和 html2pdf.js 拉开最终 PDF 体积差。

可复制文本 多页分页 内联 SVG CJK + Latin divisionDisable 数学符号
文档宽度
794px 按 A4 内容宽度组织,避免示例口径偏移
内容策略
重文本 / 轻位图 让矢量文本和位图页截图的差异更明显
能力覆盖
多模块混排 段落、表格、SVG、代码、公式、分页控制
观察重点
体积 / 版式 / 复制 不仅看速度,也看最终 PDF 品质
01
Typography

文本、字体与可复制性

这一节优先展示 dompdf.js 最值得看的能力:文字仍然是文字,而不是被摊平成整页位图。对业务文档来说,可检索、可复制、可缩放通常比“看起来差不多”更重要。

双语业务摘要

城市更新试点 2026 / Urban Renewal Pilot 目前进入交付前评审阶段。当前版本重点验证多语言段落在 A4 分页、字体嵌入、字宽计算与表格复制中的稳定性,确保导出后的 PDF 能够满足“归档、分发、审阅、检索”四类业务场景。

For the export engine, a realistic stress sample matters more than decorative gradients. The document should contain long paragraphs, dense tables, repeated labels, page boundaries, and inline vector figures so the resulting PDF exposes actual trade-offs in text fidelity, object count, and payload size.

这里故意放较长、较密的正文文本,让 html2pdf.js 的逐页位图输出更容易在体积上放大,而 dompdf.js 仍然保持以文本和矢量对象为主的输出结构。
02
Graphics

矢量图形与位图样本

默认示例保留一张小位图,只用于验证图片压缩与嵌入;真正的主角切换成内联 SVG 图表和流程示意,更接近 dompdf.js 的优势场景。

内联 SVG 指标图

Jan Feb Mar Apr May Jun Snapshot Throughput vs. PDF Payload

这类内联矢量图在 dompdf.js 中可以保持清晰边缘与可缩放性,而 html2pdf.js 更倾向于把整页转换成截图。

small raster sample for export validation

小位图保留样本

这里仍保留一张通过 Canvas 生成的 JPEG,用来验证图片压缩、尺寸保持与嵌入链路是否稳定,但它不再主导整个演示页面。

JPEG Raster Compression
现在的默认示例会尽量避免“大面积图片充斥整页”,这样更符合技术文档场景,也更容易看出 dompdf.js 在文本型 PDF 上的优势。
03
Layout

布局、裁切、透明度与流程图

这一节主要看复杂盒模型在 PDF 中是否稳定,包括透明叠层、裁切区域、边框圆角、内联代码以及矢量流程框图。

渲染流程示意

DOM Snapshot text runs / rects / images Worker structured payload transfer Rust + WASM pagination and PDF emission Blob application/pdf

裁切样本

这个容器启用了 overflow: hidden

Overflow content should stay clipped inside the rounded box.

透明度样本

Base Layer
Opacity 0.72
Opacity 0.48
04
Structured Data

结构化表格与文本检索

下面的明细表会动态生成较多行,用来同时验证列宽、换行、字体嵌入、复制顺序和多页表格的稳定性。这类内容对 dompdf.js 更友好,也更接近真实报告、清单和审计文档。

能力验证矩阵

覆盖段落、编号、日期、金额、状态标签与中英混排字段。

Live generated
Region / Division H1 Performance H2 Forecast SLA Status
Revenue Margin Revenue Margin
如果这一整页在导出后仍然可以按正常顺序选中、复制并搜索字段名、编号和日期,那么说明文本对象、字形映射与表格结构都处于比较可用的状态。
05
Reference Blocks

定义列表、代码块与数学符号

这部分主要观察预格式文本、符号字体和公式布局。样式会保持克制,避免视觉噪音影响阅读和对比。

Definition List

Snapshot
Collect geometry, text runs, style tokens, and image payloads on the main thread.
Pagination
Assign lines and blocks to pages while respecting pageBreak and divisionDisable.
Emission
Write native PDF objects, text operators, fonts, and xobjects without third-party PDF libraries.

Preformatted Flow

render(root)
  -> collectSnapshotData(root)
  -> normalizeTextRuns(snapshot)
  -> worker.postMessage(snapshot)
  -> wasm.render_pdf(snapshot)
  -> Blob(application/pdf)

数学和符号样本

欧拉恒等式:

e + 1 = 0

高斯积分:

-∞+∞ e-x² dx = √π

贝叶斯定理:

P(A | B) = P(B | A) · P(A) / P(B)

分段函数:

f(x) = 2x + 13 - x   if  x < 00 ≤ x < 1x ≥ 1

06
Pagination

分页压力测试与附录

这部分故意堆叠较长的正文和多条记录,让输出自然跨页。对于 html2pdf.js 来说,每一页更像一张大截图;对于 dompdf.js 来说,文本密度增加并不会线性放大到同样程度。

下列条目采用重复但不完全相同的业务文本,用来验证长列表分页、连续复制以及页边界附近的段落切分。

    强制分页样本

    Phase 1 · Snapshot Contract

    冻结 DOM Snapshot 字段,确保文本、图片、布局与分页控制信号都能稳定进入 Worker。

    Phase 2 · Typography Validation

    重点回归中文字体、数字、英文单词、代码片段、数学符号与复制顺序。

    Phase 3 · Document Scale

    用真实长度的文档内容拉开最终 PDF 体积差,并确认分页切点不漂移。

    divisionDisable 样本

    这个模块带有 divisionDisable 属性。跨页时它应该整体移动到下一页,而不是被从中间切断。真实业务里,签字区、报价摘要、审批意见、票据封面等模块通常都需要这种保护。

    如果这个卡片在页边界处被截开,说明复杂容器在分页合并和块级迁移上的策略还需要继续修正。

    Markdown 输入区
    0 行 0 词 0 字符
    排版预览 (A4)
    Paper Light 约 1.0 页

    在左侧输入 Markdown,右侧将自动渲染为 A4 排版