App 需要记录的信息汇总
- 页签窗口控制器 KMBrowserWindowController
- 页签窗口 KMBrowserWindowController
- 文档 KMMainDocument
- 首页页签内容控制器 KMHomeViewController
- 阅读页签内容控制器 KMMainViewController
- 页签操作可查看 KMBrowser
App 架构
- MVC
- MVC 目前存在 C 比较臃肿的弊端,但是也是可以使用的,比较臃肿的问题待后续优化.
多页签
- 页签操作 KMBrowser [CTTabStripModel 实际操作对象]
- 窗口控制器 KMBrowserWindowController
- 窗口 KMBrowserWindow
- 页签区域控制器 KMTabStripController
- 页签区域 KMTabStripView
- 页签控制器 CTTabController
- 页签视图 CTTabView
- 页签内容控制器 CTTabContentsController [KMHomeViewController + KMMainViewController 都是显示在其上]
页签内容提供者 CTTabContents(文档 当前App对应的是 KMMainDocument)
页签拖拽 CTTabStripDragController
内存管理
KMBrowser [-> CTTabStripModel -> KMMainDocument] -> KMMainDocument -> KMBrowser
环形内存引用 让内存不释放。在适当的时机断环来释放内存,避免循环引用.
KMBrowser -> KMBrowserWindowController 强引用 页签窗口控制器.
事件传递
target-action [KMTabStripController -> CTTabController, CTTabController --> KMTabStripController(target)]
响应者链 [NewTabButton]
通知 [CTTabStripModel]
代理 [KMBrowser -> CTTabStripModel, CTTabStripModel --> KMBrowser(delegate)]
维护建议
新增功能或修复bug,尽量通过重写类来处理,保证三方库内部尽可能少的改动.
Apple Event 开发注意项
- NSAppleScript 开发注意项 [脚本开发]
- Apple Events 设置项 开启
- info.plist 新增一项 [Privacy - AppleEvents Sending Usage Description] 授权提示语,在请求系统授权时弹起的授权窗口里提示语.缺失会引起crash,App Store 版本也可能会被拒.
- 开启其他程序授权 xx.entitlements 新增一项 [com.apple.security.temporary-exception.apple-events]
- Office Word [com.microsoft.word]
- Office Excel [com.microsoft.excel]
- Office PPT [com.microsoft.powerpoint]
- ...
- 编码脚本执行 [可见: KMConvertPDFManager]
- 开启 Office 程序需要授权,只授权一次. [授权后可以在 偏好设置->安全性与隐私->隐私->自动化 里查看授权情况]
2 Office 程序将数据保存为PDF文件时需要授权 [因空白PDF文件是 App的私有路径]
- 没有授权 [可以在 偏好设置->安全性与隐私->隐私->自动化 里查看授权情况]
- Office 程序没有运行 [检查 NSAppleScript 开发注意项里的 1. 2. 3.]
...
KMDrawViewSDK_Mac.framework
drawView?.clear()
drawView?.resetUndoManager()
操作时留意先后顺序,避免undo操作还可以点击
代码注释
//TODO: 标示有功能代码待编写 -
//MARK: mark -
//FIXME: 标示代码需要修正 -
//!!!: 标示代码需要注意 -
//???: 标示代码有疑问 -
App 主要模块的入口
首页
- 打开文件 & 创建PDF KMCreatPDFView
- 最近列表 KMHomeHistoryListView
页面编辑
OCR
- 【首页快捷工具】
- KMOCRPDFWindowController
AI
- 概括 & 重写 & 校对 & 翻译
- AIConfigWindowController
- AI 购买窗口 AIPurchaseWindowController
合并
转档
- KMConvertWindowController
批量
- KMBatchOperateWindowController
图片转PDF
- KMBatchOperateBaseWindowController
属性面板
KMGeneralAnnotationViewController
分割视图 KMSecondaryViewController
入口 toggleSplitPDF
【注释】
KMAnnotationPropertiesViewController
图章 KMAnnotationStampViewController
签名 KMSignatureAnnotationViewController
水印
水印模板 KMBatchOperateAddWatermarkViewController
水印模板编辑 KMWatermarkWindowController
背景
背景模板 KMBatchOperateAddWatermarkViewController
背景模板编辑 KMBackgroundWindowController
填写与签名
日期 KMFillSignTextPanel
KMAnnotationSelfSignViewController
编辑PDF
文本 KMEditPDFTextPropertyViewController
图片 KMEditImagePropertyViewController
What's New
- KMFunctionGuideWindowController
信息
- KMProfileInfoWindowController
幻灯片
- 选项设置 SKPresentationOptionsSheetController
注释工具
填写与签名
- ✅、叉、矩形、线段、圆点注释 CSelfSignAnnotation
- 日期注释 CSelfSignAnnotationFreeText
- 签名注释:CPDFListSignatureAnnotation
数字签名
- KMPDFDigitalSignViewController
- 查看证书 DSignatureDetailsViewController
导入 [扫描仪 & 相册]
- KMDeviceBrowserWindowController
线条设置窗口
- KMLineInspector
- KMAnnotationLineWindowController
笔记类型窗口
字体设置窗口
- KMAnnotationFontWindowController
文件对比
xxx
sign in the dashboard. to sign up
the **API **
the **API **
xxx
See "Samples" folder in this folder.
xxx