PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
ComPDF Generation 是一项可私有化部署的 HTML 模板管理和 PDF 生成服务。它提供 Web 界面和 HTTP API,用于管理 HTML 模板、可选 JSON 数据源,以及通过 ComPDF PDF Generation 引擎生成 PDF。
当你需要将模板和文档生成流程保留在自己的环境中时,可以使用 ComPDF Generation。
────────────────────────────────────
Browser / API Client
http://localhost:${APP_PORT}
────────────────────────────────────
│ HTML / CSS / JS
│ HTTP /api/*
▼
────────────────────────────────────
compdf-generation container
Vue 3 static files + Express API
port 8090
────────────────────────────────────
- Express 提供前端静态资源,并将 SPA 路由回退到 index.html
- /api/templates/* 管理模板 HTML、JSON 数据源和元数据
- /api/v1/process/pdf/generation/template-to-pdf 代理 PDF 生成请求
- 统一处理上传、超时、错误响应、下载文件名和 traceId
────────────────────────────────────
│ HTTP
│ compdf-internal
▼
────────────────────────────────────
compdf-app container
ComPDF PDF Generation engine
port 7001
────────────────────────────────────compdf-generation 加载构建后的 Vue 单页应用,并通过同源 /api 调用 Express,生产环境无需单独部署静态文件服务器。/data/templates;该目录绑定到宿主机的 TEMPLATE_STORAGE_DIR,容器重建后数据仍然保留。http://compdf-app:7001/v1/sync/generation/template-to-pdf。Express 负责整理 multipart 请求、透传 PDF 响应,并统一生成错误信息和 traceId。compdf-generation 会等待 compdf-app 健康检查通过后启动;两个服务通过私有桥接网络 compdf-internal 通信。dist、后端 dist 及生产依赖复制到最终的非 root Node.js 容器。1.1.0 优化了底层镜像,移除不必要的数据库依赖并减小镜像体积。APP_PORT(默认 8090)映射到 Web/API 容器;同时将引擎的 7001 端口发布到宿主机,供本地后端开发和连通性检查使用。/api 代理到 http://localhost:8090;Express 默认通过 http://localhost:7001 访问 Docker 中的 ComPDF 引擎。| 层级 | 框架或组件 | 用途 |
|---|---|---|
| 前端 | Vue 3、Vue Router、Vue I18n | 单页界面、路由和六语言国际化。 |
| 前端构建 | Vite、TypeScript、Less | 开发服务器、类型检查和样式构建。 |
| 前端 UI | TDesign Vue Next、tdesign-icons-vue-next | 页面组件与图标。 |
| 模板编辑 | WangEditor(@wangeditor/editor-for-vue) | HTML 富文本模板编辑。 |
| HTTP 客户端 | Axios | 调用同域 /api 接口并处理文件下载。 |
| 后端 | Node.js 22、Express、TypeScript | 提供 HTTP API、静态文件和 ComPDF 代理。 |
| 上传与归档 | Multer、Archiver | 处理 multipart 文件上传与模板 ZIP 下载。 |
| PDF 生成 | compdfkit/pdf-generation:1.1.0 | 执行 HTML / 模板到 PDF 的同步生成。 |
| 部署 | Docker Compose、Docker 多阶段构建 | 编排 ComPDF 引擎与 Web/API 容器。 |
| 数据持久化 | 宿主机文件系统 | 持久化模板 HTML、JSON 和元数据。 |