25 커밋 582ba91281 ... 18ae562634

작성자 SHA1 메시지 날짜
  dinglingui 18ae562634 Merge branch 'develop_PDFReaderProNew' into develop_2025 1 주 전
  dinglingui 540156d8b6 【PDFView】注释很大绘制出现卡顿(注释超出画布时,hover效果不绘制) 1 주 전
  tangchao ae96a97687 【DMG】xml更新 1 주 전
  dinglingui 2b61905986 【综合】夜间模式适配问题 1 주 전
  tangchao f01ec6fa23 【综合】Appcenter Crash问题修复 1 주 전
  tangchao afbf2f4c46 【综合】合并代码 1 주 전
  tangchao 33f89a524f 【综合】数字签名Crash修复 2 주 전
  tangchao 2087b14ecc 【ComPDFKit】更新至V2.1.3 2 주 전
  tangchao ee708303ad 【ComPDFKit】更新至V2.1.3 2 주 전
  dinglingui 7e4be9a69c 【PDFView】注释很大绘制出现卡顿(注释超出画布时,hover效果不绘制) 2 주 전
  tangchao a4417f999e 【ComPDFKit】更新至V2.1.3 2 주 전
  tangchao 8998278f02 【ComPDFKit】更新至V2.1.3 2 주 전
  tangchao 20e4c178a9 【综合】数字签名模块crash修复 2 주 전
  tangchao 8609094560 【菜单项】配置远程控制 2 주 전
  tangchao aee52db61a Merge branch 'develop_PDFReaderProNew' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderProNew 2 주 전
  tangchao 5a28956ba4 【DMG】xml更新 2 주 전
  wanjun 05441043b6 【综合】中文内嵌文档替换 2 주 전
  wanjun 0cb8b4dffd 【综合】新增中文内嵌文档 2 주 전
  lizhe 2b258a98bb 【SDK】ComPDFKit v2.1.3 更换 2 주 전
  lizhe 9ff0165afc 【SDK】ComPDFKit v2.1.3 3 주 전
  lizhe 5a6868bbd5 【SDK】ComPDFKit v2.1.3 更换 3 주 전
  lizhe 2c33df0987 【右侧面板】高亮注释修改属性不刷新问题修复 3 주 전
  lizhe 3d271dd535 【SDK】ComPDFKit v2.1.3 更换 3 주 전
  tangchao c7f5ffbdcf 【fix】【转档】单个文件转档时,页码范围从其他页面切换到全部页面,无效 3 주 전
  tangchao 487030f26c 【fix】【BOTA】给两个页面分别添加一个注释,删除其中一个注释,注释列表会显示“页面1 0个注释”,应该不保留 3 주 전
28개의 변경된 파일107개의 추가작업 그리고 47개의 파일을 삭제
  1. 11 2
      PDF Office/PDF Master/AppDelegate.swift
  2. 2 2
      PDF Office/PDF Master/Class/Common/Tools/KMTools.swift
  3. 1 1
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateStateViewController.swift
  4. 2 1
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCertifyDetailViewController.swift
  5. 14 0
      PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift
  6. 1 1
      PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.swift
  7. 3 4
      PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/VC/KMBatchOperateAddHeaderFooterViewController.swift
  8. 1 1
      PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/WindowComtroller/KMHeaderFooterManagerWindowController.swift
  9. 2 0
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.swift
  10. BIN
      PDF Office/PDF Master/Class/PDFWindowController/MainWindowController/快速教学.pdf
  11. 4 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotation+PDFListView.swift
  12. 4 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFButtonWidgetAnnotation+PDFListView.swift
  13. 4 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFFreeTextAnnotation+PDFListView.swift
  14. 5 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFLinkAnnotation+PDFListView.swift
  15. 4 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFRedactAnnotation+PDFListView.swift
  16. 3 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Note.swift
  17. 6 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMGeneralAnnotationViewController.swift
  18. 3 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/WindowController/KMAnnotationFontWindowController.swift
  19. 1 1
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Background/Background/View/KMAddBackgroundView.swift
  20. 3 3
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Controller/KMBatchOperateAddWatermarkViewController.swift
  21. 1 1
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/New/View/KMWatermarkView.swift
  22. 2 0
      PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings
  23. 2 0
      PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings
  24. BIN
      PDF Office/PDF Master/Third Pard Library/Sparkle/PDFReaderPro_v4.6.2.dmg
  25. 5 7
      PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast.xml
  26. 5 7
      PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast_zh_Hans.xml
  27. 5 7
      PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast_zh_Hant.xml
  28. 13 4
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 11 - 2
PDF Office/PDF Master/AppDelegate.swift

