Skip to content
Hufe921Public

About

Generate OFD documents in JavaScript/TypeScript

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

jsOFD

用 JavaScript / TypeScript 生成 OFD 版式文档(GB/T 33190-2016)— API 对齐 jsPDF

CI License: MIT TypeScript Tests

零依赖核心 · 浏览器与 Node 同构 · 含 PDF → OFD 转换

English | 中文


快速开始

import { jsOFD } from '@hufe921/jsofd';

const doc = new jsOFD({ unit: 'mm', format: 'a4' });
doc.setFont('simsun');
doc.text('你好,OFD', 105, 30, { align: 'center' });
doc.save('hello.ofd');

安装

pnpm add @hufe921/jsofd                 # 核心库
pnpm add @hufe921/jsofd pdfjs-dist      # + PDF → OFD 转换

核心能力

类别 说明
文本 字体/字号/颜色、对齐(含两端)、自动断行(中英混排)、基线、旋转、字距
中文字体 内置宋/黑/楷/仿宋 + TTF 嵌入(任何阅读器渲染一致)
图形 直线、贝塞尔、矩形、圆角矩形、圆、椭圆、三角形、虚线、透明度
图像 PNG/JPEG/GIF/BMP/TIFF 原样嵌入、旋转、去重
交互 超链接、层级书签、附件
PDF 转换 逐条重放绘制指令流,保留真实排版数据
输出 全同步:arraybuffer · blob · dataurlstring 等

嵌入字体(中文推荐)

const ttf = new Uint8Array(await (await fetch('/fonts/MyFont.ttf')).arrayBuffer());
doc.addFontTtf('simsun', 'My Font', ttf);
doc.setFont('simsun');

必须使用 TrueType(.ttf) 格式。推荐 Noto Sans SC。

PDF → OFD

import { pdfToOfd } from '@hufe921/jsofd/pdf';
const doc = await pdfToOfd(pdfBytes, { workerSrc: '/pdf.worker.min.mjs' });
doc.save('converted.ofd');

开发

nvm use 24 && pnpm install
pnpm dev         # Playground → http://127.0.0.1:5173/jsofd-playground/
pnpm test        # 全部测试
pnpm docs        # 文档站 → http://127.0.0.1:5174/jsofd-docs/
pnpm lint · pnpm typecheck · pnpm build

部署

两个站点都按子路径构建,产物可直接放入 nginx 的 html/ 目录:

pnpm build       # packages/playground/dist → html/jsofd-playground/
pnpm docs:build  # docs/.vitepress/dist   → html/jsofd-docs/

基础路径在 packages/playground/vite.config.ts(base: '/jsofd-playground/')与 docs/.vitepress/config.ts(base: '/jsofd-docs/')中定义;Playground 的 PDF 转换依赖(pdfjs cmaps / 标准字体)会随构建自动拷入 dist/assets/pdfjs/。

文档

项目结构

packages/
├── core/          # jsofd 发布包(库源码 + 150 项测试)
└── playground/    # 交互演示

许可

MIT © hufe

About

Generate OFD documents in JavaScript/TypeScript

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages