菜单

第三方库

相关源文件

本页面介绍了Stirling-PDF使用的第三方库、它们的许可证以及项目中依赖项的管理方式。有关从源代码构建应用程序的信息,请参阅从源代码构建。有关添加新功能的指南,请参阅添加新功能

1. 概述

Stirling-PDF依赖众多第三方库来实现其全面的PDF处理功能。这些依赖项涵盖PDF处理库、Web框架组件、安全模块和实用库。本文档解释了如何管理、跟踪和向用户展示这些依赖项。

来源:src/main/resources/static/3rdPartyLicenses.json1-5010 .github/workflows/licenses-update.yml1-93

2. 依赖管理系统

Stirling-PDF自动跟踪和验证第三方依赖项,以确保所有库都具有兼容的许可证并得到妥善记录。

2.1 许可证跟踪工作流

来源:.github/workflows/licenses-update.yml1-93 .github/workflows/build.yml61-89

2.2 许可证验证流程

项目实施严格的验证流程,确保所有依赖项的许可证兼容。

  1. checkLicense Gradle任务会验证所有库是否使用批准的开源许可证。
  2. 许可证检查在CI/CD和本地构建过程中都会运行。
  3. 许可证违规将阻止构建过程,并报告有问题的依赖项。
  4. build.gradle中的依赖项发生更改时,许可证报告会自动更新。

来源:.github/workflows/licenses-update.yml43-53 .github/workflows/build.yml78-88

3. 主要库类别

Stirling-PDF使用各种类别的库来支持其功能。以下是主要类别和关键库的概述。

来源:src/main/resources/static/3rdPartyLicenses.json1-5010

4. 核心PDF处理库

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

5. Web框架和UI库

Stirling-PDF基于Spring Boot构建,并使用各种Web相关库。

来源:src/main/resources/static/3rdPartyLicenses.json45-120 src/main/resources/static/3rdPartyLicenses.json492-497

6. 安全库

通过各种库来维护安全性。

目的许可证
Spring Security认证与授权框架Apache License 2.0
OWASP Java HTML Sanitizer防止XSS攻击Apache License 2.0
SAML Client (Coveo)SAML认证MIT
OAuth2 OIDC SDKOAuth/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

7. 文档格式转换库

文档转换功能由以下库提供。

目的许可证
FlexmarkMarkdown处理BSD 2-Clause
LibreOffice (集成)Office格式转换MPL/LGPL
Tesseract OCR (集成)光学字符识别Apache License 2.0
HTML转PDF转换网页转PDF多种

来源:src/main/resources/static/3rdPartyLicenses.json366-490

8. 依赖许可证分布

项目包含各种许可证类型的依赖项,其中Apache License 2.0和MIT许可证占主导地位。

来源:src/main/resources/static/3rdPartyLicenses.json1-5010

9. 许可证UI展示

应用程序中的许可证页面显示了所有第三方依赖项及其许可证信息。此页面从3rdPartyLicenses.json文件生成。

来源:src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java44-60 src/main/java/stirling/software/SPDF/model/Dependency.java1-12

10. 添加新依赖项

当向项目添加新依赖项时:

  1. 将依赖项添加到build.gradle
  2. 许可证检查过程将自动验证许可证兼容性。
  3. 合并到main分支后,许可证报告将被更新。
  4. 如果许可证不在批准列表中,构建将失败并附带详细报告。

自动化工作流确保所有依赖项及其许可证得到妥善跟踪和记录。

来源:.github/workflows/licenses-update.yml55-92 .github/workflows/build.yml78-88

11. 许可证兼容性检查

Stirling-PDF维护一个已批准的许可证列表,这些许可证与项目目标兼容。当添加新依赖项时,它们会根据此列表进行检查。

来源:.github/workflows/licenses-update.yml43-53 .github/workflows/build.yml78-88

12. 主要库用途

下表总结了Stirling-PDF中一些最重要库的用途。

主要用途关键集成点
Apache PDFBox核心PDF处理PDF实用服务
Spring Boot应用框架Web控制器、API端点
JacksonJSON处理配置、API响应
ThymeleafHTML模板Web UI模板
H2 Database数据存储用户管理、设置存储
Bucket4j限流API请求限流
FlexmarkMarkdown处理Markdown转PDF转换
ZXing条形码生成为PDF添加条形码
TwelveMonkeys增强图像支持图像转PDF转换

来源:src/main/resources/static/3rdPartyLicenses.json1-5010