@@ -425,9 +425,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
     @objc private func _themeChanged(_ sender: Notification) {
         let isDarkModel = KMAdvertisementConfig.isDarkModel()
         if isDarkModel {
-            NSApp.appearance = .init(named: .darkAqua)
+            NSApp.appearance = NSAppearance(named: .darkAqua)
         } else {
-            NSApp.appearance = .init(named: .aqua)
+            NSApp.appearance = NSAppearance(named: .aqua)
         }
 //        if let data = NSApp.appearance?.name, data == .darkAqua {
 //            NSApp.appearance = .init(named: .aqua)
@@ -558,6 +558,15 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
                 }
             }
         }
+        if let item = PDFOfficeMenu?.item(withTitle: NSLocalizedString("Volume Discount", comment: "")) {
+            item.isHidden = true
+        }
+        if let item = PDFOfficeMenu?.item(withTitle: NSLocalizedString("One License for Mac and Windows", comment: "")) {
+            item.isHidden = true
+        }
+        if let item = PDFOfficeMenu?.item(withTitle: NSLocalizedString("Education Discount", comment: "")) {
+            item.isHidden = true
+        }
         
         let fileMenu = mainMenu?.item(at: 1)?.submenu
         var shareItem: NSMenuItem?

+ 2 - 2
PDF Office/PDF Master/Class/Common/Tools/KMTools.swift

