多功能界面提供了一个全面的工作空间,用于在单个会话中通过多个操作来处理 PDF 文档。它作为一个统一的环境,用户可以在导出结果为新文档之前,对一个或多个 PDF 文件中的页面进行重新排列、旋转、删除、分割和合并。
多功能界面由模板文件 src/main/resources/templates/multi-tool.html 中定义的几个关键组件构成
来源: src/main/resources/templates/multi-tool.html1-132 src/main/resources/static/css/multi-tool.css1-304
多功能界面通过模块化架构实现,其中有几个关键的 JavaScript 类相互作用以提供完整的 funkcionalnost
来源: src/main/resources/static/js/multitool/PdfContainer.js11-890 src/main/resources/static/js/multitool/DragDropManager.js1-210 src/main/resources/static/js/multitool/PdfActionsManager.js6-268 src/main/resources/static/js/multitool/ImageHighlighter.js1-67
多功能界面使用命令模式来实现带有撤销/重做功能的各种操作。每个操作都封装在一个命令对象中,该对象具有标准的 execute()、undo() 和 redo() 方法。
来源: src/main/resources/static/js/multitool/commands/move-page.js1-64 src/main/resources/static/js/multitool/commands/add-page.js1-52 src/main/resources/static/js/multitool/commands/commands-sequence.js1-21 src/main/resources/static/js/multitool/commands/page-break.js1-60
多功能界面通过不同的处理路径来处理 PDF 文件和图像
PDF 文件:
图像:
文件处理发生在 PdfContainer 的 addFilesFromFiles 方法中 src/main/resources/static/js/multitool/PdfContainer.js209-259
该界面提供了多种操作 PDF 页面的方式
| 操作 | 实现 | 用户控件 |
|---|---|---|
| 移动页面 | 拖放或使用按钮 | 每页移动按钮,拖放界面 |
| 旋转页面 | 单页或批量旋转 | 全局和每页旋转按钮 |
| 删除页面 | 单页或选定页 | 每页删除按钮,批量删除 |
| 分割 PDF | 在页面之间添加分割点 | 分割按钮添加一个类标记 |
| 插入空白页 | 添加空页面 | 插入分页符按钮 |
| 添加文件 | 在特定位置插入新文件 | 在页面之间添加按钮 |
来源: src/main/resources/static/js/multitool/PdfContainer.js114-169 src/main/resources/templates/multi-tool.html53-123 src/main/resources/static/js/multitool/PdfActionsManager.js119-218
多功能界面提供两种操作模式
选择功能通过以下方式实现
toggleSelectPageVisibility() src/main/resources/static/js/multitool/PdfContainer.js845-877toggleSelectAll() src/main/resources/static/js/multitool/PdfContainer.js436-467updatePagesFromCSV() src/main/resources/static/js/multitool/PdfContainer.js494-509updateSelectedPagesDisplay() src/main/resources/static/js/multitool/PdfContainer.js536-572在选择模式激活时,可以仅对选定的页面应用全局操作,例如旋转、分割和导出。
拖放功能是多功能界面的一项关键特性,通过 DragDropManager 类实现 src/main/resources/static/js/multitool/DragDropManager.js1-210
用于单页操作
用于选择模式下的多页操作
拖动操作创建 MovePageCommand 实例,这些实例被推送到 UndoManager 以实现撤销/重做功能。
来源: src/main/resources/static/js/multitool/DragDropManager.js37-157 src/main/resources/static/css/dragdrop.css1-100
多功能界面可以通过多种方式导出处理后的文档
导出过程
来源: src/main/resources/static/js/multitool/PdfContainer.js659-786
多功能界面中的所有操作都支持通过命令模式实现撤销/重做。 UndoManager 类维护着独立的撤销和重做操作堆栈。
来源: src/main/resources/static/js/multitool/PdfContainer.js77-102
多功能界面在页面加载过程中进行初始化,并进行一系列组件初始化
此初始化使用 PdfContainer 作为中心控制器来设置组件层次结构,将所有UI元素与其相应的功能连接起来。
来源: src/main/resources/templates/multi-tool.html173-206
多功能界面展示了Stirling PDF的模块化架构,其中专业组件协同工作,提供全面的PDF处理体验。