本页面介绍了Stirling-PDF使用的第三方库、它们的许可证以及项目中依赖项的管理方式。有关从源代码构建应用程序的信息,请参阅从源代码构建。有关添加新功能的指南,请参阅添加新功能。
Stirling-PDF依赖众多第三方库来实现其全面的PDF处理功能。这些依赖项涵盖PDF处理库、Web框架组件、安全模块和实用库。本文档解释了如何管理、跟踪和向用户展示这些依赖项。
来源:src/main/resources/static/3rdPartyLicenses.json1-5010 .github/workflows/licenses-update.yml1-93
Stirling-PDF自动跟踪和验证第三方依赖项,以确保所有库都具有兼容的许可证并得到妥善记录。
来源:.github/workflows/licenses-update.yml1-93 .github/workflows/build.yml61-89
项目实施严格的验证流程,确保所有依赖项的许可证兼容。
checkLicense Gradle任务会验证所有库是否使用批准的开源许可证。build.gradle中的依赖项发生更改时,许可证报告会自动更新。来源:.github/workflows/licenses-update.yml43-53 .github/workflows/build.yml78-88
Stirling-PDF使用各种类别的库来支持其功能。以下是主要类别和关键库的概述。
来源:src/main/resources/static/3rdPartyLicenses.json1-5010
PDF处理功能依赖于几个专业库。
| 库 | 目的 | 许可证 |
|---|---|---|
| Apache PDFBox | 核心PDF处理 | Apache License 2.0 |
| iText (通过集成) | 高级PDF功能 | AGPL |
| ZXing | 二维码和条形码生成 | Apache License 2.0 |
| TwelveMonkeys ImageIO | 增强图像支持 | BSD License |
| QPDF (通过集成) | PDF优化 | Apache License 2.0 |
来源:src/main/resources/static/3rdPartyLicenses.json1-345
Stirling-PDF基于Spring Boot构建,并使用各种Web相关库。
来源:src/main/resources/static/3rdPartyLicenses.json45-120 src/main/resources/static/3rdPartyLicenses.json492-497
通过各种库来维护安全性。
| 库 | 目的 | 许可证 |
|---|---|---|
| Spring Security | 认证与授权框架 | Apache License 2.0 |
| OWASP Java HTML Sanitizer | 防止XSS攻击 | Apache License 2.0 |
| SAML Client (Coveo) | SAML认证 | MIT |
| OAuth2 OIDC SDK | OAuth/OpenID Connect支持 | Apache License 2.0 |
| Java Security Toolkit | 安全加固 | MIT |
来源:src/main/resources/static/3rdPartyLicenses.json29-37 src/main/resources/static/3rdPartyLicenses.json209-227 src/main/resources/static/3rdPartyLicenses.json243-269 src/main/resources/static/3rdPartyLicenses.json540-545
文档转换功能由以下库提供。
| 库 | 目的 | 许可证 |
|---|---|---|
| Flexmark | Markdown处理 | BSD 2-Clause |
| LibreOffice (集成) | Office格式转换 | MPL/LGPL |
| Tesseract OCR (集成) | 光学字符识别 | Apache License 2.0 |
| HTML转PDF转换 | 网页转PDF | 多种 |
来源:src/main/resources/static/3rdPartyLicenses.json366-490
项目包含各种许可证类型的依赖项,其中Apache License 2.0和MIT许可证占主导地位。
来源:src/main/resources/static/3rdPartyLicenses.json1-5010
应用程序中的许可证页面显示了所有第三方依赖项及其许可证信息。此页面从3rdPartyLicenses.json文件生成。
来源:src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java44-60 src/main/java/stirling/software/SPDF/model/Dependency.java1-12
当向项目添加新依赖项时:
build.gradle。自动化工作流确保所有依赖项及其许可证得到妥善跟踪和记录。
来源:.github/workflows/licenses-update.yml55-92 .github/workflows/build.yml78-88
Stirling-PDF维护一个已批准的许可证列表,这些许可证与项目目标兼容。当添加新依赖项时,它们会根据此列表进行检查。
来源:.github/workflows/licenses-update.yml43-53 .github/workflows/build.yml78-88
下表总结了Stirling-PDF中一些最重要库的用途。
| 库 | 主要用途 | 关键集成点 |
|---|---|---|
| Apache PDFBox | 核心PDF处理 | PDF实用服务 |
| Spring Boot | 应用框架 | Web控制器、API端点 |
| Jackson | JSON处理 | 配置、API响应 |
| Thymeleaf | HTML模板 | Web UI模板 |
| H2 Database | 数据存储 | 用户管理、设置存储 |
| Bucket4j | 限流 | API请求限流 |
| Flexmark | Markdown处理 | Markdown转PDF转换 |
| ZXing | 条形码生成 | 为PDF添加条形码 |
| TwelveMonkeys | 增强图像支持 | 图像转PDF转换 |