@@ -322,10 +322,10 @@ extension KMTools {
     @objc class func openQuickStartStudy() {
         // MARK: -
         // MARK: 内嵌文档需要替换
-        var fileName = "Quick Start Guide"
+        var fileName = NSLocalizedString("Quick Start Guide.pdf", comment: "")
         let fileType = "pdf"
         
-        let path = Bundle.main.path(forResource: fileName, ofType: fileType)
+        let path = Bundle.main.path(forResource: fileName, ofType: "")
         if (path == nil || FileManager.default.fileExists(atPath: path!) == false) {
             KMTools.openURL(url: URL(string: "https://www.pdfreaderpro.com/help"))
             return

+ 1 - 1
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateStateViewController.swift

@@ -45,7 +45,7 @@ class CDSignatureCertificateStateViewController: NSViewController {
             self.imageView.image = NSImage(named: "ImageNameSigntureLargeVerifySuccess")
             
             let cer = signer?.certificates.first
-            let CNStr = cer?.subjectDict["CN"] as! String
+            let CNStr = cer?.subjectDict["CN"] as? String ?? ""
             self.subTitleLabel.stringValue = String(format: NSLocalizedString("Signature is VALID, signed by %@.", comment: ""), CNStr)
             self.subDes1Label.stringValue = String(format: "- %@",NSLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
             self.subDes2Label.stringValue = String(format: "- %@",NSLocalizedString("The signer's identity is valid.", comment: ""))

+ 2 - 1
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCertifyDetailViewController.swift

@@ -158,7 +158,8 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
 
         let contens = NSMutableArray.init()
         for configItem in self.appearanceData!.signatureConfig.contents {
-            if configItem.key == NAME_KEY && !_cert.name.isEmpty {
+            let cerName = _cert.name ?? ""
+            if configItem.key == NAME_KEY && !cerName.isEmpty {
                 let tConfigItem = CPDFSignatureConfigItem.init()
                 tConfigItem.key = configItem.key
                 tConfigItem.value = self.cert?.name

+ 14 - 0
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift

@@ -204,6 +204,20 @@ import Cocoa
         KMAdvertisementManager.manager.fetchDataWithResponseObject { [weak self] data, responseObject, error in
             KMPrint("获取广告数据成功")
             if data != nil {
+                let showMenu = (data?.remoteControl?.showMenuHelpInfo ?? "") == "1"
+                DispatchQueue.main.async {
+                    let mainMenu =  NSApp.mainMenu?.item(at: 0)?.submenu
+                    if let item = mainMenu?.item(withTitle: NSLocalizedString("Volume Discount", comment: "")) {
+                        item.isHidden = !showMenu
+                    }
+                    if let item = mainMenu?.item(withTitle: NSLocalizedString("One License for Mac and Windows", comment: "")) {
+                        item.isHidden = !showMenu
+                    }
+                    if let item = mainMenu?.item(withTitle: NSLocalizedString("Education Discount", comment: "")) {
+                        item.isHidden = !showMenu
+                    }
+                }
+                
                 let content = data!.recommondContent
                 let item = content?.recommondContentPDFPro
                 var infos: [KMAdvertisementItemInfo] = []

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.swift

@@ -173,7 +173,7 @@ class KMHeaderFooterView: BaseXibView, NSTextViewDelegate, NSComboBoxDelegate {
     
     var initialID: String = ""
     
-    var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+    var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
     var password: String = ""
     var type: KMBatchModifyTemplateType = .Use // Replace with the actual type
     var pdfDocument: CPDFDocument? {

+ 3 - 4
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/VC/KMBatchOperateAddHeaderFooterViewController.swift

@@ -288,8 +288,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
     }
     
     @IBAction func buttonClicked_AddHeaderFooter(_ sender: Any) {
- 
-        let filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+        let filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
         var cdocument = self.pdfView?.document
         if isBatchOperation {
             cdocument = CPDFDocument(url: URL(fileURLWithPath: filePath))
@@ -484,8 +483,8 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
         }
     }
     func modify(obj: KMHeaderFooterObject) {
- 
-        var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+         
+        var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
         if self.pdfView?.document.documentURL.path.count ?? 0 > 0 {
             filePath = self.pdfView?.document.documentURL.path ?? ""
         }

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/WindowComtroller/KMHeaderFooterManagerWindowController.swift

@@ -15,7 +15,7 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
     var onlyManagerTemplate: Bool = false
     
     lazy var filePath: String = {
-        var str = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf")
+        var str = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "")
         return str ?? ""
     }()
     var password: String = ""

+ 2 - 0
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.swift

@@ -1177,6 +1177,8 @@ let kConvertFileSavePath = (kTempSavePath?.stringByAppendingPathComponent("conve
                 pagesArray.add(page as Any)
             }
             produceNewPDF(with: pagesArray as! [CPDFPage])
+        } else if 0 == pageRangeBox.indexOfSelectedItem {
+            produceNewPDF(with: pagesArray as! [CPDFPage])
         }
     }
     

BIN
PDF Office/PDF Master/Class/PDFWindowController/MainWindowController/快速教学.pdf


+ 4 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotation+PDFListView.swift

@@ -47,7 +47,10 @@ import Foundation
         if (isHover) {
             let lengths: [CGFloat] = [5.0, 5.0]
             context.setLineDash(phase: 0.0, lengths: lengths)
-            context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            let clipRect = context.boundingBoxOfClipPath // 获取剪辑边界矩形
+            if(clipRect.width >= rect.width || clipRect.height >= rect.height ) {
+                context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            }
         } else {
             context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
         }

+ 4 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFButtonWidgetAnnotation+PDFListView.swift

@@ -59,7 +59,10 @@ import Foundation
         if (isHover) {
             let lengths: [CGFloat] = [5.0, 5.0]
             context.setLineDash(phase: 0.0, lengths: lengths)
-            context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            let clipRect = context.boundingBoxOfClipPath // 获取剪辑边界矩形
+            if(clipRect.width >= rect.width || clipRect.height >= rect.height ) {
+                context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            }
         } else {
             context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
         }

+ 4 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFFreeTextAnnotation+PDFListView.swift

@@ -54,7 +54,10 @@ import Foundation
         if (isHover) {
             let lengths: [CGFloat] = [5.0, 5.0]
             context.setLineDash(phase: 0.0, lengths: lengths)
-            context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            let clipRect = context.boundingBoxOfClipPath // 获取剪辑边界矩形
+            if(clipRect.width >= rect.width || clipRect.height >= rect.height ) {
+                context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            }
         } else {
             context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
         }

+ 5 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFLinkAnnotation+PDFListView.swift

@@ -42,7 +42,11 @@ import Foundation
         if (isHover) {
             let lengths: [CGFloat] = [5.0, 2.0]
             context.setLineDash(phase: 0.0, lengths: lengths)
-            context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            let clipRect = context.boundingBoxOfClipPath // 获取剪辑边界矩形
+            if(clipRect.width >= rect.width || clipRect.height >= rect.height ) {
+                context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            }
+            
         } else {
             context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
         }

+ 4 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFRedactAnnotation+PDFListView.swift

@@ -57,7 +57,10 @@ import Foundation
         if (isHover) {
             let lengths: [CGFloat] = [5.0, 5.0]
             context.setLineDash(phase: 0.0, lengths: lengths)
-            context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            let clipRect = context.boundingBoxOfClipPath // 获取剪辑边界矩形
+            if(clipRect.width >= rect.width || clipRect.height >= rect.height ) {
+                context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+            }
         } else {
             context.stroke(KMRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
         }

+ 3 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Note.swift

@@ -983,6 +983,9 @@ extension KMLeftSideViewController {
                 if let footer = model.footerModel {
                     model.sectionModel?.items.removeObject(footer)
                 }
+                if let cnt = model.sectionModel?.items.count, cnt == 0 {
+                    self.annoListModel?.datas.removeObject(model.sectionModel!)
+                }
                 
                 if self.allAnnotations.contains(anno) {
                     self.allAnnotations.removeObject(anno)

+ 6 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMGeneralAnnotationViewController.swift

@@ -1716,6 +1716,9 @@ let KMColorPickerViewHeight: CGFloat = 64
                     opacity = annotationModel?.opacity() ?? 1
 //                    annotationModel?.setOpacity(opacity)
                     annotationModel?.setColor(textColor)
+                    if (annotationType == .highlight) {
+                        pdfView?.updateHighLightAnnotation(annotationModel?.annotation)
+                    }
                     if let model = self.annotationModel {
                         if (model.annotation == nil || CPDFListViewConfig.defaultManager.isSaveDefault) && self.isannotationMode {
                             if self.annotationType.isMarkup() {
@@ -1856,6 +1859,9 @@ let KMColorPickerViewHeight: CGFloat = 64
         } else {
             annotationModel?.setOpacity(opcity)
         }
+        if (annotationType == .highlight) {
+            pdfView?.updateHighLightAnnotation(annotationModel?.annotation)
+        }
         opacityComboBox.stringValue = "\(Int(opcity * 100))%"
         updateAnnotation(.opacity)
         

+ 3 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/WindowController/KMAnnotationFontWindowController.swift

@@ -247,6 +247,9 @@ class KMFontModel: NSObject {
     
     @IBAction func fontComboBoxAction(_ sender: NSComboBox) {
         let selectItem = self.fontComboBox.indexOfSelectedItem
+        if selectItem < 0 || selectItem >= self.fontComboBox.numberOfItems {
+            return;
+        }
         let resultAtt = NSMutableAttributedString(attributedString: self.fontComboBox.itemObjectValue(at: selectItem) as! NSAttributedString)
         let familyString = resultAtt.string
         let selectIndex = setFontStyle(fontName: familyString, currentStyle: nil)

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Background/Background/View/KMAddBackgroundView.swift

@@ -84,7 +84,7 @@ class KMAddBackgroundView: BaseXibView, NSComboBoxDelegate {
          return bg
     }()
     var originalBackground: KMBackgroundModel = KMBackgroundModel()
-    var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+    var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
     var password: String = ""
     var type: KMBackgroundManagerType = .use
     var pdfDocument: CPDFDocument? {

+ 3 - 3
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Controller/KMBatchOperateAddWatermarkViewController.swift

@@ -332,7 +332,7 @@ class KMBatchOperateAddWatermarkViewController: KMBatchOperateBaseViewController
     }
     
     @IBAction func buttonClicked_addtemplate(_ sender: NSButton) {
-        let filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+        let filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
         var cdocument = self.pdfView?.document
         if isBatchOperation {
             cdocument = CPDFDocument(url: URL(fileURLWithPath: filePath))
@@ -648,7 +648,7 @@ extension KMBatchOperateAddWatermarkViewController {
         }
     }
     func editBackground(_ background: KMBackgroundModel) {
-        var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+        var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
         if self.pdfView?.document.documentURL.path.count ?? 0 > 0 {
             filePath = self.pdfView?.document.documentURL.path ?? ""
         }
@@ -692,7 +692,7 @@ extension KMBatchOperateAddWatermarkViewController {
     
     func editWatermark(_ waterMark: KMWatermarkModel) {
         if !isBackground {
-            var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+            var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
             if self.pdfView?.document.documentURL.path.count ?? 0 > 0 {
                 filePath = self.pdfView?.document.documentURL.path ?? ""
             }

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/New/View/KMWatermarkView.swift

@@ -90,7 +90,7 @@ class KMWatermarkView: BaseXibView, NSTextFieldDelegate, NSComboBoxDelegate, NST
     
     var currentType: Int = 0
     
-    var filePath: String = Bundle.main.path(forResource: "Quick Start Guide", ofType: "pdf") ?? ""
+    var filePath: String = Bundle.main.path(forResource: NSLocalizedString("Quick Start Guide.pdf", comment: ""), ofType: "") ?? ""
     var password: String = ""
     var originalWatermark: KMWatermarkModel = KMWatermarkModel()
     var watermark: KMWatermarkModel = KMWatermarkModel()

+ 2 - 0
PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings

@@ -4166,3 +4166,5 @@
 
 "Note State" = "状态";
 "View Bookmarks" = "查看书签";
+
+"Quick Start Guide.pdf" = "快速教学.pdf";

+ 2 - 0
PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings

@@ -4297,3 +4297,5 @@
 
 "Note State" = "狀態";
 "View Bookmarks" = "查看書籤";
+
+"Quick Start Guide.pdf" = "Quick Start Guide.pdf";

BIN
PDF Office/PDF Master/Third Pard Library/Sparkle/PDFReaderPro_v4.6.2.dmg


+ 5 - 7
PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast.xml

@@ -6,23 +6,21 @@
     <description>Most recent changes with links to updates.</description>
     <language>en</language>
       <item>
-        <title>Version 4.6.2(202410210)</title>
+        <title>Version 4.6.4(202411040)</title>
         <description>
             <![CDATA[
             <ul>
                 <h3>Welcome you to the all-in-one PDF Reader Pro, fully compatible with macOS Sonoma to fulfill all your document needs! it's just like a great Mac app. </h3>
-                <li>Optimize OCR: Convert scanned PDF to editable Word/Excel/PPT, etc with a powerful OCR engine.</li>
-                <li>New Conversion Format: Support rapid conversion of PDF documents into JSON format.</li>
-                <li>New White-out PDF: Hide specific text, images, or sections on the PDF page.</li>
+                <li>Enhanced Document Loading Stability: Addressing potential crashes or unresponsiveness in certain scenarios when opening documents.</li>
                 <li>Optimizations improve stability and compatibility and enhance user experience.</li>
                 <h4>NOTE: The latest version is only compatible with macOS 11.0 and above. MacOS 10+ users should update with caution!</h4>
                 <h4>PDF Reader Pro powered by ComPDFKit. Have any feedback, comments, or issues? Please drop a line at support@pdfreaderpro.com</h4>
             </ul>
             ]]>
         </description>
-        <pubDate>Mon, 21 Oct 2024 15:20:11 +0000</pubDate>
-        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.2.dmg" sparkle:version="202410210" length="387747375" type="application/octet-stream" sparkle:dsaSignature="MEUCIQDJoKNQ/1J+4C3hBIEV5Nrfght/CdjFF5FbPmlJj4aJKAIgTa69DiLiRMEw
-RuS7/di/ha3QplfQF/OIkDidXM/AqZE="/>
+        <pubDate>Mon, 4 Nov 2024 15:20:11 +0000</pubDate>
+        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.4.dmg" sparkle:version="202411040" length="389447473" type="application/octet-stream" sparkle:dsaSignature="MEYCIQC/0Xue526tNtT0fFRE6T3InGX0KBBlFYGZoSaS2OAxAwIhAKmzrRrD8xBn
+5TB+fBx8wIrEssvQn0z4fJ3LwVTswOlM"/>
       </item>
   </channel>
 </rss>

+ 5 - 7
PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast_zh_Hans.xml

@@ -6,23 +6,21 @@
     <description>Most recent changes with links to updates.</description>
     <language>en</language>
       <item>
-        <title>Version 4.6.2(202410210)</title>
+        <title>Version 4.6.4(202411040)</title>
         <description>
             <![CDATA[
             <ul>
                 <h3>PDF Reader Pro全面兼容macOS Sonoma,强大的PDF编辑工具全面提升您的效率!</h3>
-                <li>優化OCR功能:支持將掃描版PDF轉檔為可編輯的Word/Excel/PPT等其他格式。</li>
-                <li>新增轉檔格式:支持快速將PDF文檔轉換為JSON格式。</li>
-                <li>新增塗白PDF:隱藏PDF頁面上的特定文本、圖像或部分。</li>
+                <li>优化文档打开稳定性:解决了部分情况下打开文档时可能导致的闪退或者无响应问题。</li>
                 <li>其他细节优化提高app稳定性和兼容性,提升用户体验。</li>
                 <h4>注意:最新版本仅兼容MacOS 11.0以上的系统,MacOS 10+ 用户谨慎更新。</h4>
                 <h4>PDF Reader Pro由ComPDFKit提供技术支持。您的任何建议、反馈都将成为我们优化PDF Reader Pro的最佳动力,请随时联系:support@pdfreaderpro.com</h4>
             </ul>
             ]]>
         </description>
-        <pubDate>Mon, 21 Oct 2024 15:20:11 +0000</pubDate>
-        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.2.dmg" sparkle:version="202410210" length="387747375" type="application/octet-stream" sparkle:dsaSignature="MEUCIQDJoKNQ/1J+4C3hBIEV5Nrfght/CdjFF5FbPmlJj4aJKAIgTa69DiLiRMEw
-RuS7/di/ha3QplfQF/OIkDidXM/AqZE="/>
+        <pubDate>Mon, 4 Nov 2024 15:20:11 +0000</pubDate>
+        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.4.dmg" sparkle:version="202411040" length="389447473" type="application/octet-stream" sparkle:dsaSignature="MEYCIQC/0Xue526tNtT0fFRE6T3InGX0KBBlFYGZoSaS2OAxAwIhAKmzrRrD8xBn
+5TB+fBx8wIrEssvQn0z4fJ3LwVTswOlM"/>
       </item>
   </channel>
 </rss>

+ 5 - 7
PDF Office/PDF Master/Third Pard Library/Sparkle/pdfreaderprocast_zh_Hant.xml

@@ -6,23 +6,21 @@
     <description>Most recent changes with links to updates.</description>
     <language>en</language>
       <item>
-        <title>Version 4.6.2(202410210)</title>
+        <title>Version 4.6.4(202411040)</title>
         <description>
             <![CDATA[
             <ul>
                 <h3>PDF Reader Pro全面兼容macOS Sonoma,强大的PDF編輯工具全面提升您的效率!</h3>
-                <li>优化OCR功能:支持将扫描版PDF转档为可编辑的Word/Excel/PPT等其他格式。</li>
-                <li>新增转档格式:支持快速将PDF文档转换为JSON格式。</li>
-                <li>新增涂白PDF:隐藏PDF页面上的特定文本、图像或部分。</li>
+                <li> 優化文檔打開穩定性:解決了部分情況下打開文檔時可能導致的閃退或者無響應問題。</li>
                 <li>其他細節優化提升app穩定性和相容性,提升使用者體驗。</li>
                 <h4>注意:最新版本僅支援 MacOS 11.0 以上的系統,MacOS 10+ 用戶請慎重更新。</h4>
                 <h4>PDF Reader Pro由ComPDFKit提供技術支持。您的任何建議,反饋都將成爲我們優化PDF Reader Pro的最佳動力,請隨時聯係:support@pdfreaderpro.com</h4>
             </ul>
             ]]>
         </description>
-        <pubDate>Mon, 21 Oct 2024 15:20:11 +0000</pubDate>
-        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.2.dmg" sparkle:version="202410210" length="387747375" type="application/octet-stream" sparkle:dsaSignature="MEUCIQDJoKNQ/1J+4C3hBIEV5Nrfght/CdjFF5FbPmlJj4aJKAIgTa69DiLiRMEw
-RuS7/di/ha3QplfQF/OIkDidXM/AqZE="/>
+        <pubDate>Mon, 4 Nov 2024 15:20:11 +0000</pubDate>
+        <enclosure url="https://www.pdfreaderpro.com/downloads/PDFReaderPro_v4.6.4.dmg" sparkle:version="202411040" length="389447473" type="application/octet-stream" sparkle:dsaSignature="MEYCIQC/0Xue526tNtT0fFRE6T3InGX0KBBlFYGZoSaS2OAxAwIhAKmzrRrD8xBn
+5TB+fBx8wIrEssvQn0z4fJ3LwVTswOlM"/>
       </item>
   </channel>
 </rss>

+ 13 - 4
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -769,6 +769,9 @@
 		9F3A48C82C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */; };
 		9F3A48C92C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */; };
 		9F3A48CA2C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */; };
+		9F3BCDC82CCB749400BDAB67 /* 快速教学.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */; };
+		9F3BCDC92CCB749400BDAB67 /* 快速教学.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */; };
+		9F3BCDCA2CCB749400BDAB67 /* 快速教学.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */; };
 		9F3D818729A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
 		9F3D818829A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
 		9F3D818929A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
@@ -6280,6 +6283,7 @@
 		9F39B9432A661ED500930ACA /* KMHomeScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMHomeScrollView.swift; sourceTree = "<group>"; };
 		9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPurchaseEmbeddedWindowController.swift; sourceTree = "<group>"; };
 		9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPurchaseEmbeddedWindowController.xib; sourceTree = "<group>"; };
+		9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "快速教学.pdf"; sourceTree = "<group>"; };
 		9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignButton.swift; sourceTree = "<group>"; };
 		9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignButton.xib; sourceTree = "<group>"; };
 		9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+KMExtensions.swift"; sourceTree = "<group>"; };
@@ -8783,6 +8787,7 @@
 			isa = PBXGroup;
 			children = (
 				BBB2ACDF2B5943F600098854 /* Quick Start Guide.pdf */,
+				9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */,
 				899700E628F3E4D3009AF911 /* MainWindowController.swift */,
 				899700E728F3E4D3009AF911 /* MainWindowController.xib */,
 				BB78EAA92B561F9700121691 /* KMFullScreenWindow.swift */,
@@ -16046,6 +16051,7 @@
 				ADBC376129CC637900D93208 /* KMReadModelView.xib in Resources */,
 				ADDF83832B391A5D00A81A4E /* DSignatureSaveTypeViewController.xib in Resources */,
 				BBD8EE992B8EC86A00EB05FE /* AutoSaveFileItem.xib in Resources */,
+				9F3BCDC82CCB749400BDAB67 /* 快速教学.pdf in Resources */,
 				AD1FE8382BD7C98300AA4A9B /* KMPDFPrintManageWindowController.xib in Resources */,
 				AD1D480B2AFB18DA007AC1F0 /* KMCompressWIndowControllerNew.xib in Resources */,
 				9F1F82DD292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
@@ -16652,6 +16658,7 @@
 				ADD56F5B2BB3F48300E87ED9 /* KMFreeTextStylesViewController.xib in Resources */,
 				9F5752ED2B58FF73005DC303 /* KMAnnotationFromViewController.xib in Resources */,
 				BB04FD112B206F4000D80F7B /* KMPlanViewController.xib in Resources */,
+				9F3BCDC92CCB749400BDAB67 /* 快速教学.pdf in Resources */,
 				BBB376AB2B10A7FD009539CC /* a_3a.png in Resources */,
 				BBD14F5B2CDA02640077D52E /* KMWatermarkToolbarView.xib in Resources */,
 				F3EF17A02CD5FF8D0007D364 /* KMNThumnailHeaderViewController.xib in Resources */,
@@ -17021,6 +17028,8 @@
 				9F88108A2B564E9700F69815 /* KMAnnotationButtonWidgetOptionsViewController.xib in Resources */,
 				BB5A9D382CB6520100F64C1F /* KMHomeOpenView.xib in Resources */,
 				AD58F4072B14954B00299EE0 /* KMCompareTextHeaderView.xib in Resources */,
+				9F3BCDCA2CCB749400BDAB67 /* 快速教学.pdf in Resources */,
+				ADAFDA872AEB804B00F084BC /* KMQucikToolCollectionViewItem.xib in Resources */,
 				9FBA0F0329015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
 				BB8810BD2B4F872500AFA63E /* KMVerificationWindowController.xib in Resources */,
 				BB853CB02AF8FA67009C20C1 /* KMHeaderFooterManagerWindowController.xib in Resources */,
@@ -22385,7 +22394,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 202410250;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;
@@ -22554,7 +22563,7 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Class/PDFTools/Convert/Library",
 				);
 				MACOSX_DEPLOYMENT_TARGET = 11.0;
-				MARKETING_VERSION = 1.3.0;
+				MARKETING_VERSION = 4.6.3;
 				OTHER_LDFLAGS = "-ObjC";
 				OTHER_SWIFT_FLAGS = "-DVERSION_DMG";
 				PRODUCT_BUNDLE_IDENTIFIER = com.brother.pdfreaderprofree.mac;
@@ -22579,7 +22588,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 202410250;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;
@@ -22746,7 +22755,7 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Class/PDFTools/Convert/Library",
 				);
 				MACOSX_DEPLOYMENT_TARGET = 11.0;
-				MARKETING_VERSION = 1.3.0;
+				MARKETING_VERSION = 4.6.3;
 				OTHER_LDFLAGS = "-ObjC";
 				OTHER_SWIFT_FLAGS = "-DVERSION_DMG";
 				PRODUCT_BUNDLE_IDENTIFIER = com.brother.pdfreaderprofree.mac;