
pdfcn渲染层设计细节揭秘PDF点与CSS像素的96/72转换及Primitives设计刻度体系【免费下载链接】pdfcnBeautiful pdf components, built on Takumi and Forme. 100% Free, Zero config, one command setup.项目地址: https://gitcode.com/gh_mirrors/pd/pdfcnpdfcn 是一个 100% 免费、零配置的 PDF 组件库构建于 Takumi 与 Forme 双渲染引擎之上。这篇文章带你拆解 pdfcn 渲染层最核心的两个设计细节PDF 点pt与 CSS 像素px之间的 96/72 换算机制以及 Primitives 设计刻度体系如何让所有组件的尺寸、字号、间距永远整齐。即使你刚接触 PDF 开发也能看懂这套优雅的分层设计。为什么 PDF 开发绕不开点这个单位如果你写过 CSS大概率只关心像素px但 PDF 是一门更老、更物理的格式概念定义常见场景PDF 点pt1 英寸的 1/72PDF 规范、react-pdf 等渲染器CSS 像素px1 英寸的 1/9696 DPI 基准浏览器渲染两个单位的物理定义不同于是有了那个关键的换算系数1 pt 96 / 72 px 4/3 px ≈ 1.333 px举个例子A4 纸的宽度是595 pt。如果渲染到浏览器预览区就要按 595 × 4/3 ≈ 793 px 来摆放才能保证屏幕预览和打印出来的 PDF 尺寸一致。pdfcn 正是围绕这一条换算规则设计了整个渲染层的边界。96/72 转换在primitive 边界一次性完成pdfcn 的 Takumi 引擎底层是浏览器 CSS数字长度默认按 96 DPI 的像素解释而组件对外 API 却沿用 PDF 的点。这个矛盾在哪里解决答案在 primitive 层——所有组件都建立在View、Text、Image、Link等最小单元之上转换只在这条边界发生一次核心常量pdf-primitives.tsx 中定义了PDF_POINT_TO_CSS_PIXEL 96 / 72与pointToCssPixel()函数白名单机制POINT_LENGTH_PROPERTIES 精确列出了width、margin、padding、fontSize等会接收点值的属性只有这些属性上的纯数字才会被乘以 4/3样式归一化normalizeTakumiStyle 顺带把marginHorizontal、paddingVertical等简写展开为四边属性并自动补齐borderStyle: solid 设计精妙之处因为转换发生在最底层上层几十个组件Table、Card、Invoice 等完全无感知——你写padding: 12就是 12 个点物理尺寸天然对齐打印结果。这个换算还被复用在预览系统里preview-config.tsx 用它把 595×842A4等页面尺寸换算成浏览器像素保证 playground 中所见即所得。Primitives 设计刻度体系一套尺寸调色板光有单位换算还不够pdfcn 用一组**原始刻度Primitive Tokens**约束所有可用数值主题只需从刻度中取色这是它和 shadcn/ui 一脉相承的哲学。默认刻度定义在 primitives.ts类型契约在 pdf-themes.ts。 排版刻度1.25 大三度比例字号采用 Major Third1.25比例以 12pt 为正文基准10 → 12 → 15 → 18 → 22 → 28 → 36xs / sm / base / lg / xl / 2xl / 3xl正好覆盖脚注到 H1 标题每级跳变幅度统一视觉节奏自然。 间距刻度4pt 网格所有间距都是 4pt 的整数倍2 / 4 / 8 / 12 / 16 / 20 / 24 / 32 / 40 / 48 / 64。页边距、章节间隔、表格行距都从这一把标尺上取值文档因此不会出现差 1 个点的错位感。 其他刻度字重400 / 500 / 600 / 700 四档行高1.2紧凑标题/ 1.4正文/ 1.6长文阅读圆角0 / 2 / 4 / 8pt 及full胶囊形字距-0.025 0.05标题收紧、大写拉开双引擎分层Forme 与 Takumi 如何共享同一套 APIpdfcn 同时提供 Formeformepdf/react 封装和 Takumi自研 primitive两套 baseForme 侧原生就是点单位只需做样式数组合并无需任何换算Takumi 侧在 primitive 边界补上 96/72 转换上层收益同一份组件 API、同一套主题刻度在两个引擎里渲染出的物理尺寸完全一致9 个内置主题预设professional、modern、minimal、corporate 等都从这套 primitives 中派生见 themes.ts主题文档可参考 apps/web/content/docs/theming/。新手如何理解这套设计的价值你只管写点ptfontSize: 12、margin: 24打印尺寸就是设计值预览不失真浏览器像素由 96/72 系数自动换算屏幕与纸张对齐组件永不长歪所有数值受刻度体系约束9 套主题随意切换布局依旧整齐这就是 pdfcn 渲染层的完整故事用一条 96/72 的边界换算解决屏幕-纸张单位鸿沟用一套 Primitives 刻度解决尺寸混乱——两条线交汇才有了零配置、一条命令上手的 PDF 组件体验。【免费下载链接】pdfcnBeautiful pdf components, built on Takumi and Forme. 100% Free, Zero config, one command setup.项目地址: https://gitcode.com/gh_mirrors/pd/pdfcn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考