tangchao a205a23200 Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025 пре 1 дан
..
AD 9ea3e293ad 【综合】远程逻辑新增DFP点击跳转比较表 пре 1 месец
AIInfo 4b94d1a248 【2025】【PDFView】代码回撤处理 пре 1 месец
Analytics 5449688005 【内嵌支付】付费埋点调整为AppCenter пре 2 месеци
Appearance c1fb34d223 【2025】【BOTA】搜索列表 小窗口 UI处理 пре 1 дан
AutoSave 9955637f5c 【保存】数字签名、合并等需要保存文档的地方,概率性出现卡在保存过程中的情况,只能强制退出APP пре 6 месеци
Batch cc12755612 【综合】整理代码 пре 3 недеља
ChromiumTabs 02fe1d71cf 【2025】【综合】删除旧会员相关代码 пре 3 недеља
Common ecd5565d8b 【2025】【Markup】代码规范处理 пре 1 недеља
ComponentLibrary ea4c0a0a9b 【2025】【Home】删除无关代码 пре 1 месец
DigtalSignature 33f89a524f 【综合】数字签名Crash修复 пре 1 месец
Document 02fe1d71cf 【2025】【综合】删除旧会员相关代码 пре 3 недеља
Foundation Categories 4ade2b7b4b 【工程名称更换】免费版本更换 пре 10 месеци
GuideInfo 4868a730fc 【综合】合并代码 пре 1 месец
Home b66a059a47 【综合】整理代码 пре 5 дана
KMAdvertisement 627f26ea9e 【2025】【Edit】水印模块完善,组件库接口补充 пре 4 недеља
KMDeviceBrowserWindowController daa3ccfdac 【2025】【综合】代码整理 пре 1 месец
KMFileManager f06fd281c8 【综合】Swift文件兼容 пре 4 месеци
KMLightMember 02fe1d71cf 【2025】【综合】删除旧会员相关代码 пре 3 недеља
KMResourceDownload cdf1ceca2c 【综合】unowned关键字代码优化 пре 4 месеци
PDFTools ecd48506c8 【综合】搜索列表整理代码 пре 2 дана
PDFWindowController a205a23200 Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025 пре 1 дан
Parsers f06fd281c8 【综合】Swift文件兼容 пре 4 месеци
Preference 169f17b1fa 【2025】【Markup】橡皮擦,马克笔属性界面自测优化 пре 1 дан
Purchase 4868a730fc 【综合】合并代码 пре 1 месец
SystemMenu a4ee81dbb7 【综合】原导出注释菜单项调整 пре 2 месеци
Tools 21931e590d 【2025】【BOTA】搜索列表替换窗口整理代码 пре 1 дан
ToolsLibrary c9199450ec 【综合】分屏 水平分屏,右侧文档,底部栏会显示多余文字(已修复) пре 8 месеци
URLManager 12e3fcfefc 【2025】【Edit】水印模块完善 пре 4 недеља
Websocket 4ade2b7b4b 【工程名称更换】免费版本更换 пре 10 месеци
Welcome 02fe1d71cf 【2025】【综合】删除旧会员相关代码 пре 3 недеља
README.md 0d9fa622fa 【2025】【View】代码规范处理 пре 1 месец

README.md

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 开发注意项 [脚本开发]
  1. Apple Events 设置项 开启
  2. info.plist 新增一项 [Privacy - AppleEvents Sending Usage Description] 授权提示语,在请求系统授权时弹起的授权窗口里提示语.缺失会引起crash,App Store 版本也可能会被拒.
  3. 开启其他程序授权 xx.entitlements 新增一项 [com.apple.security.temporary-exception.apple-events]
  4. Office Word [com.microsoft.word]
  5. Office Excel [com.microsoft.excel]
  6. Office PPT [com.microsoft.powerpoint]
  7. ...
  8. 编码脚本执行 [可见: KMConvertPDFManager]
  • Office 转 PDF
  • 创建空白 PDF 文件
  • 开启 Office 程序,并把原文件路径和需要存储的路径 [空白PDF文件的路径] 传递给 Office 程序. [脚本执行]

  • 脚本执行时会有两处授权

  1. 开启 Office 程序需要授权,只授权一次. [授权后可以在 偏好设置->安全性与隐私->隐私->自动化 里查看授权情况] 2 Office 程序将数据保存为PDF文件时需要授权 [因空白PDF文件是 App的私有路径]
  • 脚本执行错误
  1. 没有授权 [可以在 偏好设置->安全性与隐私->隐私->自动化 里查看授权情况]
  2. Office 程序没有运行 [检查 NSAppleScript 开发注意项里的 1. 2. 3.] ...

KMDrawViewSDK_Mac.framework

drawView?.clear() 
drawView?.resetUndoManager()
操作时留意先后顺序,避免undo操作还可以点击

代码注释

//TODO: 标示有功能代码待编写 - //MARK: mark - //FIXME: 标示代码需要修正 - //!!!: 标示代码需要注意 - //???: 标示代码有疑问 -

App 主要模块的入口

首页

  • 打开文件 & 创建PDF KMCreatPDFView
  • 最近列表 KMHomeHistoryListView

页面编辑

  • 页面编辑【阅读页】
  • KMPDFEditViewController
  • 页面编辑【阅读页】自定义页面范围
  • KMPDFEditPageRangeWindowController
  • 页面编辑【阅读页】插入文件
  • KMPDFEditInsertPageWindow
  • 页面编辑【阅读页】提取
  • KMPDFEditExtractWindow
  • 页面编辑【阅读页】拆分
  • SplitWindowController

  • 插入 【首页快捷工具】

  • KMPDFInsertWindowController

  • 拆分 【首页快捷工具】

  • SplitWindowController

  • 页面编辑 【首页快捷工具】

  • KMPDFEditWindowController

OCR

  • 【首页快捷工具】
  • KMOCRPDFWindowController

AI

  • 概括 & 重写 & 校对 & 翻译
  • AIConfigWindowController
  • AI 购买窗口 AIPurchaseWindowController

合并

  • KMMergeWindowController

转档

  • 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

注释工具

  • 笔记 CPDFListAnnotationNoteWindowController
  • 便签 CPDFListEditAnnotationViewController

  • 自定义注释工具 KMToolbarCustomWindowController

填写与签名

  • ✅、叉、矩形、线段、圆点注释 CSelfSignAnnotation
  • 日期注释 CSelfSignAnnotationFreeText
  • 签名注释:CPDFListSignatureAnnotation

数字签名

  • KMPDFDigitalSignViewController
  • 查看证书 DSignatureDetailsViewController

导入 [扫描仪 & 相册]

  • KMDeviceBrowserWindowController

线条设置窗口

  • KMLineInspector
  • KMAnnotationLineWindowController

笔记类型窗口

  • KMNotesPanelController

字体设置窗口

  • KMAnnotationFontWindowController

文件对比

  • 下方工具bar KMCompareToolbar

xxx

sign in the dashboard. to sign up

  • the **API **

  • the **API **

xxx

See "Samples" folder in this folder.

xxx