本文档全面概述了 Stirling PDF 的架构,阐述了系统的关键组件、它们之间的关系以及驱动应用程序的整体设计模式。有关核心组件的具体实现细节,请参阅核心组件。
Stirling PDF 遵循分层架构模式,将功能组织成具有明确职责的不同层。这种设计促进了关注点分离、可维护性和可测试性,同时为广泛的功能集提供了灵活的基础。
来源
下图说明了请求如何通过 Stirling PDF 系统流动,从用户交互到 PDF 处理和响应生成。
来源
Stirling PDF 基于 Spring MVC 架构构建,包含两种类型的控制器
Web 控制器 - 处理 HTTP 请求并返回 HTML 视图
GeneralWebController - 管理 PDF 合并、拆分和组织等通用 PDF 操作OtherWebController - 处理压缩、OCR 和元数据更改等专业操作API 控制器 - 提供返回 JSON 或二进制数据的 RESTful 端点
ConvertImgPDFController - PDF 与图像之间的转换RearrangePagesPDFController - 管理页面删除和重排等页面操作SplitPDFController - 处理 PDF 拆分操作来源
Stirling PDF 的核心功能在工具类中实现,提供 PDF 操作功能
PdfUtils 类是应用程序 PDF 操作的核心,提供以下方法的支持:
来源
Web 界面采用 Thymeleaf 模板、Bootstrap 进行样式设计,并使用 JavaScript 实现客户端功能
Web 界面包括
来源
Stirling PDF 的 PDF 处理能力按操作类型进行组织,每组操作都作为独立的控制器和实用方法实现
每种操作类型都利用 PdfUtils 类中的专用实用方法,并可能通过 ProcessExecutor 调用不支持 PDFBox 的外部工具。
来源
Stirling PDF 支持多种部署方法,包括 Docker 容器、JAR 文件和特定于平台的安装程序
构建系统 (Gradle) 配置为生成不同的部署工件
来源
Stirling PDF 包含一个可选的安全系统,可在部署期间启用或禁用
安全系统是模块化的,可以完全从构建中排除,以支持不需要身份验证的环境。这由构建配置中的 DOCKER_ENABLE_SECURITY 环境变量控制。
来源
Stirling PDF 通过消息解析系统提供广泛的国际化支持
国际化系统使用属性文件进行消息定义,并与 Thymeleaf 模板集成,使用消息键。该系统目前支持超过 39 种语言。
来源
Stirling PDF 中的 PDF 处理通常遵循以下步骤
CustomPDFDocumentFactory 加载文件PdfUtils 中的相应实用方法处理文档ProcessExecutor 调用外部工具这种模式使得在各种 PDF 操作中都能保持一致的处理,同时允许进行特定于操作的自定义。
Stirling PDF 利用了多种外部工具来执行 PDFBox 之外的功能
| 工具 | 目的 | 集成方法 |
|---|---|---|
| LibreOffice | Office 格式转换 | 进程执行 |
| Tesseract OCR | 图像文本识别 | 进程执行 |
| QPDF | 高级 PDF 操作 | 进程执行 |
| Weasyprint | HTML/Markdown 转 PDF | 进程执行 |
ProcessExecutor 类提供了一种标准化的方式来调用这些工具并捕获其输出,从而实现与应用程序其余部分的无缝集成。
Stirling PDF 包含用于不同部署环境的专用组件
STIRLING_PDF_DESKTOP_UI 环境变量控制)DOCKER_ENABLE_SECURITY 环境变量控制)这些特性可以在构建时启用或禁用,以针对每个环境创建适当的部署工件。