ComPDFKit/compdf-self-hosted

GitHub: ComPDFKit/compdf-self-hosted

一款支持私有化部署的开源 PDF 编辑与多格式文档转换平台,通过 Docker Compose 实现快速搭建。

Stars: 111 | Forks: 14

[English](README.md) | [繁體中文](README_TW.md) | [简体中文](README_CN.md) # ComPDF Self-Hosted — 开源 PDF 编辑器和 PDF 转换器 利用 [ComPDF Self-hosted](https://www.compdf.com/self-hosted-deployment?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en)(KDAN 生态的一部分),这是一个基于 Docker 容器的开源 PDF 平台,专为私有化部署设计——可用它来编辑、转换和处理 PDF、Office 格式、HTML、TXT、CSV、RTF、JSON 以及图像等多种文档。

License Docker GitHub Stars PRs Welcome

功能快速开始架构升级到企业版支持许可证企业版 →

## 为什么选择 ComPDF Self-Hosted? 与需要深度集成的传统 SDK 不同,ComPDF Self-Hosted 是一个随时可部署的开源 PDF 处理平台。它结合了 PDF 编辑和转换功能,同时支持图像格式转换——涵盖了从文档到图像的全方面需求。这使得企业能够快速建立一个完全可控、自有化的文档中心。 ### 核心优势 * Docker Compose 部署 * 完整的 PDF 工具中心 —— 编辑、转换、合并、拆分 * API 密钥管理和许可证管理 * 采用企业级架构的私有化部署 * 提供商业支持和专属协助 无论您是要构建内部文档平台、文档自动化工作流,还是企业级 PDF 服务,ComPDF Self-Hosted 都能帮助您在几分钟内上手。 ## 功能 ![工具](https://static.pigsec.cn/wp-content/uploads/repos/cas/a3/a3a0fe555c5b4bdfa7543063c3c89575d59280606ae2d597760c75f95f6560c6.png) ComPDF Self-Hosted 提供了可直接通过浏览器访问的、开箱即用的**开源 PDF 编辑器**、**开源 PDF 转换器**和**开源图像转换器**中心。 ### PDF 编辑 * 合并 PDF * 拆分 PDF * 旋转 PDF * 插入页面 * 删除页面 * 提取页面 * 添加水印 * 移除水印 * 加密 PDF * 解密 PDF ### PDF 转换 #### PDF 转换为其他格式 * PDF 转 Word * PDF 转 Excel * PDF 转 Slide * PDF 转 Image (PNG, JPG, JPEG, JPEG2000, BMP, TIFF, TGA, GIF, WEBP) * PDF 转 HTML * PDF 转 TXT * PDF 转 CSV * PDF 转 RTF * PDF 转 JSON * PDF 转 Markdown * PDF 转可搜索 PDF * PDF 转 OFD #### 其他格式转换为 PDF * Word 转 PDF * Excel 转 PDF * Slide 转 PDF * HTML 转 PDF * TXT 转 PDF * CSV 转 PDF * RTF 转 PDF * PNG 转 PDF #### 图像转换(开源照片转换器) * 图像转 Word * 图像转 Excel * 图像转 Slide * 图像转 JSON * 图像转 HTML * 图像转 CSV * 图像转 TXT * 图像转 RTF * 图像转 PDF ## 快速开始 ### 1. 使用 Docker Compose 启动 1. 克隆仓库并进入项目目录: ``` git clone https://github.com/ComPDFKit/compdf-self-hosted.git cd compdf-self-hosted ``` 2. 启动服务前,请先准备好环境文件: ``` cp .env.example .env ``` `.env` 默认包含一个免费的 License,适用于本地开发、功能评估和 API 验证。Docker Compose 会自动从项目目录中加载 `.env` 文件。 3. 启动完整技术栈: ``` docker compose up -d ``` 4. 打开 ComPDF Web: ``` http://localhost:8080/ ``` 如需使用企业版 License,请将 `.env` 文件中的 `COMPDF_LICENSE_KEY` 替换为您获取到的 License Key。更新 License Key 后,请重启服务。 **[申请企业版](https://www.compdf.com/contact-sales?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en)即可获得以下权益:** * 无水印文档处理 * 不限制文档处理页数 * 批量文档处理 ### 2. 启动开发环境 在开发过程中,基础设施和 SDK 服务使用 Docker 运行,而中间件和 Web UI 可以在本地运行以实现热重载。 终端 1:启动 MySQL、Redis、RustFS 以及 SDK 服务: ``` docker compose -f docker-compose.dev.yml up -d compdf-infra compdf-app docker compose -f docker-compose.dev.yml ps ``` 终端 2:在本地启动 NestJS 中间件。它将通过映射到宿主机的端口连接到开发环境 Compose 服务: ``` cd server npm install DATABASE_HOST=127.0.0.1 \ DATABASE_PORT=13306 \ DATABASE_USER=compdfkit \ DATABASE_PASSWORD=compdfkit-pass-2026 \ DATABASE_NAME=compdfkit \ REDIS_HOST=127.0.0.1 \ REDIS_PORT=16379 \ COMPDF_SDK_BASE_URL=http://127.0.0.1:7000 \ PDF_SDK_BASE_URL=http://127.0.0.1:7001 \ CONVERSION_BASE_URL=http://127.0.0.1:7000 \ LICENSE_TOKEN_PATH=../configs/license.jwt \ SETTINGS_PATH=../configs/settings.yml \ STORAGE_DIR=./storage \ npm run start:dev ``` 中间件暴露的 API 地址为: ``` http://localhost:8080/api/v1/* ``` 终端 3:启动 Web UI。Vite 会将 `/api` 代理到端口 `8080` 上的中间件: ``` cd frontend/compdf-web npm install npm run dev ``` 打开 Vite 输出的 URL,例如: ``` http://localhost:5173/ ``` 如需局域网访问,请使用 Vite `Network` URL 输出的机器 IP,并确保中间件也能从该机器访问。 如果您在开发期间更倾向于在 Docker 中运行中间件: ``` docker compose -f docker-compose.dev.yml up -d --build compdf-infra compdf-app web ``` ### 3. 检查状态和日志 ``` docker compose ps docker compose logs -f compdf-server ``` 生产环境部署会将持久化数据存储在 Docker volumes 中,并将 `./configs` 挂载到中间件容器内。 ### 4. 从源码构建生产镜像 当您修改了本地源代码,并需要通过根目录的 `Dockerfile` 打包新的生产环境 `compdf-server` 镜像时,请遵循此路径。该 Dockerfile 会编译 `frontend/compdf-web`,构建 NestJS 服务端,将 Web UI 复制到 `/app/public/compdf-web` 目录中,并在端口 `8080` 上启动中间件。 ``` docker compose -f docker-compose.yml up -d --build compdf-infra compdf-app compdf-server ``` 以上所有功能均随 [ComPDF](https://www.compdf.com/?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en) 提供 —— 请在[此处](https://www.compdf.com/pdf-tools?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en)查看详情。 ## 架构 ``` ┌────────────────────────────────────────────────────────────────────┐ │ Browser │ │ http://localhost:8080/ in production │ └───────────────────────────────┬────────────────────────────────────┘ │ │ HTML/CSS/JS + HTTP /api/v1/* ▼ ┌────────────────────────────────────────────────────────────────────┐ │ compdf-server container │ │ frontend/compdf-web + server │ │ Server, port 8080 │ ├────────────────────────────────────────────────────────────────────┤ │ - Serves the Web UI from /app/public/compdf-web │ │ - Proxies PDF edit APIs: /api/v1/pdf/* │ │ - Proxies conversion APIs: /api/v1/* conversion routes │ │ - Orchestrates async task status and downloads │ │ - Injects display-only license metadata into the Web UI │ │ - Normalizes upstream errors and writes operation logs │ └───────────────┬───────────────────────────────┬────────────────────┘ │ │ │ HTTP │ MySQL / Redis ▼ ▼ ┌────────────────────────────────┐ ┌────────────────────────────────┐ │ compdf-app container │ │ compdf-infra container │ │ │ │ MySQL 8 + Redis 7 + RustFS │ │ │ │ persistent Docker volumes │ └────────────────────────────────┘ └────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────────┐ │ Project-mounted data │ ├────────────────────────────────────────────────────────────────────┤ │ configs/: license.jwt, settings.yml, init.sql │ │ storage/: async task result files │ │ fonts/: optional fonts mounted into the SDK container │ └────────────────────────────────────────────────────────────────────┘ ``` 在本地开发中,`compdf-infra` 和 `compdf-app` 依然运行在 Docker 中。NestJS 中间件可以在 `server/` 目录下运行,而 Web UI 可以在 `frontend/compdf-web` 目录下运行并享受 Vite 的热重载功能。 ## 升级到企业版 [联系销售](https://www.compdf.com/contact-sales?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en) 以升级至 **企业版**。 | 功能 | 免费版 | 企业版 | | --------------------- | ------------ | ---------- | | PDF 编辑 | ✅ | ✅ | | PDF 转换 | ✅ | ✅ | | Web UI | ✅ | ✅ | | 仪表盘 | ✅ | ✅ | | 无水印输出 | ❌ | ✅ | | 无限页数 | ❌ | ✅ | | 自定义并发 | ❌ | ✅ | | 商业许可 | ❌ | ✅ | | 技术支持 | ❌ | ✅ | ## 许可证 - 本项目基于 MIT 许可证授权。详情请参阅 LICENSE 文件。 - 如需获取 ComPDF Self-Hosted 的商业/企业许可证,请[联系销售](https://www.compdf.com/contact-sales?utm_source=github_ai_sefhosted_open_en&utm_medium=referral&utm_campaign=github_ai_sefhosted_open_en&ref_platform_id=github_compdfkit_en)。

由 ComPDF 团队构建。
官网 · 文档 · 企业咨询

标签:Docker, PDF, 安全防御评估, 搜索引擎查询, 文档处理, 格式转换, 私有化部署, 自动化攻击, 请求拦截, 防御规避