Browse Source

【综合】合并代码

tangchao 6 months ago
parent
commit
846c745f2a
59 changed files with 2664 additions and 593 deletions
  1. 2 1
      PDF Office/PDF Master/AppDelegate.swift
  2. 3 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift
  3. 192 0
      PDF Office/PDF Master/Class/Analytics/KMAnalytics+KMExtensions.swift
  4. 10 0
      PDF Office/PDF Master/Class/Analytics/KMAnalytics.swift
  5. 38 0
      PDF Office/PDF Master/Class/Appearance/Color.xcassets/Purchase/KMPurchaseBoxColor1.colorset/Contents.json
  6. 38 0
      PDF Office/PDF Master/Class/Appearance/Color.xcassets/Purchase/KMPurchase_99A6B2.colorset/Contents.json
  7. 5 1
      PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateLeftViewController.swift
  8. 14 1
      PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateConvertViewController.swift
  9. 7 3
      PDF Office/PDF Master/Class/GuideInfo/KMCouponDueWindowController.swift
  10. 7 3
      PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.swift
  11. 32 9
      PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift
  12. 21 1
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.swift
  13. 4 2
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMToolCompareWindowController.swift
  14. 7 1
      PDF Office/PDF Master/Class/PDFTools/Merge/MergeNew/KMMergeWindowController.swift
  15. 80 12
      PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift
  16. 1 0
      PDF Office/PDF Master/Class/PDFTools/PageEdit/Window/KMPDFEditWindowController.swift
  17. 9 3
      PDF Office/PDF Master/Class/PDFTools/Print/PrintHelper/PrintManage/KMPDFPrintManageWindowController.m
  18. 3 1
      PDF Office/PDF Master/Class/PDFTools/RemovePassword/New/View/KMRemovePasswordView.swift
  19. 3 1
      PDF Office/PDF Master/Class/PDFTools/RemovePassword/VC/KMBatchOperateRemovePasswordViewController.swift
  20. BIN
      PDF Office/PDF Master/Class/PDFWindowController/PDFSDK/ComPDFKit.framework/Versions/A/ComPDFKit
  21. 0 4
      PDF Office/PDF Master/Class/PDFWindowController/PDFSDK/ComPDFKit.framework/Versions/A/_CodeSignature/CodeResources
  22. 7 4
      PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMNoteTableViewCell.swift
  23. 21 3
      PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/Base/KMPDFThumbViewBaseController.swift
  24. 2 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m
  25. 8 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationSelectLinkViewController.swift
  26. 6 2
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/PageDisplay/KMPageDisplayPropertiesViewController.swift
  27. 2 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/KMRightSideViewController.swift
  28. 8 1
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.m
  29. 8 4
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/StampList/KMAnnotationStampViewController.swift
  30. 3 1
      PDF Office/PDF Master/Class/PDFWindowController/TabWindowController/KMTabbingHintWindowController.swift
  31. 3 1
      PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarViewController.swift
  32. 70 10
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift
  33. 8 2
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+MenuAction.swift
  34. 22 2
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift
  35. 6 2
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift
  36. 5 1
      PDF Office/PDF Master/Class/Purchase/DMG/KMEmbeddedPaymentPopWC.swift
  37. 6 0
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.h
  38. 555 45
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.m
  39. 2 2
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.xib
  40. 585 387
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseEmbeddedWindowController.swift
  41. 90 27
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseEmbeddedWindowController.xib
  42. 4 3
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseFirstTrialWindowController.swift
  43. 3 2
      PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseLimitWindowController.swift
  44. 4 0
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m
  45. 9 5
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationWindowController.m
  46. 32 37
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/KMDMGProductsManager.swift
  47. 58 0
      PDF Office/PDF Master/Strings/ar.lproj/Localizable.strings
  48. 58 0
      PDF Office/PDF Master/Strings/de.lproj/Localizable.strings
  49. 61 0
      PDF Office/PDF Master/Strings/en.lproj/Localizable.strings
  50. 58 0
      PDF Office/PDF Master/Strings/es.lproj/Localizable.strings
  51. 61 0
      PDF Office/PDF Master/Strings/fr.lproj/Localizable.strings
  52. 58 0
      PDF Office/PDF Master/Strings/it.lproj/Localizable.strings
  53. 58 0
      PDF Office/PDF Master/Strings/ja.lproj/Localizable.strings
  54. 58 0
      PDF Office/PDF Master/Strings/pl.lproj/Localizable.strings
  55. 58 0
      PDF Office/PDF Master/Strings/pt.lproj/Localizable.strings
  56. 58 0
      PDF Office/PDF Master/Strings/ru.lproj/Localizable.strings
  57. 61 1
      PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings
  58. 60 0
      PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings
  59. 12 6
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

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

@@ -718,8 +718,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, iRateDelegate{
 //        if tWorkSpace.open(url!) == false {
 //            tWorkSpace.open(url!)
 //        }
-        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.mac.product_2")
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_2")
         embeddedWC.showWindow(nil)
+        embeddedWC.window?.center()
 #endif
     }
     

+ 3 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift

@@ -62,8 +62,9 @@ class AIHeaderView: NSView, NibLoadable {
 #if VERSION_DMG
 //            let url = URL(string: AIProduct_Link)
 //            NSWorkspace.shared.open(url!)
-            let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.ai.product_1")
-            embeddedWC.showWindow(nil)
+            let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.ai.product_1")
+            embeddedWC.showWindow(self)
+            embeddedWC.window?.center()
 #else
             AIPurchaseWindowController.currentWC().showWindow(nil)
 #endif

+ 192 - 0
PDF Office/PDF Master/Class/Analytics/KMAnalytics+KMExtensions.swift

@@ -0,0 +1,192 @@
+//
+//  KMAnalytics+KMExtensions.swift
+//  PDF Reader Pro
+//
+//  Created by User-Tangchao on 2024/9/6.
+//
+
+import Foundation
+
+// 数据埋点 Category 参数
+extension KMAnalytics.Parameter.Category {
+    public static let purchase_Tools        = "Purchase_Tools"
+    public static let purchase_PageEdit     = "Purchase_PageEdit"
+    public static let purchase_Editor       = "Purchase_Editor"
+    public static let purchase_Converter    = "Purchase_Converter"
+    
+    public static let purchase_Form         = "Purchase_Form"
+    public static let purchase_Sign         = "Purchase_Sign"
+    public static let purchase_EditPDF      = "Purchase_EditPDF"
+    public static let purchase_Redact       = "Purchase_Redact"
+    
+    public static let purchase_OCR          = "Purchase_OCR"
+    public static let purchase_PageDisplay  = "Purchase_PageDisplay"
+    public static let purchase_Others       = "Purchase_Others"
+}
+
+@objc extension NSViewController {
+    private static var _eventNameKey = "KMEventNameKey"
+    var kEventName: String? {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventNameKey) as? String
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventNameKey, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)
+        }
+    }
+    
+    private static var _eventParamsKey = "KMEventParamsKey"
+    var kEventParams: [String : Any]? {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventParamsKey) as? [String : Any]
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventParamsKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
+        }
+    }
+    
+    private static var _eventTagKey = "KMEventTagKey"
+    var kEventTag: Int {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventTagKey) as? Int ?? 0
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventTagKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
+        }
+    }
+    
+    @objc func trackEvent_buyNow_tool(type: CAnnotationType, index: Int) {
+        KMAnalytics._trackEvent_buyNow_tool(type: type, index: index, appTarget: .all)
+    }
+    
+    // MARK: - Track Events Basic
+    
+    @objc func trackEvent(eventName eveN: String, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        KMAnalytics.trackEvent(eventName: eveN, parameters: params, platform: platform, appTarget: .all)
+    }
+    
+    @objc func trackEvent_dmg(eventName eveN: String, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        KMAnalytics.trackEvent(eventName: eveN, parameters: params, platform: platform, appTarget: .dmg)
+    }
+    
+    @objc func trackEvent_free(eventName eveN: String, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        KMAnalytics.trackEvent(eventName: eveN, parameters: params, platform: platform, appTarget: .free)
+    }
+    
+    @objc func trackEvent_pro(eventName eveN: String, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        KMAnalytics.trackEvent(eventName: eveN, parameters: params, platform: platform, appTarget: .pro)
+    }
+    
+    @objc func trackEvent_appstore(eventName eveN: String, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        KMAnalytics.trackEvent(eventName: eveN, parameters: params, platform: platform, appTarget: [.free, .pro])
+    }
+    
+    func clearEventData() {
+        self.kEventName = nil
+        self.kEventTag = 0
+        self.kEventParams = nil
+    }
+}
+
+@objc extension NSWindowController {
+    private static var _eventNameKey = "KMEventNameKey"
+    var kEventName: String? {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventNameKey) as? String
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventNameKey, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)
+        }
+    }
+    
+    private static var _eventParamsKey = "KMEventParamsKey"
+    var kEventParams: [String : Any]? {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventParamsKey) as? [String : Any]
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventParamsKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
+        }
+    }
+    
+    private static var _eventTagKey = "KMEventTagKey"
+    var kEventTag: Int {
+        get {
+            return objc_getAssociatedObject(self, &Self._eventTagKey) as? Int ?? 0
+        }
+        set {
+            objc_setAssociatedObject(self, &Self._eventTagKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
+        }
+    }
+    
+    // MARK: - Track Events Basic
+    
+    @objc func trackEvent(eventName eveN: String?, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        if let data = eveN {
+            KMAnalytics.trackEvent(eventName: data, parameters: params, platform: platform, appTarget: .all)
+        }
+    }
+    
+    @objc func trackEvent_dmg(eventName eveN: String?, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        if let data = eveN {
+            KMAnalytics.trackEvent(eventName: data, parameters: params, platform: platform, appTarget: .dmg)
+        }
+    }
+    
+    @objc func trackEvent_free(eventName eveN: String?, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        if let data = eveN {
+            KMAnalytics.trackEvent(eventName: data, parameters: params, platform: platform, appTarget: .free)
+        }
+    }
+    
+    @objc func trackEvent_pro(eventName eveN: String?, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        if let data = eveN {
+            KMAnalytics.trackEvent(eventName: data, parameters: params, platform: platform, appTarget: .pro)
+        }
+    }
+    
+    @objc func trackEvent_appstore(eventName eveN: String?, params: [String : Any]?, platform: KMAnalyticsPlatform) {
+        if let data = eveN {
+            KMAnalytics.trackEvent(eventName: data, parameters: params, platform: platform, appTarget: [.free, .pro])
+        }
+    }
+    
+    func clearEventData() {
+        self.kEventName = nil
+        self.kEventTag = 0
+        self.kEventParams = nil
+    }
+}
+
+// MARK: - KMAnalytics Private Methods
+
+extension KMAnalytics {
+    fileprivate static func _trackEvent_buyNow_tool(type: CAnnotationType, index: Int, platform: KMAnalyticsPlatform = .firebase, appTarget: AppTarget = [.free]) {
+        if let eventName = KMBuyNowEventNameFromCAnnotationType(type, index: index) {
+            let params: [String : Any]? = [KMAnalytics.Parameter.categoryKey : "Purchase_Tools", KMAnalytics.Parameter.labelKey : "SubTbr_Tools"]
+            KMAnalytics.trackEvent(eventName: eventName, parameters: params, platform: platform, appTarget: appTarget)
+        }
+    }
+}
+
+// MARK: - Pulick Methods
+
+public func KMBuyNowEventNameFromCAnnotationType(_ type: CAnnotationType, index: Int) -> String? {
+    if type == .link {
+        if index == 2 {
+            return "Reading_WebsiteLink_BuyNow"
+        } else if index == 3 {
+            return "Reading_EmailLink_BuyNow"
+        }
+    } else if type == .stamp {
+        if index == 2 {
+            return "Reading_DynamicStamp_BuyNow"
+        } else if index == 3 {
+            return "Reading_CustomStamp_BuyNow"
+        }
+    } else if type == .signature {
+        return "Reading_Signature_BuyNow"
+    }
+    return nil
+}
+

+ 10 - 0
PDF Office/PDF Master/Class/Analytics/KMAnalytics.swift

@@ -77,6 +77,16 @@ extension KMAnalytics.Parameter {
     // 配置
     static func configure() {
 #if DEBUG
+#if VERSION_FREE
+#if VERSION_DMG
+    let appSecret = "fb9d37aa-e3f2-4969-bd06-f65ce529a565"
+#else
+    let appSecret = "8c08296d-ca5c-44da-b68a-b4382f119b1f"
+#endif
+#else
+    let appSecret = "54212f10-3ac9-42d9-96c0-5387f4b78d30"
+#endif
+        AppCenter.start(withAppSecret: appSecret, services: [Analytics.self, Crashes.self])
 #else
 // #if VERSION_DMG
 //        AppCenter.start(withAppSecret: "416b8e45-69bd-4a16-8fec-b5206e913c4a", services: [Analytics.self, Crashes.self])

+ 38 - 0
PDF Office/PDF Master/Class/Appearance/Color.xcassets/Purchase/KMPurchaseBoxColor1.colorset/Contents.json

@@ -0,0 +1,38 @@
+{
+  "colors" : [
+    {
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "0.500",
+          "blue" : "0x62",
+          "green" : "0x3C",
+          "red" : "0x27"
+        }
+      },
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "0.500",
+          "blue" : "0xDB",
+          "green" : "0x7F",
+          "red" : "0x4E"
+        }
+      },
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 38 - 0
PDF Office/PDF Master/Class/Appearance/Color.xcassets/Purchase/KMPurchase_99A6B2.colorset/Contents.json

@@ -0,0 +1,38 @@
+{
+  "colors" : [
+    {
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "0xB2",
+          "green" : "0xA6",
+          "red" : "0x99"
+        }
+      },
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "0x85",
+          "green" : "0x7F",
+          "red" : "0x7E"
+        }
+      },
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 5 - 1
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateLeftViewController.swift

@@ -166,7 +166,11 @@ class KMBatchOperateLeftViewController: NSViewController,NSTableViewDelegate,NST
 #if VERSION_FREE
         if !IAPProductsManager.default().isAvailableAllFunction() {
             if files.count >= 1 {
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                if type == .CreatePDF {
+                    winC?.kEventName = "Onbrd_ImagetoPDF_BuyNow"
+                }
+                winC?.showWindow(nil)
                 return
             }
         }

+ 14 - 1
PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateConvertViewController.swift

@@ -621,7 +621,20 @@ class KMBatchOperateConvertViewController: KMBatchOperateBaseViewController,NSCo
                 limitWC.window?.center()
                 limitWC.showWindow(nil)
             }else{
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                if let viewC = self.view.window?.contentViewController, viewC.kEventTag == 1 {
+                    winC?.kEventName = "Onbrd_ConvertPDF_BuyNow"
+                } else {
+                    if convertType == .WordStandard || convertType == .WordAdvance {
+                        winC?.kEventName = "Onbrd_PDFtoWord_BuyNow"
+                    } else if convertType == .Excel {
+                        winC?.kEventName = "Onbrd_PDFtoExcel_BuyNow"
+                    } else if convertType == .PowerPoint {
+                        winC?.kEventName = "Onbrd_PDFtoPPT_BuyNow"
+                    }
+                }
+                
+                winC?.showWindow(nil)
             }
 #else
             if IAPProductsManager.default().isAvailableAllFunction() {

+ 7 - 3
PDF Office/PDF Master/Class/GuideInfo/KMCouponDueWindowController.swift

@@ -100,9 +100,13 @@ class KMCouponDueWindowController: NSWindowController {
             return
         }
         
-        let newURL = NSURL(string: string+"&coupon_code="+self.couponCode)
-
-        NSWorkspace.shared.open(newURL! as URL)
+//        let newURL = NSURL(string: string+"&coupon_code="+self.couponCode)
+//
+//        NSWorkspace.shared.open(newURL! as URL)
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_3")
+        embeddedWC.couponCode = self.couponCode
+        embeddedWC.showWindow(nil)
+        embeddedWC.window?.center()
         
         FMTrackEventManager.defaultManager.trackEvent(event: "PUW", withProperties: ["PUW_Btn" : "Btn_PUW_TrialExpireOffer_Buy"])
     }

+ 7 - 3
PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.swift

@@ -96,11 +96,15 @@ class KMFunctionGuideWindowController: NSWindowController {
                     if controller.currentNameKEY == controller.AIInfoKey {
 //                        var url = URL(string: AIProduct_Link)!
 //                        NSWorkspace.shared.open(url)
-                        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.ai.product_1")
+                        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.ai.product_1")
                         embeddedWC.showWindow(nil)
+                        embeddedWC.window?.center()
                     } else if controller.currentNameKEY == controller.MeasureInfoKey {
-                        var url = URL(string: Store_Link)!
-                        NSWorkspace.shared.open(url)
+//                        var url = URL(string: Store_Link)!
+//                        NSWorkspace.shared.open(url)
+                        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_1")
+                        embeddedWC.showWindow(nil)
+                        embeddedWC.window?.center()
                     } else {
                         KMPrint("请配置Key...")
                     }

+ 32 - 9
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -115,6 +115,7 @@ extension KMHomeViewController {
             break
         case .ConvertPDF:
             FMTrackEventManager.defaultManager.trackEvent(event: "Onbrd", withProperties: ["HP_Tools": "Convert PDF"])
+            self.kEventTag = 1
             fastTool_ConvertPDF()
             break
         case .ImageToPDF:
@@ -990,7 +991,9 @@ extension KMHomeViewController {
     func fastTool_OCR() {   // OCR
 //        KMOCRWindowController.openFiles(window: self.view.window!)
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_OCR_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         let openPanel = NSOpenPanel()
@@ -1082,6 +1085,9 @@ extension KMHomeViewController {
             }
             if arr.count > 0 {
                 baseWindowController.checkNeedPasswordSwitchToOperateType(operateType: .Convert, files: arr)
+                
+                baseWindowController.window?.contentViewController?.kEventTag = self.kEventTag
+                self.kEventTag = 0
             }
             baseWindowController.switchToConvertType(convertType: type)
         }
@@ -1192,6 +1198,7 @@ extension KMHomeViewController {
                 self.view.window?.endSheet((self.mergeWindowController!.window)!)
             }
                 
+            self.mergeWindowController?.kEventTag = 1
             self.view.window?.beginSheet(self.mergeWindowController!.window!)
         }
     }
@@ -1308,7 +1315,9 @@ extension KMHomeViewController {
     
     func fastTool_FileCompare() {    // 文件对比
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_Compare_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         let openPanel = NSOpenPanel()
@@ -1412,7 +1421,9 @@ extension KMHomeViewController {
     func fastTool_Watermark() { // 水印
 //        KMBatchWindowController.openFile(nil, .Watermark)
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_Watermard_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         
@@ -1458,7 +1469,9 @@ extension KMHomeViewController {
     func fastTool_Background() {    // 背景
 //        KMBatchWindowController.openFile(nil, .Background)
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_Background_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 
@@ -1504,7 +1517,9 @@ extension KMHomeViewController {
     func fastTool_HeaderAndFooter() {   // 页眉页脚
 //        KMBatchWindowController.openFile(nil, .HeaderAndFooter)
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_HeaderFooter_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 
@@ -1551,7 +1566,9 @@ extension KMHomeViewController {
     func fastTool_BatesCode() { // 贝茨码
 //        KMBatchWindowController.openFile(nil, .BatesCode)
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_Bates_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 
@@ -1805,7 +1822,9 @@ extension KMHomeViewController {
     
     func fastTool_printBooklet() {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_PrintBooklet_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 
@@ -1843,7 +1862,9 @@ extension KMHomeViewController {
     
     func fastTool_printPoster() {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_PrintPoster_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 
@@ -1881,7 +1902,9 @@ extension KMHomeViewController {
     
     func fastTool_printMultple() {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_PrintMultiple_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 

+ 21 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.swift

@@ -947,7 +947,27 @@ let kConvertFileSavePath = (kTempSavePath?.stringByAppendingPathComponent("conve
             limitWC.window?.center()
             limitWC.showWindow(nil)
         } else {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if convertType == .Word || convertType == .AdvancedWord {
+                winC?.kEventName = "Reading_PDFtoWord_BuyNow"
+            } else if convertType == .Excel {
+                winC?.kEventName = "Reading_PDFtoExcel_BuyNow"
+            } else if convertType == .PPT {
+                winC?.kEventName = "Reading_PDFtoPPT_BuyNow"
+            } else if convertType == .RTF {
+                winC?.kEventName = "Reading_PDFtoRTF_BuyNow"
+            } else if convertType == .CSV {
+                winC?.kEventName = "Reading_PDFtoCSV_BuyNow"
+            } else if convertType == .Text {
+                winC?.kEventName = "Reading_PDFtoText_BuyNow"
+            }
+            if convertType == .JPEG || convertType == .JPG || convertType == .PNG || convertType == .GIF || convertType == .TIFF || convertType == .TGA || convertType == .BMP || convertType == .JP2 {
+                winC?.kEventName = "Reading_PDFtoImage_BuyNow"
+            }
+//            else if convertType == . {
+//                winC?.kEventName = "Reading_PDFtoExcel_BuyNow"
+//            }
+            winC?.showWindow(nil)
         }
 #else
         if IAPProductsManager.default().isAvailableAllFunction() {

+ 4 - 2
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMToolCompareWindowController.swift

@@ -239,8 +239,9 @@ var currentWindowController: KMToolCompareWindowController? = nil
 #if VERSION_DMG
 //        var url = URL(string: Store_Link + "?utm_source=MacAppDmg&utm_campaign=StoreLink&utm_medium=PdfStore")
 //        NSWorkspace.shared.open(url!)
-        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.mac.product_1")
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_1")
         embeddedWC.showWindow(nil)
+        embeddedWC.window?.center()
 #endif
     }
     
@@ -249,8 +250,9 @@ var currentWindowController: KMToolCompareWindowController? = nil
 //        var url = URL(string: Store_Link + "?product_code=product_2&utm_source=MacAppDmg&utm_campaign=OfficeStoreLink&utm_medium=PdfOfficeStore")
 //        NSWorkspace.shared.open(url!)
 //        FMTrackEventManager.defaultManager.trackOnceEvent(event: "PUW", withProperties: ["PUW_Btn":"Btn_PUW_PDFtoOffice_Buy"])
-        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.mac.product_2")
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_2")
         embeddedWC.showWindow(nil)
+        embeddedWC.window?.center()
 #endif
     }
     

+ 7 - 1
PDF Office/PDF Master/Class/PDFTools/Merge/MergeNew/KMMergeWindowController.swift

@@ -97,7 +97,13 @@ extension KMMergeWindowController {
         }
         
         if !IAPProductsManager.default().isAvailableAllFunction() && (files.count >= 2 || size > 20 * 1024 * 1024) {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_Merge_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Merge_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         

+ 80 - 12
PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift

@@ -522,7 +522,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func deleteAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Delete_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -583,7 +589,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func rightRotateAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Rotate_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -655,7 +667,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func extractAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Extract_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -675,7 +693,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func replaceAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Replace_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -711,7 +735,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func splitAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Split_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -757,7 +787,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
 //            return;
 //        }
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Split_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -836,7 +872,9 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func reverseAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Reverse_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         
@@ -1125,7 +1163,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     @objc func item_insertCustomPage(sender: NSMenuItem?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertBlankPage_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -1180,7 +1224,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     @objc func item_insertFromImage(sender: NSMenuItem?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertImage_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -1233,7 +1283,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     @objc func item_insertFromClipboard(sender: NSMenuItem?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertClipboard_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
 //        self.choosePositionWindow {[weak self] index in
@@ -1253,7 +1309,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     @objc func item_insertFromScanner(sender: NSMenuItem?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertSacnner_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -1325,7 +1387,13 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     func extractSelectPageItemAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Extract_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         

+ 1 - 0
PDF Office/PDF Master/Class/PDFTools/PageEdit/Window/KMPDFEditWindowController.swift

@@ -18,6 +18,7 @@ class KMPDFEditWindowController: KMBaseWindowController {
         
         if let document = CPDFDocument(url: URL(fileURLWithPath: filepath)) {
             self._viewController = KMPDFEditViewController(document)
+            self._viewController?.kEventTag = 1
             self._viewController?.documentEditedCallback = { [weak self] _ in
                 self?._isEdited = true
             }

+ 9 - 3
PDF Office/PDF Master/Class/PDFTools/Print/PrintHelper/PrintManage/KMPDFPrintManageWindowController.m

@@ -600,7 +600,9 @@ typedef NS_ENUM(NSUInteger, kPageSelectStyle) {
 {
     if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
         [self close];
-        [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+        NSWindowController *winC = [KMPurchaseCompareWindowController sharedInstance];
+        winC.kEventName = @"MenuBar_PrintPoster_BuyNow";
+        [winC showWindow:nil];
         return;
     }
     
@@ -617,7 +619,9 @@ typedef NS_ENUM(NSUInteger, kPageSelectStyle) {
 {
     if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
         [self close];
-        [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+        NSWindowController *winC = [KMPurchaseCompareWindowController sharedInstance];
+        winC.kEventName = @"MenuBar_PrintMultiple_BuyNow";
+        [winC showWindow:nil];
         return;
     }
     [self close];
@@ -633,7 +637,9 @@ typedef NS_ENUM(NSUInteger, kPageSelectStyle) {
 {
     if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
         [self close];
-        [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+        NSWindowController *winC = [KMPurchaseCompareWindowController sharedInstance];
+        winC.kEventName = @"MenuBar_PrintBooklet_BuyNow";
+        [winC showWindow:nil];
         return;
     }
     

+ 3 - 1
PDF Office/PDF Master/Class/PDFTools/RemovePassword/New/View/KMRemovePasswordView.swift

@@ -71,7 +71,9 @@ extension KMRemovePasswordView {
     
     @IBAction func removeButtonAction(_ sender: Any) {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_RemoveSecurity_BuyNow"
+            winC?.showWindow(nil)
             return
         }
 

+ 3 - 1
PDF Office/PDF Master/Class/PDFTools/RemovePassword/VC/KMBatchOperateRemovePasswordViewController.swift

@@ -121,7 +121,9 @@ class KMBatchOperateRemovePasswordViewController: KMBatchOperateBaseViewControll
             return;
         }
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Onbrd_Security_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         //MARK: 判断是否能用pro功能

BIN
PDF Office/PDF Master/Class/PDFWindowController/PDFSDK/ComPDFKit.framework/Versions/A/ComPDFKit


+ 0 - 4
PDF Office/PDF Master/Class/PDFWindowController/PDFSDK/ComPDFKit.framework/Versions/A/_CodeSignature/CodeResources

@@ -4,10 +4,6 @@
 <dict>
 	<key>files</key>
 	<dict>
-		<key>Resources/.DS_Store</key>
-		<data>
-		GmM7AsvXFgRNznkIqKE51ZVh4vs=
-		</data>
 		<key>Resources/Assets.car</key>
 		<data>
 		Lsv7/Q81njxGwXBA8bI9Dpf4F1w=

+ 7 - 4
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMNoteTableViewCell.swift

@@ -264,11 +264,11 @@ extension KMNoteTableViewCell {
                 if (markup.markupType() == .highlight) {
                     attributeStr.addAttribute(.backgroundColor, value: noteColor as Any, range: NSMakeRange(0, contentString.count))
                 } else if (markup.markupType() == .strikeOut) {
-                    attributeStr.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, noteString.count))
-                    attributeStr.addAttribute(.strikethroughColor, value: noteColor as Any, range: NSMakeRange(0, noteString.count))
+                    attributeStr.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, contentString.count))
+                    attributeStr.addAttribute(.strikethroughColor, value: noteColor as Any, range: NSMakeRange(0, contentString.count))
                 } else if (markup.markupType() == .underline) {
-                    attributeStr.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, noteString.count))
-                    attributeStr.addAttribute(.underlineColor, value: noteColor as Any, range: NSMakeRange(0, noteString.count))
+                    attributeStr.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, contentString.count))
+                    attributeStr.addAttribute(.underlineColor, value: noteColor as Any, range: NSMakeRange(0, contentString.count))
                 }
                 self.annotationContentLabel.attributedStringValue = attributeStr
                 
@@ -281,6 +281,9 @@ extension KMNoteTableViewCell {
             } else if data.isKind(of: CPDFLineAnnotation.self) || noteType == SKNSquareString || noteType == SKNCircleString { //  || noteType == SKNInkString
 //                noteString = data.page?.string(for: data.bounds) ?? ""
                 noteString = data.contents ?? ""
+                if let anno = data as? CPDFLineAnnotation, anno.isMeasure {
+                    noteString = anno.string() ?? ""
+                }
                 self.annotationContentLabel.stringValue = noteString
                 
                 self.isFold = isFold

+ 21 - 3
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/Base/KMPDFThumbViewBaseController.swift

@@ -153,7 +153,13 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
     
     public func insertFileAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertPDF_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -201,7 +207,13 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
     
     public func insertBlankPageAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_InsertBlankPage_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         
@@ -267,7 +279,13 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
     
     public func copyAction() {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            if self.kEventTag == 1 {
+                winC?.kEventName = "Onbrd_EditPage_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_Copy_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m

@@ -749,6 +749,8 @@
         self.titleViewHeightConstraint.constant = 0;
         vc.annotationModel = annotationModel;
         vc.pdfView = self.pdfView;
+        vc.kEventTag = self.kEventTag;
+        self.kEventTag = 0;
         self.propertiesBox.contentView = vc.view;
         self.contentViewController = vc;
     } 

+ 8 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationSelectLinkViewController.swift

@@ -132,6 +132,14 @@ enum KMAnnotationLinkType: UInt {
                 if downEntered {
                     if !IAPProductsManager.default().isAvailableAllFunction() {
                         if mouseBox == self.linkUrlBox || mouseBox == self.linkEmailBox {
+                            if mouseBox == self.linkUrlBox {
+                                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                                winC?.kEventName = "Reading_WebsiteLink_BuyNow"
+                            } else if mouseBox == self.linkEmailBox {
+                                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                                winC?.kEventName = "Reading_EmailLink_BuyNow"
+                            }
+                            
                             KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
                             return
                         }

+ 6 - 2
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/PageDisplay/KMPageDisplayPropertiesViewController.swift

@@ -528,7 +528,9 @@ class KMPageDisplayPropertiesButton: NSButton {
         FMTrackEventManager.defaultManager.trackEvent(event: "SubTbr_PageDisplay", withProperties: ["SubTbr_Btn": "Btn_SubTbr_PageDisplay_ViewSetting_SplitView"])
         
         if sender.tag > 0 && IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_SplitView_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         
@@ -727,7 +729,9 @@ extension KMPageDisplayPropertiesViewController: NSCollectionViewDelegate, NSCol
         for indexPath in indexPathArr {
             if IAPProductsManager.default().isAvailableAllFunction() == false {
                 if indexPath.item > 0 {
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    winC?.kEventName = "Reading_Theme_BuyNow"
+                    winC?.showWindow(nil)
                     return
                 }
             }

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/KMRightSideViewController.swift

@@ -123,6 +123,8 @@ class KMRightSideViewController: NSViewController,CipherTextViewDelegate {
         }  else if listView.toolMode == .selfSignMode && KMAnnotationPropertiesViewController.height(withAnnotationMode: pdfView.annotationType) > 0 {
             self.isHidden = false
             self.annotationProperties.annotations = []
+            self.annotationProperties.kEventTag = self.kEventTag
+            self.kEventTag = 0
             self.annotationProperties.annotationMode = annotationType
         } else if (annotationType == .line || annotationType == .polyLine || annotationType == .polyGon || (annotationType == .square && self.listView.toolMode != .noteToolMode)) && KMAnnotationPropertiesViewController.height(withAnnotationMode: pdfView.annotationType) > 0 {
             self.isHidden = false

+ 8 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.m

@@ -138,7 +138,14 @@ KMSigntureViewItemDelegate>
 
 - (IBAction)insertSignatureButton_Click:(id)sender {
     if (![[IAPProductsManager defaultManager] isAvailableAllFunction]) {
-        [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+        NSWindowController *winC = [KMPurchaseCompareWindowController sharedInstance];
+        if (self.kEventTag == 1) {
+            winC.kEventName = @"Reading_FillSign_Signature_BuyNow";
+        } else {
+            winC.kEventName = @"Reading_Signature_BuyNow";
+        }
+        
+        [winC showWindow:nil];
         return;
     }
     [self showSignatureWindow];

+ 8 - 4
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/StampList/KMAnnotationStampViewController.swift

@@ -287,8 +287,10 @@ let KMPDFDynamicStampNeedAuthorKey1 = "km_pdfview_dynamic_stamp_need_author"
         self.dynamicBoxNew?.downCallback = { [weak self] downEntered, mouseBox, event in
 //        dynamicBox.downCallback = { [weak self] downEntered, mouseBox, event in
             guard let blockSelf = self else { return }
-            if !IAPProductsManager.default().isAvailableAllFunction() {
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            if downEntered && !IAPProductsManager.default().isAvailableAllFunction() {
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                winC?.kEventName = "Reading_DynamicStamp_BuyNow"
+                winC?.showWindow(nil)
                 return
             }
             if downEntered && (blockSelf.stampType != .dynamic) {
@@ -307,8 +309,10 @@ let KMPDFDynamicStampNeedAuthorKey1 = "km_pdfview_dynamic_stamp_need_author"
         self.customBoxNew?.downCallback = { [weak self] downEntered, mouseBox, event in
 //        customBox.downCallback = { [weak self] downEntered, mouseBox, event in
             guard let blockSelf = self else { return }
-            if !IAPProductsManager.default().isAvailableAllFunction() {
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            if downEntered && !IAPProductsManager.default().isAvailableAllFunction() {
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                winC?.kEventName = "Reading_CustomStamp_BuyNow"
+                winC?.showWindow(nil)
                 return
             }
             if downEntered && (blockSelf.stampType != .custom) {

+ 3 - 1
PDF Office/PDF Master/Class/PDFWindowController/TabWindowController/KMTabbingHintWindowController.swift

@@ -73,7 +73,9 @@ class KMTabbingHintWindowController: NSWindowController{
     }
     @IBAction func buttonClicked_NewTabInWindowButton(_ sender: NSButton) {
         sender.state = NSControl.StateValue.off;
-        KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+        let winC = KMPurchaseCompareWindowController.sharedInstance()
+        winC?.kEventName = "Reading_MultiTab_BuyNow"
+        winC?.showWindow(nil)
     }
     
     @IBAction func buttonClicked_NewWindow(_ sender: NSButton) {

+ 3 - 1
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarViewController.swift

@@ -214,7 +214,9 @@ class KMToolbarViewController: NSViewController, NSTextFieldDelegate {
         if tag == .editPDF {
             if IAPProductsManager.default().isAvailableAllFunction() == false {
                 KMPreference.shared.openDocumentType = .newWindow
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                winC?.kEventName = "Reading_EditPDF_BuyNow"
+                winC?.showWindow(nil)
                 return
             }
             let allowsPrinting = self.pdfView?.document?.allowsPrinting ?? false

+ 70 - 10
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -3025,7 +3025,14 @@ extension KMMainViewController {
     //MARK: 转档 - OCR
     func showOCRWindow() {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            let type = self.toolbarController.toolbarType ?? .None
+            if type == .Conversion {
+                winC?.kEventName = "Reading_Convert_OCR_BuyNow"
+            } else {
+                winC?.kEventName = "Reading_OCR_BuyNow"
+            }
+            winC?.showWindow(nil)
             return
         }
         let com = KMOCRPDFWindowController(cpdfDocument: self.listView.document!, pwd: self.listView.document.password)
@@ -3036,7 +3043,9 @@ extension KMMainViewController {
     //MARK: 导出图片
     func extractImageAction(num: Int) {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_ExtractImage_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         
@@ -3253,7 +3262,9 @@ extension KMMainViewController {
         FMTrackEventManager.defaultManager.trackEvent(event: "SubTbr_Tools", withProperties: ["SubTbr_Btn": "Btn_SubTbr_Tools_Table"])
         changeAnnotationMode(sender)
         guard IAPProductsManager.default().isAvailableAllFunction() else {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Table_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         listView.addAnnotationWithTable()
@@ -3736,7 +3747,9 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
     
     func toolbarViewController(_ viewController: KMToolbarViewController, shareFlatten item: NSMenuItem) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Flatten_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         self.shareFlatten(sender: viewController)
@@ -3907,7 +3920,21 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
             if (type == .bates || type == .headerAndFooter) {
                 
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    if type == .headerAndFooter {
+                        if index == 1 {
+                            winC?.kEventName = "Reading_AddHeaderFooter_BuyNow"
+                        } else if index == 2 {
+                            winC?.kEventName = "Reading_RemoveHeaderFooter_BuyNow"
+                        }
+                    } else if type == .bates {
+                        if index == 1 {
+                            winC?.kEventName = "Reading_AddBates_BuyNow"
+                        } else if index == 2 {
+                            winC?.kEventName = "Reading_RemoveBates_BuyNow"
+                        }
+                    }
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -4266,7 +4293,9 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
             } else if type == .comparison {
                 FMTrackEventManager.defaultManager.trackEvent(event: "SubTbr_Editor", withProperties: ["SubTbr_Btn": "Btn_SubTbr_Editor_Compare"])
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    winC?.kEventName = "Reading_Compare_BuyNow"
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -4303,7 +4332,13 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 await NSWindow.currentWindow().beginSheet(controller.window!)
             } else if type == .watermark {
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    if index == 1 {
+                        winC?.kEventName = "Reading_AddWatermark_BuyNow"
+                    } else if index == 2 {
+                        winC?.kEventName = "Reading_RemoveWatermark_BuyNow"
+                    }
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -4407,7 +4442,13 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
             } else if type == .background {
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    if index == 1 {
+                        winC?.kEventName = "Reading_AddBackground_BuyNow"
+                    } else if index == 2 {
+                        winC?.kEventName = "Reading_RemoveBackground_BuyNow"
+                    }
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -4477,7 +4518,9 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
             } else if type == .measure {
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    winC?.kEventName = "Reading_Measure_BuyNow"
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -4945,7 +4988,9 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 winC.startModal(nil)
             } else if index == 12 {
                 if IAPProductsManager.default().isAvailableAllFunction() == false {
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    winC?.kEventName = "Reading_ReplaceText_BuyNow"
+                    winC?.showWindow(nil)
                     return
                 }
                 
@@ -5191,6 +5236,10 @@ extension KMMainViewController : CDistanceSettingWindowControllerDelegate {
                 self.distanceMeasureInfoWindowController?.xLabel.stringValue = ""
                 self.distanceMeasureInfoWindowController?.yLabel.stringValue = ""
             }
+            
+            if let data = self.listView?.activeAnnotation {
+                self.leftSideViewController.refreshUIForAnnoAttributeDidChange(data, attributes: nil)
+            }
         }
         self.distanceMeasureInfoWindowController?.showWindow(self)
     }
@@ -5209,7 +5258,12 @@ extension KMMainViewController : CDistanceSettingWindowControllerDelegate {
                 self.perimeterMeasureInfoWindowController?.lengthLabel.stringValue = ""
                 self.perimeterMeasureInfoWindowController?.angleLabel.stringValue = ""
             }
+            
+            if let data = self.listView?.activeAnnotation {
+                self.leftSideViewController.refreshUIForAnnoAttributeDidChange(data, attributes: nil)
+            }
         }
+        
         self.perimeterMeasureInfoWindowController?.showWindow(self)
     }
 }
@@ -5262,6 +5316,12 @@ extension KMMainViewController : CAreaSettingWindowControllerDelegate {
             }
             self.areaMeasureInfoWindowController?.showWindow(self)
         }
+        
+        if measureInfo != nil {
+            if let data = self.listView?.activeAnnotation {
+                self.leftSideViewController.refreshUIForAnnoAttributeDidChange(data, attributes: nil)
+            }
+        }
     }
 }
 

+ 8 - 2
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+MenuAction.swift

@@ -1215,7 +1215,10 @@ extension KMMainViewController: KMSystemToolMenuProtocol {
     
     func rotateLeft(_ sender: Any?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Rotate_BuyNow"
+            winC?.kEventTag = 1
+            winC?.showWindow(nil)
             return
         }
         
@@ -1231,7 +1234,10 @@ extension KMMainViewController: KMSystemToolMenuProtocol {
     
     func rotateRight(_ sender: Any?) {
         if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Rotate_BuyNow"
+            winC?.kEventTag = 1
+            winC?.showWindow(nil)
             return
         }
         

+ 22 - 2
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -305,14 +305,32 @@ extension KMMainViewController: KMToolbarControllerDelegate {
     func changeAnnotationModeAction(item: KMToolbarClickButton) {
         if self.listView.toolMode == .formToolMode {
             if !IAPProductsManager.default().isAvailableAllFunction(){
-                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                let winC = KMPurchaseCompareWindowController.sharedInstance()
+                if let type = CAnnotationType(rawValue: item.tag) {
+                    if type == .textField {
+                        winC?.kEventName = "Reading_TextField_BuyNow"
+                    } else if type == .checkBox {
+                        winC?.kEventName = "Reading_CheckBox_BuyNow"
+                    } else if type == .radioButton {
+                        winC?.kEventName = "Reading_RadioButton_BuyNow"
+                    } else if type == .listMenu {
+                        winC?.kEventName = "Reading_ListBox_BuyNow"
+                    } else if type == .comboBox {
+                        winC?.kEventName = "Reading_ComboBox_BuyNow"
+                    } else if type == .actionButton {
+                        winC?.kEventName = "Reading_Button_BuyNow"
+                    }
+                }
+                winC?.showWindow(nil)
                 return
             }
         } else {
             let type = CAnnotationType(rawValue: item.tag) ?? CAnnotationType.unkown
             if type == .signature {
                 if !IAPProductsManager.default().isAvailableAllFunction(){
-                    KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                    let winC = KMPurchaseCompareWindowController.sharedInstance()
+                    winC?.kEventName = "Reading_ElectronicSign_BuyNow"
+                    winC?.showWindow(nil)
                     return
                 }
             }
@@ -385,6 +403,8 @@ extension KMMainViewController: KMToolbarControllerDelegate {
         
         if self.listView.toolMode != .editPDFToolMode && self.listView.annotationType != .unkown {
             self.rightSideViewController.isHidden = false
+            let toolMode = self.listView?.toolMode ?? .none
+            self.rightSideViewController.kEventTag = toolMode == .selfSignMode ? 1 : 0
             self.rightSideViewController.subViewType = .AnnotationProperts
             if !self.isReadMode {
                 self.openRightPane()

+ 6 - 2
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -696,7 +696,9 @@ import Cocoa
     
     func enterRedact() {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_Redact_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         
@@ -1235,7 +1237,9 @@ import Cocoa
     
     func showDigitalSignWindow(withFilePathURL fileURL: URL) {
         if !IAPProductsManager.default().isAvailableAllFunction(){
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            let winC = KMPurchaseCompareWindowController.sharedInstance()
+            winC?.kEventName = "Reading_DigitalSign_BuyNow"
+            winC?.showWindow(nil)
             return
         }
         

+ 5 - 1
PDF Office/PDF Master/Class/Purchase/DMG/KMEmbeddedPaymentPopWC.swift

@@ -12,7 +12,8 @@ class KMEmbeddedPaymentPopWC: NSWindowController {
 
     @IBOutlet weak var webView: WKWebView!
     var urlPath: String?
-    
+    var callback: ((_ isClose: Bool) -> Void)?
+
     static var currentWindowController: KMEmbeddedPaymentPopWC!
     
     @objc static func currentFirstTrialWC(_ urlPath: String) -> KMEmbeddedPaymentPopWC {
@@ -45,6 +46,9 @@ class KMEmbeddedPaymentPopWC: NSWindowController {
 
 extension KMEmbeddedPaymentPopWC: NSWindowDelegate {
     func windowWillClose(_ notification: Notification) {
+        if let callback = self.callback {
+            callback(true)
+        }
         KMEmbeddedPaymentPopWC.currentWindowController = nil
     }
 }

+ 6 - 0
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.h

@@ -17,3 +17,9 @@
 - (void)showWindowRestore:(id)sender;
 
 @end
+
+@interface KMPurchaseCompareDMGWindowController(KMAnalytic)
+
+- (void)trackEvent_buyNow;
+
+@end

+ 555 - 45
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.m

@@ -196,6 +196,9 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 @property (nonatomic, retain) NSArray *dataSource;
 @property (nonatomic, retain) NSPopover *popOver;
 
+- (NSString *)_buyNowEventToPaidEventName;
+- (NSDictionary *)_getPaidEventParamsWith:(NSString *)eventN;
+
 @end
 
 @implementation KMPurchaseCompareDMGWindowController
@@ -238,7 +241,6 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
     self.discountPriceLabel.font = [NSFont fontWithName:@"Ubuntu" size:36.0];
     self.originalPriceLabel.textColor = [NSColor colorWithRed:255.0/255.0 green:94.0/255.0 blue:44.0/255.0 alpha:1.0];
     self.originalPriceLabel.font = [NSFont fontWithName:@"Ubuntu" size:14.0];
-    [self updatePriceLabel];
 
     self.freeVersionLbl.stringValue = NSLocalizedString(@"Free Version", nil);
     self.parmanentVerLbl.stringValue = NSLocalizedString(@"Permanent License", nil);
@@ -350,6 +352,7 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
         }
     };
     self.discountTipImage.hidden = YES;
+    [self updatePriceLabel];
     
     self.aiSepLineView.wantsLayer = YES;
     self.aiInfoLbl1.font = self.aiInfoLbl2.font = self.aiInfoLbl3.font = self.aiInfoLbl4.font = [NSFont SFProTextRegularFont:14];
@@ -490,45 +493,21 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
     }
     [self.buyNowButton setTitleColor:[NSColor whiteColor]];
     
-    if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
-        KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
-        if ([KMAdvertisementManager checkAdvertisementValid:info]) {
-            self.discountTipImage.hidden = NO;
-            
-            NSURL *url = [NSURL URLWithString:[KMAdvertisementModelTransition transitionImagePathWithImage:info.image highlight:NO]];
-            self.discountTipImage.image = [KMAdvertisementImage imageWithURLWithUrl:url completion:^(NSImage * _Nonnull image) {
-                self.discountTipImage.image = image;
-            }];
-        } else {
-            self.discountTipImage.hidden = YES;
-        }
-    }
+    [self updatePriceLabel];
 }
 
 - (void)updatePriceLabel {
     NSString *originalText = @"";
     NSString *discountText = @"";
-    if ([@"USD" isEqualToString:NSLocalizedString(@"USD", nil)]) {
 #if VERSION_DMG
-        if ([self.buySwitch state]) {
-            originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
-            discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
-        } else {
-            originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
-            discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
-        }
-#endif
+    if ([self.buySwitch state]) {
+        originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
+        discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
     } else {
-#if VERSION_DMG
-        if ([self.buySwitch state]) {
-            originalText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getPriceCNY:@"com.brother.pdfreaderpro.mac.product_3"]];
-            discountText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getActivityPriceCNY:@"com.brother.pdfreaderpro.mac.product_3"]];
-        } else {
-            originalText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getPriceCNY:@"com.brother.pdfreaderpro.mac.product_1"]];
-            discountText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getActivityPriceCNY:@"com.brother.pdfreaderpro.mac.product_1"]];
-        }
-#endif
+        originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
+        discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
     }
+#endif
     NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:originalText];
     [attributedText addAttribute:NSStrikethroughStyleAttributeName
                            value:@(NSUnderlineStyleSingle)
@@ -536,13 +515,71 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
     self.originalPriceLabel.attributedStringValue = attributedText;
     self.discountPriceLabel.stringValue = discountText;
     
-    if ([originalText isEqualToString:discountText]) {
-        [self.originalPriceLabel setHidden:YES];
-    } else {
-        [self.originalPriceLabel setHidden:NO];
+    if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
+        KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
+        if ([KMAdvertisementManager checkAdvertisementValid:info]) {
+            self.discountTipImage.hidden = NO;
+            
+            NSURL *url = [NSURL URLWithString:[KMAdvertisementModelTransition transitionImagePathWithImage:info.image highlight:NO]];
+            self.discountTipImage.image = [KMAdvertisementImage imageWithURLWithUrl:url completion:^(NSImage * _Nonnull image) {
+                self.discountTipImage.image = image;
+            }];
+            if ([originalText isEqualToString:discountText]) {
+                [self.originalPriceLabel setHidden:YES];
+                [self.discountTipImage setHidden:YES];
+            } else {
+                [self.originalPriceLabel setHidden:NO];
+                [self.discountTipImage setHidden:NO];
+            }
+        } else {
+            self.discountTipImage.hidden = YES;
+            if ([originalText isEqualToString:discountText]) {
+                [self.originalPriceLabel setHidden:YES];
+            } else {
+                [self.originalPriceLabel setHidden:NO];
+            }
+        }
     }
 }
 
+//- (void)updatePriceLabel {
+//    NSString *originalText = @"";
+//    NSString *discountText = @"";
+//    if ([@"USD" isEqualToString:NSLocalizedString(@"USD", nil)]) {
+//#if VERSION_DMG
+//        if ([self.buySwitch state]) {
+//            originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
+//            discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_3"]];
+//        } else {
+//            originalText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
+//            discountText = [NSString stringWithFormat:@"$%@", [[KMDMGProductsManager shareInstance] getActivityPrice:@"com.brother.pdfreaderpro.mac.product_1"]];
+//        }
+//#endif
+//    } else {
+//#if VERSION_DMG
+//        if ([self.buySwitch state]) {
+//            originalText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getPriceCNY:@"com.brother.pdfreaderpro.mac.product_3"]];
+//            discountText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getActivityPriceCNY:@"com.brother.pdfreaderpro.mac.product_3"]];
+//        } else {
+//            originalText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getPriceCNY:@"com.brother.pdfreaderpro.mac.product_1"]];
+//            discountText = [NSString stringWithFormat:@"¥%@", [[KMDMGProductsManager shareInstance] getActivityPriceCNY:@"com.brother.pdfreaderpro.mac.product_1"]];
+//        }
+//#endif
+//    }
+//    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:originalText];
+//    [attributedText addAttribute:NSStrikethroughStyleAttributeName
+//                           value:@(NSUnderlineStyleSingle)
+//                           range:NSMakeRange(0, originalText.length)];
+//    self.originalPriceLabel.attributedStringValue = attributedText;
+//    self.discountPriceLabel.stringValue = discountText;
+//
+//    if ([originalText isEqualToString:discountText]) {
+//        [self.originalPriceLabel setHidden:YES];
+//    } else {
+//        [self.originalPriceLabel setHidden:NO];
+//    }
+//}
+
 #pragma mark - Window Method
 - (void)showWindow:(id)sender {
     [super showWindow:nil];
@@ -560,6 +597,11 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 
 - (void)close {
     [super close];
+    
+    // 清空埋点的数据
+    self.kEventName = nil;
+    self.kEventTag = 0;
+    
     [self endModal:nil];
 }
 
@@ -649,8 +691,20 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 //    [[NSWorkspace sharedWorkspace] openURL:url];
 //    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_UpgradeBuyNow"}];
 //#endif
+    
 #if VERSION_DMG
+    [self trackEvent_buyNow];
+    NSString *paidEventName = [self _buyNowEventToPaidEventName];
+    NSDictionary *paidEventParams = [self _getPaidEventParamsWith:paidEventName];
+    
+    NSString *thePaidEventName = paidEventParams.allValues.firstObject;
+    NSDictionary *thePaidEventParams = nil;
+    if (paidEventName != nil && paidEventParams.allKeys.firstObject != nil) {
+        thePaidEventParams = @{paidEventParams.allKeys.firstObject : paidEventName};
+    }
+    
     [self close];
+    
     NSString *productID = @"";
     if ([self.buySwitch state]) {
         productID = @"com.brother.pdfreaderpro.mac.product_3";
@@ -662,7 +716,10 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 //    [embeddedWC beginSheetModalFor:NSApp.mainWindow completionHandler:^(NSInteger result) {
 //            
 //    }];
+    embeddedWC.kEventName = thePaidEventName;
+    embeddedWC.kEventParams = thePaidEventParams;
     [embeddedWC showWindow:nil];
+    [[embeddedWC window] center];
 #endif
 }
 
@@ -720,9 +777,22 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 //    [[NSWorkspace sharedWorkspace] openURL:url];
 //    
 //    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_BuyAITools"}];
+    [self trackEvent_buyNow];
+    NSString *paidEventName = [self _buyNowEventToPaidEventName];
+    NSDictionary *paidEventParams = [self _getPaidEventParamsWith:paidEventName];
+    NSString *thePaidEventName = paidEventParams.allValues.firstObject;
+    NSDictionary *thePaidEventParams = nil;
+    if (paidEventName != nil && paidEventParams.allKeys.firstObject != nil) {
+        thePaidEventParams = @{paidEventParams.allKeys.firstObject : paidEventName};
+    }
+    
+    [self close];
 #if VERSION_DMG
     KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentFirstTrialWC:@"com.brother.pdfreaderpro.ai.product_1"];
+    embeddedWC.kEventName = thePaidEventName;
+    embeddedWC.kEventParams = thePaidEventParams;
     [embeddedWC showWindow:nil];
+    [[embeddedWC window] center];
 #endif
 }
 
@@ -739,16 +809,456 @@ static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCo
 
 - (void)recommondInfoUpdateNoti:(NSNotification *)noti {
     dispatch_async(dispatch_get_main_queue(), ^{
-        if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
-            KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
-            if ([KMAdvertisementManager checkAdvertisementValid:info]) {
-                self.discountTipImage.hidden = NO;
-                self.discountTipImage.image = info.image;
-            } else {
-                self.discountTipImage.hidden = YES;
-            }
-        }
+        [self updatePriceLabel];
     });
 }
 
+@end
+
+@implementation KMPurchaseCompareDMGWindowController (KMAnalytic)
+
+- (void)trackEvent_buyNow {
+    NSDictionary *params = [self _getBuyNowEventParams];
+    NSString *theEventName = params.allValues.firstObject;
+    NSDictionary *theParams = nil;
+    if (self.kEventName != nil && params.allKeys.firstObject != nil) {
+        theParams = @{params.allKeys.firstObject : self.kEventName};
+    }
+    
+    [self trackEvent_dmgWithEventName:theEventName params:theParams platform:KMAnalyticsPlatformAppCenter];
+}
+
+- (NSDictionary *)_getBuyNowEventParams {
+    NSString *eveN = self.kEventName;
+    if (eveN == nil || eveN.length == 0) {
+        return nil;
+    }
+    
+    if ([eveN isEqual:@"Reading_WebsiteLink_BuyNow"] ||
+        [eveN isEqual:@"Reading_EmailLink_BuyNow"] ||
+        [eveN isEqual:@"Reading_DynamicStamp_BuyNow"] ||
+        [eveN isEqual:@"Reading_CustomStamp_BuyNow"] ||
+        [eveN isEqual:@"Reading_Signature_BuyNow"] ||
+        [eveN isEqual:@"Reading_Table_BuyNow"]) {
+        return @{@"Purchase_Tools" : @"SubTbr_Tools"};
+    } else if ([eveN isEqual:@"Reading_InsertBlankPage_BuyNow"] ||
+               [eveN isEqual:@"Reading_InsertPDF_BuyNow"] ||
+               [eveN isEqual:@"Reading_InsertSacnner_BuyNow"] ||
+               [eveN isEqual:@"Reading_InsertImage_BuyNow"] ||
+               [eveN isEqual:@"Reading_InsertClipboard_BuyNow"] ||
+               [eveN isEqual:@"Reading_Replace_BuyNow"] ||
+               [eveN isEqual:@"Reading_Extract_BuyNow"] ||
+               [eveN isEqual:@"Reading_Split_BuyNow"] ||
+               ([eveN isEqual:@"Reading_Rotate_BuyNow"] && self.kEventTag == 0) ||
+               [eveN isEqual:@"Reading_Reverse_BuyNow"] ||
+               [eveN isEqual:@"Reading_Copy_BuyNow"] ||
+               [eveN isEqual:@"Reading_Delete_BuyNow"] ||
+               [eveN isEqual:@"Reading_Merge_BuyNow"]) {
+        return @{@"Purchase_PageEdit" : @"SubTbr_PageEdit"};
+    } else if ([eveN isEqual:@"Onbrd_EditPage_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_Merge_BuyNow"]) {
+        return @{@"Purchase_PageEdit" : @"Home_PageEdit"};
+    } else if ([eveN isEqual:@"Reading_RemoveSecurity_BuyNow"] ||
+               [eveN isEqual:@"Reading_Compare_BuyNow"] ||
+               [eveN isEqual:@"Reading_AddWatermark_BuyNow"] ||
+               [eveN isEqual:@"Reading_RemoveWatermark_BuyNow"] ||
+               [eveN isEqual:@"Reading_AddBackground_BuyNow"] ||
+               [eveN isEqual:@"Reading_RemoveBackground_BuyNow"] ||
+               [eveN isEqual:@"Reading_AddHeaderFooter_BuyNow"] ||
+               [eveN isEqual:@"Reading_RemoveHeaderFooter_BuyNow"] ||
+               [eveN isEqual:@"Reading_AddBates_BuyNow"] ||
+               [eveN isEqual:@"Reading_RemoveBates_BuyNow"] ||
+               [eveN isEqual:@"Reading_Measure_BuyNow"]) {
+        return @{@"Purchase_Editor" : @"SubTbr_Editor"};
+    } else if ([eveN isEqual:@"Onbrd_Compare_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_Background_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_Watermard_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_HeaderFooter_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_Bates_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_Security_BuyNow"]) {
+        return @{@"Purchase_Editor" : @"Home_Editor"};
+    } else if ([eveN isEqual:@"Reading_PDFtoWord_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoExcel_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoPPT_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoRTF_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoCSV_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoText_BuyNow"] ||
+              [eveN isEqual:@"Reading_PDFtoImage_BuyNow"] ||
+              [eveN isEqual:@"Reading_ExtractImage_BuyNow"]) {
+       return @{@"Purchase_Converter" : @"SubTbr_Converter"};
+    } else if ([eveN isEqual:@"Onbrd_ConvertPDF_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_PDFtoWord_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_PDFtoExcel_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_PDFtoPPT_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_ImagetoPDF_BuyNow"]) {
+        return @{@"Purchase_Converter" : @"Home_Converter"};
+    } else if ([eveN isEqual:@"Reading_TextField_BuyNow"] ||
+               [eveN isEqual:@"Reading_CheckBox_BuyNow"] ||
+               [eveN isEqual:@"Reading_RadioButton_BuyNow"] ||
+               [eveN isEqual:@"Reading_ListBox_BuyNow"] ||
+               [eveN isEqual:@"Reading_ComboBox_BuyNow"] ||
+               [eveN isEqual:@"Reading_Button_BuyNow"]) {
+        return @{@"Purchase_Form" : @"SubTbr_Forms"};
+    } else if ([eveN isEqual:@"Reading_FillSign_Signature_BuyNow"] ||
+               [eveN isEqual:@"Reading_DigitalSign_BuyNow"] ||
+               [eveN isEqual:@"Reading_ElectronicSign_BuyNow"]) {
+        return @{@"Purchase_Sign" : @"SunTbr_Signature"};
+    } else if ([eveN isEqual:@"Reading_EditPDF_BuyNow"] ||
+                [eveN isEqual:@"Reading_ReplaceText_BuyNow"]) {
+         return @{@"Purchase_EditPDF" : @"Tbr_Edit PDF"};
+    } else if ([eveN isEqual:@"Reading_Redact_BuyNow"]) {
+        return @{@"Purchase_Redact" : @"Tbr_Redact"};
+    } else if ([eveN isEqual:@"Reading_OCR_BuyNow"] ||
+               [eveN isEqual:@"Reading_Convert_OCR_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_OCR_BuyNow"]) {
+        return @{@"Purchase_OCR" : @"SubTbr_OCR"};
+    } else if ([eveN isEqual:@"Reading_SplitView_BuyNow"] ||
+               [eveN isEqual:@"Reading_Rotate_BuyNow"] ||
+               [eveN isEqual:@"Reading_Theme_BuyNow"] ||
+               [eveN isEqual:@"Reading_MultiTab_BuyNow"]) {
+        return @{@"Purchase_PageDisplay" : @"SubTbr_PageDisplay"};
+    } else if ([eveN isEqual:@"Onbrd_PrintPoster_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_PrintMultiple_BuyNow"] ||
+               [eveN isEqual:@"Onbrd_PrintBooklet_BuyNow"]) {
+        return @{@"Purchase_Others" : @"Home_Others"};
+    } else if ([eveN isEqual:@"Reading_Flatten_BuyNow"]) {
+        return @{@"Purchase_Others" : @"SubTbr_Others"};
+    } else if ([eveN isEqual:@"MenuBar_PrintPoster_BuyNow"] ||
+               [eveN isEqual:@"MenuBar_PrintMultiple_BuyNow"] ||
+               [eveN isEqual:@"MenuBar_PrintBooklet_BuyNow"]) {
+        return @{@"Purchase_Others" : @"MenuBar_Others"};
+    }
+    return nil;
+}
+
+- (NSString *)_buyNowEventToPaidEventName {
+    NSString *eveN = self.kEventName;
+    if (eveN == nil || eveN.length == 0) {
+        return nil;
+    }
+
+    // Paid_Tools
+    if ([eveN isEqual:@"Reading_WebsiteLink_BuyNow"]) {
+        return @"Reading_WebsiteLink_Paid";
+    } else if ([eveN isEqual:@"Reading_EmailLink_BuyNow"]) {
+        return @"Reading_EmailLink_Paid";
+    } else if ([eveN isEqual:@"Reading_DynamicStamp_BuyNow"]) {
+        return @"Reading_DynamicStamp_Paid";
+    } else if ([eveN isEqual:@"Reading_CustomStamp_BuyNow"]) {
+        return @"Reading_CustomStamp_Paid";
+    } else if ([eveN isEqual:@"Reading_Signature_BuyNow"]) {
+        return @"Reading_Signature_Paid";
+    } else if ([eveN isEqual:@"Reading_Table_BuyNow"]) {
+        return @"Reading_Table_Paid";
+    }
+    // Paid_PageEdit SubTbr_PageEdit
+    else if ([eveN isEqual:@"Reading_InsertBlankPage_BuyNow"]) {
+        return @"Reading_InsertBlankPage_Paid";
+    } else if ([eveN isEqual:@"Reading_InsertPDF_BuyNow"]) {
+        return @"Reading_InsertPDF_Paid";
+    } else if ([eveN isEqual:@"Reading_InsertSacnner_BuyNow"]) {
+        return @"Reading_InsertSacnner_Paid";
+    } else if ([eveN isEqual:@"Reading_InsertImage_BuyNow"]) {
+        return @"Reading_InsertImage_Paid";
+    } else if ([eveN isEqual:@"Reading_InsertClipboard_BuyNow"]) {
+        return @"Reading_InsertClipboard_Paid";
+    } else if ([eveN isEqual:@"Reading_Replace_BuyNow"]) {
+        return @"Reading_Replace_Paid";
+    } else if ([eveN isEqual:@"Reading_Extract_BuyNow"]) {
+        return @"Reading_Extract_Paid";
+    } else if ([eveN isEqual:@"Reading_Split_BuyNow"]) {
+        return @"Reading_Split_Paid";
+    } else if ([eveN isEqual:@"Reading_Rotate_BuyNow"]) {
+        return @"Reading_Rotate_Paid";
+    } else if ([eveN isEqual:@"Reading_Reverse_BuyNow"]) {
+        return @"Reading_Reverse_Paid";
+    } else if ([eveN isEqual:@"Reading_Copy_BuyNow"]) {
+        return @"Reading_Copy_Paid";
+    } else if ([eveN isEqual:@"Reading_Delete_BuyNow"]) {
+        return @"Reading_Delete_Paid";
+    } else if ([eveN isEqual:@"Reading_Merge_BuyNow"]) {
+        return @"Reading_Merge_Paid";
+    }
+    // Paid_PageEdit Home_PageEdit
+    else if ([eveN isEqual:@"Onbrd_EditPage_BuyNow"]) {
+        return  @"Onbrd_EditPage_Paid";
+    } else if ([eveN isEqual:@"Onbrd_Merge_BuyNow"]) {
+        return  @"Onbrd_Merge_Paid";
+    }
+    // Paid_Editor SubTbr_Editor
+    else if ([eveN isEqual:@"Reading_RemoveSecurity_BuyNow"]) {
+        return @"Reading_RemoveSecurity_Paid";
+    } else if ([eveN isEqual:@"Reading_Compare_BuyNow"]) {
+        return @"Reading_Compare_Paid";
+    } else if ([eveN isEqual:@"Reading_AddWatermark_BuyNow"]) {
+        return @"Reading_AddWatermark_Paid";
+    } else if ([eveN isEqual:@"Reading_RemoveWatermark_BuyNow"]) {
+        return @"Reading_RemoveWatermark_Paid";
+    } else if ([eveN isEqual:@"Reading_AddBackground_BuyNow"]) {
+        return @"Reading_AddBackground_Paid";
+    } else if ([eveN isEqual:@"Reading_RemoveBackground_BuyNow"]) {
+        return @"Reading_RemoveBackground_Paid";
+    } else if ([eveN isEqual:@"Reading_AddHeaderFooter_BuyNow"]) {
+        return @"Reading_AddHeaderFooter_Paid";
+    } else if ([eveN isEqual:@"Reading_RemoveHeaderFooter_BuyNow"]) {
+        return @"Reading_RemoveHeaderFooter_Paid";
+    } else if ([eveN isEqual:@"Reading_AddBates_BuyNow"]) {
+        return @"Reading_AddBates_Paid";
+    } else if ([eveN isEqual:@"Reading_RemoveBates_BuyNow"]) {
+        return @"Reading_RemoveBates_Paid";
+    } else if ([eveN isEqual:@"Reading_Measure_BuyNow"]) {
+        return @"Reading_Measure_Paid";
+    }
+    // Paid_Editor Home_Editor
+    else if ([eveN isEqual:@"Onbrd_Compare_BuyNow"]) {
+        return @"Onbrd_Compare_Paid";
+    } else if ([eveN isEqual:@"Onbrd_Background_BuyNow"]) {
+        return @"Onbrd_Background_Paid";
+    } else if ([eveN isEqual:@"Onbrd_Watermard_BuyNow"]) {
+        return @"Onbrd_Watermard_Paid";
+    } else if ([eveN isEqual:@"Onbrd_HeaderFooter_BuyNow"]) {
+        return @"Onbrd_HeaderFooter_Paid";
+    } else if ([eveN isEqual:@"Onbrd_Bates_BuyNow"]) {
+        return @"Onbrd_Bates_Paid";
+    } else if ([eveN isEqual:@"Onbrd_Security_BuyNow"]) {
+        return @"Onbrd_Security_Paid";
+    }
+    // Paid_Converter SubTbr_Converte
+    else if ([eveN isEqual:@"Reading_PDFtoWord_BuyNow"]) {
+        return @"Reading_PDFtoWord_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoExcel_BuyNow"]) {
+        return @"Reading_PDFtoExcel_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoPPT_BuyNow"]) {
+        return @"Reading_PDFtoPPT_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoRTF_BuyNow"]) {
+        return @"Reading_PDFtoRTF_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoCSV_BuyNow"]) {
+        return @"Reading_PDFtoCSV_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoText_BuyNow"]) {
+        return @"Reading_PDFtoText_Paid";
+    } else if ([eveN isEqual:@"Reading_PDFtoImage_BuyNow"]) {
+        return @"Reading_PDFtoImage_Paid";
+    } else if ([eveN isEqual:@"Reading_ExtractImage_BuyNow"]) {
+        return @"Reading_ExtractImage_Paid";
+    }
+    // Paid_Converter Home_Converter
+    else if ([eveN isEqual:@"Onbrd_ConvertPDF_BuyNow"]) {
+        return @"Onbrd_ConvertPDF_Paid";
+    } else if ([eveN isEqual:@"Onbrd_PDFtoWord_BuyNow"]) {
+        return @"Onbrd_PDFtoWord_Paid";
+    } else if ([eveN isEqual:@"Onbrd_PDFtoExcel_BuyNow"]) {
+        return @"Onbrd_PDFtoExcel_Paid";
+    } else if ([eveN isEqual:@"Onbrd_PDFtoPPT_BuyNow"]) {
+        return @"Onbrd_PDFtoPPT_Paid";
+    } else if ([eveN isEqual:@"Onbrd_ImagetoPDF_BuyNow"]) {
+        return @"Onbrd_ImagetoPDF_Paid";
+    }
+    // Paid_Form SubTbr_Forms
+    else if ([eveN isEqual:@"Reading_TextField_BuyNow"]) {
+        return @"Reading_TextField_Paid";
+    } else if ([eveN isEqual:@"Reading_CheckBox_BuyNow"]) {
+        return @"Reading_CheckBox_Paid";
+    } else if ([eveN isEqual:@"Reading_RadioButton_BuyNow"]) {
+        return @"Reading_RadioButton_Paid";
+    } else if ([eveN isEqual:@"Reading_ListBox_BuyNow"]) {
+        return @"Reading_ListBox_Paid";
+    } else if ([eveN isEqual:@"Reading_ComboBox_BuyNow"]) {
+        return @"Reading_ComboBox_Paid";
+    } else if ([eveN isEqual:@"Reading_Button_BuyNow"]) {
+        return @"Reading_Button_Paid";
+    }
+    // Paid_Sign SunTbr_Signature
+    else if ([eveN isEqual:@"Reading_FillSign_Signature_BuyNow"]) {
+        return @"Reading_FillSign_Signature_Paid";
+    } else if ([eveN isEqual:@"Reading_DigitalSign_BuyNow"]) {
+        return @"Reading_DigitalSign_Paid";
+    } else if ([eveN isEqual:@"Reading_ElectronicSign_BuyNow"]) {
+        return @"Reading_ElectronicSign_Paid";
+    }
+    // Paid_EditPDF Tbr_Edit PDF
+    else if ([eveN isEqual:@"Reading_EditPDF_BuyNow"]) {
+        return @"Reading_EditPDF_Paid";
+    } else if ([eveN isEqual:@"Reading_ReplaceText_BuyNow"]) {
+        return @"Reading_ReplaceText_Paid";
+    }
+    // Paid_Redact Tbr_Redact
+    else if ([eveN isEqual:@"Reading_Redact_BuyNow"]) {
+        return @"Reading_Redact_Paid";
+    }
+    // Paid_OCR SubTbr_OCR
+    else if ([eveN isEqual:@"Reading_OCR_BuyNow"]) {
+        return @"Reading_OCR_Paid";
+    } else if ([eveN isEqual:@"Reading_Convert_OCR_BuyNow"]) {
+        return @"Reading_Convert_OCR_Paid";
+    } else if ([eveN isEqual:@"Onbrd_OCR_BuyNow"]) {
+        return @"Onbrd_OCR_Paid";
+    }
+    // Paid_PageDisplay SubTbr_Page Display
+    else if ([eveN isEqual:@"Reading_SplitView_BuyNow"]) {
+        return @"Reading_SplitView_Paid";
+    } else if ([eveN isEqual:@"Reading_Rotate_BuyNow"]) {
+        return @"Reading_Rotate_Paid";
+    } else if ([eveN isEqual:@"Reading_Theme_BuyNow"]) {
+        return @"Reading_Theme_Paid";
+    } else if ([eveN isEqual:@"Reading_MultiTab_BuyNow"]) {
+        return @"Reading_MultiTab_Paid";
+    }
+    //  Home_Others
+    else if ([eveN isEqual:@"Onbrd_PrintPoster_BuyNow"]) {
+        return @"Onbrd_PrintPoster_Paid";
+    } else if ([eveN isEqual:@"Onbrd_PrintMultiple_BuyNow"]) {
+        return @"Onbrd_PrintMultiple_Paid";
+    } else if ([eveN isEqual:@"Onbrd_PrintBooklet_BuyNow"]) {
+        return @"Onbrd_PrintBooklet_Paid";
+    }
+    // Paid_Others SubTbr_Others
+    else if ([eveN isEqual:@"Reading_Flatten_BuyNow"]) {
+        return @"Reading_Flatten_Paid";
+    }
+    // Paid_Others MenuBar_Others
+    else if ([eveN isEqual:@"MenuBar_PrintPoster_BuyNow"]) {
+        return @"MenuBar_PrintPoster_Paid";
+    } else if ([eveN isEqual:@"MenuBar_PrintMultiple_BuyNow"]) {
+        return @"MenuBar_PrintMultiple_Paid";
+    } else if ([eveN isEqual:@"MenuBar_PrintBooklet_BuyNow"]) {
+        return @"MenuBar_PrintBooklet_Paid";
+    }
+    return nil;
+}
+
+- (NSDictionary *)_getPaidEventParamsWith:(NSString *)eventN {
+    NSString *eveN = eventN;
+    if (eveN == nil || eveN.length == 0) {
+        return nil;
+    }
+    
+    // Paid_Tools SubTbr_Tools
+    if ([eveN isEqual:@"Reading_WebsiteLink_Paid"] ||
+        [eveN isEqual:@"Reading_EmailLink_Paid"] ||
+        [eveN isEqual:@"Reading_DynamicStamp_Paid"] ||
+        [eveN isEqual:@"Reading_CustomStamp_Paid"] ||
+        [eveN isEqual:@"Reading_Signature_Paid"] ||
+        [eveN isEqual:@"Reading_Table_Paid"]) {
+        return @{@"Paid_Tools" : @"SubTbr_Tools"};
+    }
+    // Paid_PageEdit SubTbr_PageEdit
+    else if ([eveN isEqual:@"Reading_InsertBlankPage_Paid"] ||
+             [eveN isEqual:@"Reading_InsertPDF_Paid"] ||
+             [eveN isEqual:@"Reading_InsertSacnner_Paid"] ||
+             [eveN isEqual:@"Reading_InsertImage_Paid"] ||
+             [eveN isEqual:@"Reading_InsertClipboard_Paid"] ||
+             [eveN isEqual:@"Reading_Replace_Paid"] ||
+             [eveN isEqual:@"Reading_Extract_Paid"] ||
+             [eveN isEqual:@"Reading_Split_Paid"] ||
+             [eveN isEqual:@"Reading_Rotate_Paid"] ||
+             [eveN isEqual:@"Reading_Reverse_Paid"] ||
+             [eveN isEqual:@"Reading_Copy_Paid"] ||
+             [eveN isEqual:@"Reading_Delete_Paid"] ||
+             [eveN isEqual:@"Reading_Merge_Paid"]) {
+        return @{@"Paid_PageEdit" : @"SubTbr_PageEdit"};
+    }
+    // Paid_PageEdit Home_PageEdit
+    else if ([eveN isEqual:@"Onbrd_EditPage_Paid"] ||
+             [eveN isEqual:@"Onbrd_Merge_Paid"]) {
+        return @{@"Paid_PageEdit" : @"Home_PageEdit"};
+    }
+    // Paid_Editor SubTbr_Editor
+    else if ([eveN isEqual:@"Reading_RemoveSecurity_Paid"] ||
+             [eveN isEqual:@"Reading_Compare_Paid"] ||
+             [eveN isEqual:@"Reading_AddWatermark_Paid"] ||
+             [eveN isEqual:@"Reading_RemoveWatermark_Paid"] ||
+             [eveN isEqual:@"Reading_AddBackground_Paid"] ||
+             [eveN isEqual:@"Reading_RemoveBackground_Paid"] ||
+             [eveN isEqual:@"Reading_AddHeaderFooter_Paid"] ||
+             [eveN isEqual:@"Reading_RemoveHeaderFooter_Paid"] ||
+             [eveN isEqual:@"Reading_AddBates_Paid"] ||
+             [eveN isEqual:@"Reading_RemoveBates_Paid"] ||
+             [eveN isEqual:@"Reading_Measure_Paid"]) {
+        return @{@"" : @""};
+    }
+    // Paid_Editor Home_Editor
+    else if ([eveN isEqual:@"Onbrd_Compare_Paid"] ||
+             [eveN isEqual:@"Onbrd_Background_Paid"] ||
+             [eveN isEqual:@"Onbrd_Watermard_Paid"] ||
+             [eveN isEqual:@"Onbrd_HeaderFooter_Paid"] ||
+             [eveN isEqual:@"Onbrd_Bates_Paid"] ||
+             [eveN isEqual:@"Onbrd_Security_Paid"]) {
+        return @{@"Paid_Editor" : @"Home_Editor"};
+    }
+    // Paid_Converter SubTbr_Converter
+    else if ([eveN isEqual:@"Reading_PDFtoWord_Paid"] ||
+             [eveN isEqual:@"Reading_PDFtoExcel_Paid"] ||
+              [eveN isEqual:@"Reading_PDFtoPPT_Paid"] ||
+              [eveN isEqual:@"Reading_PDFtoRTF_Paid"] ||
+              [eveN isEqual:@"Reading_PDFtoCSV_Paid"] ||
+              [eveN isEqual:@"Reading_PDFtoText_Paid"] ||
+              [eveN isEqual:@"Reading_PDFtoImage_Paid"] ||
+              [eveN isEqual:@"Reading_ExtractImage_Paid"]) {
+        return @{@"Paid_Converter" : @"SubTbr_Converter"};
+    }
+    // Paid_Converter Home_Converter
+    else if ([eveN isEqual:@"Onbrd_ConvertPDF_Paid"] ||
+             [eveN isEqual:@"Onbrd_PDFtoWord_Paid"] ||
+             [eveN isEqual:@"Onbrd_PDFtoExcel_Paid"] ||
+              [eveN isEqual:@"Onbrd_PDFtoPPT_Paid"] ||
+              [eveN isEqual:@"Onbrd_ImagetoPDF_Paid"]) {
+        return @{@"Paid_Converter" : @"Home_Converter"};
+    }
+    // Paid_Form SubTbr_Forms
+    else if ([eveN isEqual:@"Reading_TextField_Paid"] ||
+             [eveN isEqual:@"Reading_CheckBox_Paid"] ||
+             [eveN isEqual:@"Reading_RadioButton_Paid"] ||
+             [eveN isEqual:@"Reading_ListBox_Paid"] ||
+             [eveN isEqual:@"Reading_ComboBox_Paid"] ||
+             [eveN isEqual:@"Reading_Button_Paid"]) {
+        return @{@"Paid_Form" : @"SubTbr_Forms"};
+    }
+    // Paid_Sign SunTbr_Signature
+    else if ([eveN isEqual:@"Reading_FillSign_Signature_Paid"] ||
+             [eveN isEqual:@"Reading_DigitalSign_Paid"] ||
+             [eveN isEqual:@"Reading_ElectronicSign_Paid"]) {
+        return @{@"Paid_Sign" : @"SunTbr_Signature"};
+    }
+    // Paid_EditPDF Tbr_Edit PDF
+    else if ([eveN isEqual:@"Reading_EditPDF_Paid"] ||
+             [eveN isEqual:@"Reading_ReplaceText_Paid"]) {
+        return @{@"Paid_EditPDF" : @"Tbr_Edit PDF"};
+    }
+    // Paid_Redact Tbr_Redact
+    else if ([eveN isEqual:@"Reading_Redact_Paid"]) {
+        return @{@"Paid_Redact" : @"Tbr_Redact"};
+    }
+    // Paid_OCR SubTbr_OCR
+    else if ([eveN isEqual:@"Reading_OCR_Paid"] ||
+             [eveN isEqual:@"Reading_Convert_OCR_Paid"] ||
+             [eveN isEqual:@"Onbrd_OCR_Paid"]) {
+        return @{@"Paid_OCR" : @"SubTbr_OCR"};
+    }
+    // Paid_PageDisplay SubTbr_Page Display
+    else if ([eveN isEqual:@"Reading_SplitView_Paid"] ||
+             [eveN isEqual:@"Reading_Rotate_Paid"] ||
+             [eveN isEqual:@"Reading_Theme_Paid"] ||
+             [eveN isEqual:@"Reading_MultiTab_Paid"]) {
+        return @{@"Paid_PageDisplay" : @"SubTbr_Page Display"};
+    }
+    //  Home_Others
+    else if ([eveN isEqual:@"Onbrd_PrintPoster_Paid"] ||
+             [eveN isEqual:@"Onbrd_PrintMultiple_Paid"] ||
+             [eveN isEqual:@"Onbrd_PrintBooklet_Paid"]) {
+        return @{@"Paid_Others" : @"Home_Others"};
+    }
+    // Paid_Others SubTbr_Others
+    else if ([eveN isEqual:@"Reading_Flatten_Paid"]) {
+        return @{@"Paid_Others" : @"SubTbr_Others"};
+    }
+    // Paid_Others MenuBar_Others
+    else if ([eveN isEqual:@"MenuBar_PrintPoster_Paid"] ||
+             [eveN isEqual:@"MenuBar_PrintMultiple_Paid"] ||
+             [eveN isEqual:@"MenuBar_PrintBooklet_Paid"]) {
+        return @{@"Paid_Others" : @"MenuBar_Others"};
+    }
+    return nil;
+}
+
+
 @end

+ 2 - 2
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseCompareDMGWindowController.xib

@@ -607,7 +607,7 @@
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                         <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="axesIndependently" image="dmg_upgrade_part_bg" id="gA1-8q-pda"/>
                                     </imageView>
-                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="40K-mz-4Ku">
+                                    <imageView hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="40K-mz-4Ku">
                                         <rect key="frame" x="221" y="478" width="71" height="24"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="24" id="DGI-EH-CtC"/>
@@ -919,7 +919,7 @@
                                         </constraints>
                                         <color key="fillColor" red="1" green="0.36862745098039218" blue="0.17254901960784313" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     </box>
-                                    <switch horizontalHuggingPriority="750" verticalHuggingPriority="750" baseWritingDirection="leftToRight" alignment="left" translatesAutoresizingMaskIntoConstraints="NO" id="tbA-Jh-3g0">
+                                    <switch horizontalHuggingPriority="750" verticalHuggingPriority="750" baseWritingDirection="leftToRight" alignment="left" state="on" translatesAutoresizingMaskIntoConstraints="NO" id="tbA-Jh-3g0">
                                         <rect key="frame" x="128" y="468" width="44" height="23"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="40" id="Pmx-W4-KxA"/>

File diff suppressed because it is too large
+ 585 - 387
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseEmbeddedWindowController.swift


+ 90 - 27
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseEmbeddedWindowController.xib

@@ -14,6 +14,7 @@
                 <outlet property="addButton2" destination="fhV-YM-nNC" id="zz2-6X-oot"/>
                 <outlet property="addButton3" destination="gZ7-bj-dxC" id="zgq-3d-bNX"/>
                 <outlet property="aiAddOnButton" destination="lDe-WV-H1b" id="5Ou-sJ-eVI"/>
+                <outlet property="aiAddOnButton1" destination="SoM-sc-hgO" id="IJA-fa-Rcz"/>
                 <outlet property="aiAddOnLabel" destination="ORZ-Op-6Fo" id="jcd-LJ-uKh"/>
                 <outlet property="aiAddOnView" destination="A4x-fh-Pac" id="fcm-NE-WPd"/>
                 <outlet property="alipayButton" destination="HXS-6q-4NR" id="Q8R-QA-pn3"/>
@@ -30,17 +31,21 @@
                 <outlet property="coupomTextField" destination="lA7-Px-ulG" id="Tbk-LM-yvS"/>
                 <outlet property="couponBox" destination="ECb-Ab-7Fq" id="h7u-Fk-i1A"/>
                 <outlet property="couponButton" destination="16N-22-eUq" id="ufx-sv-rRp"/>
+                <outlet property="couponClearButton" destination="3y5-gc-zaR" id="vEZ-gi-ihQ"/>
                 <outlet property="discountLabel" destination="zuM-1n-klX" id="t9g-Ms-UQK"/>
                 <outlet property="discountLabel1" destination="n83-tW-ibP" id="9tA-NM-reb"/>
+                <outlet property="discountLayoutConstraint" destination="c55-3v-q3H" id="X98-LV-mYs"/>
                 <outlet property="discountPriceLabel1" destination="4Ko-7d-Zp9" id="mo9-Wc-Ag0"/>
                 <outlet property="discountPriceLabel2" destination="Zgg-6x-ycD" id="MK8-XT-aPw"/>
                 <outlet property="discountPriceLabel3" destination="0yC-if-ZhG" id="g9G-YT-PUX"/>
+                <outlet property="discountView" destination="KXb-Fc-Ihu" id="VlV-d6-GhF"/>
                 <outlet property="emailLabel" destination="e5R-5a-vfZ" id="5nn-0v-GIy"/>
                 <outlet property="emailTextField" destination="sU8-qq-wLc" id="oZw-qE-aPj"/>
                 <outlet property="errorLabel" destination="GJE-gl-04P" id="qgA-LP-pwc"/>
                 <outlet property="errorLabelTopLayout" destination="5gD-hZ-xNI" id="d9E-JR-FjO"/>
                 <outlet property="errorView" destination="W7H-2A-riS" id="bXz-uh-WFx"/>
                 <outlet property="extendedButton" destination="MbO-7o-ibN" id="NZR-8e-sHP"/>
+                <outlet property="extendedButton1" destination="Ygz-9t-jR6" id="wnO-XW-sI2"/>
                 <outlet property="extendedImageView" destination="dIC-52-LvS" id="XXJ-IK-24m"/>
                 <outlet property="extendedLabel" destination="hdH-sT-Zjy" id="CSU-f3-wES"/>
                 <outlet property="extendedView" destination="DDi-AB-k2w" id="Yo4-09-7cG"/>
@@ -82,6 +87,7 @@
                 <outlet property="weChatButton" destination="hj1-6S-4j5" id="768-we-YrD"/>
                 <outlet property="weChatPayView" destination="pBx-yN-WZs" id="1hO-qE-DpL"/>
                 <outlet property="wechatPayButton" destination="JIl-bG-lBU" id="QWO-cp-GKX"/>
+                <outlet property="wechatPayButton2" destination="JbC-bo-Pmh" id="d64-VO-kHD"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
                 <outlet property="yourOrderLabel" destination="lJA-9J-Qba" id="auS-qa-bMM"/>
             </connections>
@@ -91,10 +97,12 @@
         <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
-            <rect key="contentRect" x="196" y="240" width="970" height="618"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
+            <rect key="contentRect" x="196" y="240" width="970" height="612"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <value key="minSize" type="size" width="970" height="612"/>
+            <value key="maxSize" type="size" width="970" height="612"/>
             <view key="contentView" id="se5-gp-TjO">
-                <rect key="frame" x="0.0" y="0.0" width="970" height="618"/>
+                <rect key="frame" x="0.0" y="0.0" width="970" height="612"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="l3P-ZG-GJY">
@@ -108,7 +116,7 @@
                                     <subviews>
                                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D4J-Se-9AB">
                                             <rect key="frame" x="-2" y="2" width="210" height="16"/>
-                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Are you a student or a professor? " id="ag6-6K-D9d">
+                                            <textFieldCell key="cell" title="Are you a student or a professor? " id="ag6-6K-D9d">
                                                 <font key="font" usesAppearanceFont="YES"/>
                                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -119,6 +127,8 @@
                                         <constraint firstItem="D4J-Se-9AB" firstAttribute="top" secondItem="hQ9-hE-7SE" secondAttribute="top" constant="2" id="7aV-Ot-vTx"/>
                                         <constraint firstAttribute="bottom" secondItem="D4J-Se-9AB" secondAttribute="bottom" constant="2" id="OtY-Cy-YeS"/>
                                         <constraint firstItem="D4J-Se-9AB" firstAttribute="centerY" secondItem="hQ9-hE-7SE" secondAttribute="centerY" id="TBD-GV-YFs"/>
+                                        <constraint firstItem="D4J-Se-9AB" firstAttribute="top" secondItem="hQ9-hE-7SE" secondAttribute="top" constant="2" id="U0K-IA-VLi"/>
+                                        <constraint firstAttribute="bottom" secondItem="D4J-Se-9AB" secondAttribute="bottom" constant="2" id="cCQ-Co-b3S"/>
                                         <constraint firstItem="D4J-Se-9AB" firstAttribute="leading" secondItem="hQ9-hE-7SE" secondAttribute="leading" id="kC9-ph-ha2"/>
                                         <constraint firstAttribute="trailing" secondItem="D4J-Se-9AB" secondAttribute="trailing" id="s8e-kx-aIL"/>
                                     </constraints>
@@ -188,16 +198,16 @@
                         <rect key="frame" x="0.0" y="85" width="970" height="5"/>
                     </box>
                     <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="NWI-HO-4Jh">
-                        <rect key="frame" x="0.0" y="88" width="970" height="530"/>
+                        <rect key="frame" x="0.0" y="88" width="970" height="524"/>
                         <view key="contentView" id="yHo-bZ-A7K">
-                            <rect key="frame" x="0.0" y="0.0" width="970" height="530"/>
+                            <rect key="frame" x="0.0" y="0.0" width="970" height="524"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             <subviews>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="vmh-tU-E0c">
-                                    <rect key="frame" x="611" y="16" width="335" height="498"/>
+                                    <rect key="frame" x="611" y="16" width="335" height="492"/>
                                     <subviews>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="Dnb-jj-AQO">
-                                            <rect key="frame" x="0.0" y="478" width="335" height="20"/>
+                                            <rect key="frame" x="0.0" y="472" width="335" height="20"/>
                                             <subviews>
                                                 <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Plj-ou-oBV">
                                                     <rect key="frame" x="-2" y="2" width="37" height="16"/>
@@ -215,7 +225,7 @@
                                             </constraints>
                                         </customView>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="ih0-ST-chg">
-                                            <rect key="frame" x="0.0" y="418" width="335" height="52"/>
+                                            <rect key="frame" x="0.0" y="412" width="335" height="52"/>
                                             <subviews>
                                                 <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e5R-5a-vfZ">
                                                     <rect key="frame" x="-2" y="32" width="37" height="20"/>
@@ -272,7 +282,7 @@
                                             </constraints>
                                         </customView>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="O9F-uH-62i">
-                                            <rect key="frame" x="0.0" y="342" width="335" height="20"/>
+                                            <rect key="frame" x="0.0" y="336" width="335" height="20"/>
                                             <subviews>
                                                 <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="32Y-Vg-5EG">
                                                     <rect key="frame" x="-2" y="2" width="107" height="16"/>
@@ -290,7 +300,7 @@
                                             </constraints>
                                         </customView>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="NiL-sj-flK">
-                                            <rect key="frame" x="0.0" y="300" width="335" height="30"/>
+                                            <rect key="frame" x="0.0" y="294" width="335" height="30"/>
                                             <subviews>
                                                 <button translatesAutoresizingMaskIntoConstraints="NO" id="aFQ-fz-Dn4">
                                                     <rect key="frame" x="0.0" y="0.0" width="78" height="30"/>
@@ -332,6 +342,16 @@
                                                         <action selector="payButtonAction:" target="-2" id="Cde-Yg-tRW"/>
                                                     </connections>
                                                 </button>
+                                                <button tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="JbC-bo-Pmh">
+                                                    <rect key="frame" x="129" y="0.0" width="77" height="30"/>
+                                                    <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" image="EmbeddedPayment22" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="rnk-BW-E5i">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" metaFont="system"/>
+                                                    </buttonCell>
+                                                    <connections>
+                                                        <action selector="payButtonAction:" target="-2" id="mja-Et-dwv"/>
+                                                    </connections>
+                                                </button>
                                             </subviews>
                                             <constraints>
                                                 <constraint firstItem="aFQ-fz-Dn4" firstAttribute="leading" secondItem="NiL-sj-flK" secondAttribute="leading" id="1SA-ZG-F4l"/>
@@ -346,18 +366,22 @@
                                                 <constraint firstAttribute="bottom" secondItem="aFQ-fz-Dn4" secondAttribute="bottom" id="F36-Pi-gFe"/>
                                                 <constraint firstAttribute="bottom" secondItem="6fV-kv-Kqb" secondAttribute="bottom" id="OzU-we-1MW"/>
                                                 <constraint firstItem="JIl-bG-lBU" firstAttribute="leading" secondItem="6fV-kv-Kqb" secondAttribute="trailing" constant="8" id="PI8-H5-K7j"/>
+                                                <constraint firstItem="JbC-bo-Pmh" firstAttribute="centerY" secondItem="NiL-sj-flK" secondAttribute="centerY" id="Rlb-2K-18L"/>
                                                 <constraint firstItem="6fV-kv-Kqb" firstAttribute="leading" secondItem="aFQ-fz-Dn4" secondAttribute="trailing" constant="8" id="Rqt-FS-5jt"/>
                                                 <constraint firstAttribute="trailing" secondItem="HXS-6q-4NR" secondAttribute="trailing" id="ZMD-wn-srM"/>
+                                                <constraint firstItem="JbC-bo-Pmh" firstAttribute="centerX" secondItem="NiL-sj-flK" secondAttribute="centerX" id="bee-zY-usk"/>
+                                                <constraint firstItem="JbC-bo-Pmh" firstAttribute="width" secondItem="aFQ-fz-Dn4" secondAttribute="width" id="bvg-hk-Os2"/>
                                                 <constraint firstItem="JIl-bG-lBU" firstAttribute="height" secondItem="aFQ-fz-Dn4" secondAttribute="height" id="dNJ-BF-cFT"/>
                                                 <constraint firstItem="aFQ-fz-Dn4" firstAttribute="top" secondItem="NiL-sj-flK" secondAttribute="top" id="dgy-tC-gFg"/>
                                                 <constraint firstItem="6fV-kv-Kqb" firstAttribute="width" secondItem="aFQ-fz-Dn4" secondAttribute="width" id="dx3-VY-Llj"/>
                                                 <constraint firstItem="HXS-6q-4NR" firstAttribute="leading" secondItem="JIl-bG-lBU" secondAttribute="trailing" constant="8" id="kAe-OC-bwh"/>
                                                 <constraint firstAttribute="bottom" secondItem="JIl-bG-lBU" secondAttribute="bottom" id="ma9-4C-Qo4"/>
                                                 <constraint firstItem="HXS-6q-4NR" firstAttribute="width" secondItem="aFQ-fz-Dn4" secondAttribute="width" id="nPt-xT-9oG"/>
+                                                <constraint firstItem="JbC-bo-Pmh" firstAttribute="height" secondItem="aFQ-fz-Dn4" secondAttribute="height" id="t6q-xl-FQ9"/>
                                             </constraints>
                                         </customView>
                                         <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="2Fv-aT-yF4">
-                                            <rect key="frame" x="0.0" y="254" width="335" height="40"/>
+                                            <rect key="frame" x="0.0" y="248" width="335" height="40"/>
                                             <view key="contentView" id="hfC-RP-EPJ">
                                                 <rect key="frame" x="0.0" y="0.0" width="335" height="40"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -367,15 +391,15 @@
                                             </constraints>
                                         </box>
                                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bf9-95-LZa">
-                                            <rect key="frame" x="-2" y="232" width="339" height="16"/>
-                                            <textFieldCell key="cell" lineBreakMode="clipping" alignment="left" title="Label" id="xst-Rc-74s">
+                                            <rect key="frame" x="-2" y="226" width="339" height="16"/>
+                                            <textFieldCell key="cell" alignment="left" title="Label" id="xst-Rc-74s">
                                                 <font key="font" usesAppearanceFont="YES"/>
                                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                             </textFieldCell>
                                         </textField>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="W7H-2A-riS">
-                                            <rect key="frame" x="0.0" y="382" width="335" height="32"/>
+                                            <rect key="frame" x="0.0" y="376" width="335" height="32"/>
                                             <subviews>
                                                 <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJE-gl-04P">
                                                     <rect key="frame" x="-2" y="0.0" width="339" height="32"/>
@@ -420,13 +444,13 @@
                                     </constraints>
                                 </customView>
                                 <box horizontalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="h4u-aQ-6IT">
-                                    <rect key="frame" x="584" y="16" width="5" height="498"/>
+                                    <rect key="frame" x="584" y="16" width="5" height="492"/>
                                 </box>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="tRc-PM-BHR">
-                                    <rect key="frame" x="24" y="16" width="538" height="498"/>
+                                    <rect key="frame" x="24" y="16" width="538" height="492"/>
                                     <subviews>
                                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lJA-9J-Qba">
-                                            <rect key="frame" x="-2" y="482" width="542" height="16"/>
+                                            <rect key="frame" x="-2" y="476" width="542" height="16"/>
                                             <textFieldCell key="cell" lineBreakMode="clipping" title="Your Order" id="Ozs-wZ-Jdr">
                                                 <font key="font" usesAppearanceFont="YES"/>
                                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -434,10 +458,10 @@
                                             </textFieldCell>
                                         </textField>
                                         <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="aGq-d0-5pa">
-                                            <rect key="frame" x="0.0" y="467" width="538" height="5"/>
+                                            <rect key="frame" x="0.0" y="461" width="538" height="5"/>
                                         </box>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="M6b-Qf-5FA">
-                                            <rect key="frame" x="0.0" y="397" width="538" height="48"/>
+                                            <rect key="frame" x="0.0" y="391" width="538" height="48"/>
                                             <subviews>
                                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="nrp-eO-h7F">
                                                     <rect key="frame" x="0.0" y="0.0" width="264" height="48"/>
@@ -575,7 +599,7 @@
                                             </constraints>
                                         </customView>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="A4x-fh-Pac">
-                                            <rect key="frame" x="0.0" y="327" width="538" height="50"/>
+                                            <rect key="frame" x="0.0" y="321" width="538" height="50"/>
                                             <subviews>
                                                 <button translatesAutoresizingMaskIntoConstraints="NO" id="lDe-WV-H1b">
                                                     <rect key="frame" x="4" y="22" width="24" height="24"/>
@@ -587,9 +611,6 @@
                                                         <constraint firstAttribute="height" constant="24" id="ZBa-N0-ylx"/>
                                                         <constraint firstAttribute="width" constant="24" id="lvK-xb-rbZ"/>
                                                     </constraints>
-                                                    <connections>
-                                                        <action selector="aiAddOnButtonAction:" target="-2" id="dkK-Uu-atB"/>
-                                                    </connections>
                                                 </button>
                                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="dYr-QE-Sxx">
                                                     <rect key="frame" x="32" y="4" width="428" height="42"/>
@@ -700,22 +721,36 @@
                                                         <constraint firstAttribute="trailing" secondItem="Zgg-6x-ycD" secondAttribute="trailing" id="xT3-sp-T7u"/>
                                                     </constraints>
                                                 </customView>
+                                                <button translatesAutoresizingMaskIntoConstraints="NO" id="SoM-sc-hgO">
+                                                    <rect key="frame" x="0.0" y="0.0" width="538" height="50"/>
+                                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="RLD-xB-0t4">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" metaFont="system"/>
+                                                    </buttonCell>
+                                                    <connections>
+                                                        <action selector="aiAddOnButtonAction:" target="-2" id="8bw-GH-4hK"/>
+                                                    </connections>
+                                                </button>
                                             </subviews>
                                             <constraints>
+                                                <constraint firstItem="SoM-sc-hgO" firstAttribute="top" secondItem="A4x-fh-Pac" secondAttribute="top" id="02R-GU-Dkr"/>
                                                 <constraint firstItem="dYr-QE-Sxx" firstAttribute="leading" secondItem="lDe-WV-H1b" secondAttribute="trailing" constant="4" id="12Y-Rs-w8X"/>
                                                 <constraint firstAttribute="bottom" secondItem="hor-yk-1fT" secondAttribute="bottom" constant="4" id="1Ui-f2-qag"/>
                                                 <constraint firstItem="dYr-QE-Sxx" firstAttribute="top" secondItem="A4x-fh-Pac" secondAttribute="top" constant="4" id="8qN-6p-nLx"/>
                                                 <constraint firstAttribute="height" constant="50" id="MFo-VD-9b5"/>
+                                                <constraint firstAttribute="bottom" secondItem="SoM-sc-hgO" secondAttribute="bottom" id="MSJ-Vp-xw8"/>
                                                 <constraint firstAttribute="trailing" secondItem="hor-yk-1fT" secondAttribute="trailing" constant="4" id="Seq-KI-sVI"/>
                                                 <constraint firstItem="hor-yk-1fT" firstAttribute="leading" secondItem="dYr-QE-Sxx" secondAttribute="trailing" constant="4" id="Vdm-LF-cDW"/>
+                                                <constraint firstItem="SoM-sc-hgO" firstAttribute="leading" secondItem="A4x-fh-Pac" secondAttribute="leading" id="W1w-fo-9qR"/>
                                                 <constraint firstAttribute="bottom" secondItem="dYr-QE-Sxx" secondAttribute="bottom" constant="4" id="Wh2-V4-yKG"/>
                                                 <constraint firstItem="hor-yk-1fT" firstAttribute="top" secondItem="A4x-fh-Pac" secondAttribute="top" constant="4" id="XA8-ZN-UhA"/>
+                                                <constraint firstAttribute="trailing" secondItem="SoM-sc-hgO" secondAttribute="trailing" id="Zc2-q0-Q7C"/>
                                                 <constraint firstItem="lDe-WV-H1b" firstAttribute="leading" secondItem="A4x-fh-Pac" secondAttribute="leading" constant="4" id="aIf-D0-MKV"/>
                                                 <constraint firstItem="lDe-WV-H1b" firstAttribute="top" secondItem="A4x-fh-Pac" secondAttribute="top" constant="4" id="kbR-s8-zZC"/>
                                             </constraints>
                                         </customView>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="DDi-AB-k2w">
-                                            <rect key="frame" x="0.0" y="265" width="538" height="50"/>
+                                            <rect key="frame" x="0.0" y="259" width="538" height="50"/>
                                             <subviews>
                                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="uWl-6n-x7Q">
                                                     <rect key="frame" x="464" y="4" width="70" height="42"/>
@@ -846,13 +881,22 @@
                                                         <constraint firstAttribute="height" constant="24" id="fEZ-v5-79J"/>
                                                         <constraint firstAttribute="width" constant="24" id="yjJ-ny-a2R"/>
                                                     </constraints>
+                                                </button>
+                                                <button translatesAutoresizingMaskIntoConstraints="NO" id="Ygz-9t-jR6">
+                                                    <rect key="frame" x="0.0" y="0.0" width="538" height="50"/>
+                                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="bfE-zn-FkJ">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" metaFont="system"/>
+                                                    </buttonCell>
                                                     <connections>
-                                                        <action selector="extendedButtonAction:" target="-2" id="sBy-Nh-Yud"/>
+                                                        <action selector="extendedButtonAction:" target="-2" id="zAR-br-FUX"/>
                                                     </connections>
                                                 </button>
                                             </subviews>
                                             <constraints>
+                                                <constraint firstAttribute="bottom" secondItem="Ygz-9t-jR6" secondAttribute="bottom" id="8Ym-aZ-6oJ"/>
                                                 <constraint firstItem="MbO-7o-ibN" firstAttribute="leading" secondItem="DDi-AB-k2w" secondAttribute="leading" constant="4" id="GDA-I4-y2d"/>
+                                                <constraint firstItem="Ygz-9t-jR6" firstAttribute="top" secondItem="DDi-AB-k2w" secondAttribute="top" id="ISy-1q-kve"/>
                                                 <constraint firstAttribute="height" constant="50" id="KTP-AA-im1"/>
                                                 <constraint firstItem="uWl-6n-x7Q" firstAttribute="top" secondItem="DDi-AB-k2w" secondAttribute="top" constant="4" id="Kfe-xA-lm4"/>
                                                 <constraint firstAttribute="trailing" secondItem="uWl-6n-x7Q" secondAttribute="trailing" constant="4" id="SSe-a6-yI6"/>
@@ -860,6 +904,8 @@
                                                 <constraint firstItem="MbO-7o-ibN" firstAttribute="top" secondItem="DDi-AB-k2w" secondAttribute="top" constant="4" id="aVG-Ik-aSh"/>
                                                 <constraint firstAttribute="bottom" secondItem="OKm-hL-M8J" secondAttribute="bottom" constant="4" id="d4G-L5-DWJ"/>
                                                 <constraint firstAttribute="bottom" secondItem="uWl-6n-x7Q" secondAttribute="bottom" constant="4" id="ob3-7d-Bed"/>
+                                                <constraint firstAttribute="trailing" secondItem="Ygz-9t-jR6" secondAttribute="trailing" id="pcU-cF-wQb"/>
+                                                <constraint firstItem="Ygz-9t-jR6" firstAttribute="leading" secondItem="DDi-AB-k2w" secondAttribute="leading" id="pcp-7l-vmI"/>
                                                 <constraint firstItem="OKm-hL-M8J" firstAttribute="top" secondItem="DDi-AB-k2w" secondAttribute="top" constant="4" id="yEI-mc-7WR"/>
                                                 <constraint firstItem="uWl-6n-x7Q" firstAttribute="leading" secondItem="OKm-hL-M8J" secondAttribute="trailing" constant="4" id="zG5-lZ-l8Y"/>
                                             </constraints>
@@ -978,15 +1024,31 @@
                                                                             <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                                                         </textFieldCell>
                                                                     </textField>
+                                                                    <button translatesAutoresizingMaskIntoConstraints="NO" id="3y5-gc-zaR">
+                                                                        <rect key="frame" x="294" y="3" width="20" height="20"/>
+                                                                        <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" image="ad_cancel_button00" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="VVQ-Bm-i0Z">
+                                                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                                            <font key="font" metaFont="system"/>
+                                                                        </buttonCell>
+                                                                        <constraints>
+                                                                            <constraint firstAttribute="height" constant="20" id="sf2-M6-hOb"/>
+                                                                            <constraint firstAttribute="width" constant="20" id="tzF-K4-ZxX"/>
+                                                                        </constraints>
+                                                                        <connections>
+                                                                            <action selector="couponClearButton:" target="-2" id="uRG-Gj-lvm"/>
+                                                                        </connections>
+                                                                    </button>
                                                                 </subviews>
                                                                 <constraints>
                                                                     <constraint firstAttribute="trailing" secondItem="lA7-Px-ulG" secondAttribute="trailing" id="1RW-JP-lfy"/>
                                                                     <constraint firstItem="lA7-Px-ulG" firstAttribute="leading" secondItem="2We-vj-b92" secondAttribute="leading" id="M4Q-OV-nmR"/>
+                                                                    <constraint firstAttribute="trailing" secondItem="3y5-gc-zaR" secondAttribute="trailing" constant="4" id="s0v-at-YPd"/>
                                                                 </constraints>
                                                             </view>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="320" id="7qL-FY-txj"/>
                                                                 <constraint firstItem="lA7-Px-ulG" firstAttribute="centerY" secondItem="ECb-Ab-7Fq" secondAttribute="centerY" id="DJA-0Z-blU"/>
+                                                                <constraint firstItem="3y5-gc-zaR" firstAttribute="centerY" secondItem="ECb-Ab-7Fq" secondAttribute="centerY" id="KiG-mM-Pc6"/>
                                                             </constraints>
                                                         </box>
                                                         <box boxType="custom" cornerRadius="1" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="KlW-6M-F8A">
@@ -1035,13 +1097,13 @@
                                                 <constraint firstItem="KXb-Fc-Ihu" firstAttribute="leading" secondItem="2Hk-KG-FSr" secondAttribute="leading" id="2ND-n1-fYL"/>
                                                 <constraint firstItem="o5K-ag-Vbf" firstAttribute="leading" secondItem="2Hk-KG-FSr" secondAttribute="leading" id="5wl-Gd-dUP"/>
                                                 <constraint firstItem="Imv-vq-rsc" firstAttribute="top" secondItem="o5K-ag-Vbf" secondAttribute="bottom" constant="8" id="HxS-Ie-ICF"/>
-                                                <constraint firstItem="o5K-ag-Vbf" firstAttribute="top" secondItem="2Hk-KG-FSr" secondAttribute="top" id="Iza-QQ-I4v"/>
                                                 <constraint firstAttribute="trailing" secondItem="ZY4-l7-Ejn" secondAttribute="trailing" id="RMg-ar-mLp"/>
                                                 <constraint firstItem="Imv-vq-rsc" firstAttribute="leading" secondItem="2Hk-KG-FSr" secondAttribute="leading" id="Y0H-ih-Rgw"/>
                                                 <constraint firstItem="ZY4-l7-Ejn" firstAttribute="top" secondItem="KXb-Fc-Ihu" secondAttribute="bottom" constant="16" id="c55-3v-q3H"/>
                                                 <constraint firstAttribute="trailing" secondItem="KXb-Fc-Ihu" secondAttribute="trailing" id="iGT-gn-pAk"/>
                                                 <constraint firstAttribute="height" constant="128" id="j6Q-TK-M7b"/>
                                                 <constraint firstItem="KXb-Fc-Ihu" firstAttribute="top" secondItem="Imv-vq-rsc" secondAttribute="bottom" constant="8" id="oTP-4f-B8x"/>
+                                                <constraint firstAttribute="bottom" secondItem="ZY4-l7-Ejn" secondAttribute="bottom" id="seY-YL-vDW"/>
                                                 <constraint firstAttribute="trailing" secondItem="o5K-ag-Vbf" secondAttribute="trailing" id="thc-FV-DHJ"/>
                                                 <constraint firstItem="ZY4-l7-Ejn" firstAttribute="leading" secondItem="2Hk-KG-FSr" secondAttribute="leading" id="ud3-KR-CPI"/>
                                                 <constraint firstAttribute="trailing" secondItem="Imv-vq-rsc" secondAttribute="trailing" id="y07-bZ-NS8"/>
@@ -1528,5 +1590,6 @@
         <image name="EmbeddedPayment23" width="78" height="30"/>
         <image name="EmbeddedPayment24" width="78" height="30"/>
         <image name="EmbeddedPayment26" width="4" height="4"/>
+        <image name="ad_cancel_button00" width="30" height="30"/>
     </resources>
 </document>

+ 4 - 3
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseFirstTrialWindowController.swift

@@ -417,10 +417,11 @@ import Cocoa
 //        }
 //        callBack(self,sender,self.emailTextField.stringValue,self.nameTextField.stringValue)
 //        FMTrackEventManager.defaultManager.trackOnceEvent(event: "PUW", withProperties: ["PUW_Btn":"Btn_PUW_BuyNow"])
-        #if VERSION_DMG
-        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.ai.product_1")
+#if VERSION_DMG
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.ai.product_1")
         embeddedWC.showWindow(nil)
-        #endif
+        embeddedWC.window?.center()
+#endif
     }
     
     @IBAction func enterLicenseAction(_ sender: HyperLinkButton) {

+ 3 - 2
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseLimitWindowController.swift

@@ -162,9 +162,10 @@ class KMPurchaseLimitWindowController: NSWindowController {
 //        NSWorkspace.shared.open(url)
 //        FMTrackEventManager.defaultManager.trackOnceEvent(event: "PUW", withProperties: ["PUW_Btn":"Btn_PUW_PDFtoOffice_Buy"])
 #if VERSION_DMG
-        let embeddedWC = KMPurchaseEmbeddedWindowController(windowNibName: "com.brother.pdfreaderpro.mac.product_2")
+        let embeddedWC = KMPurchaseEmbeddedWindowController.currentFirstTrialWC("com.brother.pdfreaderpro.mac.product_2")
         embeddedWC.showWindow(nil)
-        #endif
+        embeddedWC.window?.center()
+#endif
     }
     
     @IBAction func continueConvertAction(_ sender: Any) {

+ 4 - 0
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m

@@ -450,6 +450,7 @@ NSPopoverDelegate>
 //                    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"Btn_PUW_BuyNow-Expire"}];
                     KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentFirstTrialWC:@"com.brother.pdfreaderpro.mac.product_1"];
                     [embeddedWC showWindow:nil];
+                    [[embeddedWC window] center];
                 }
             };
         self.testVC.mouseEventCall = ^(BOOL mouseEnter) {
@@ -487,6 +488,7 @@ NSPopoverDelegate>
 //            [[FMTrackEventManager defaultManager] trackEventWithEvent:@"Tbr" withProperties:@{@"Tbr_Btn":@"Btn_Tbr_PDFtoOffice"}];
             KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentFirstTrialWC:@"com.brother.pdfreaderpro.mac.product_2"];
             [embeddedWC showWindow:nil];
+            [[embeddedWC window] center];
         }
     } else {
         if ([VerificationManager manager].needUpgradeLicense) {
@@ -495,6 +497,7 @@ NSPopoverDelegate>
 //            [[FMTrackEventManager defaultManager] trackEventWithEvent:@"Tbr" withProperties:@{@"Tbr_Btn":@"Btn_Tbr_PDFtoOffice"}];
             KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentFirstTrialWC:@"com.brother.pdfreaderpro.mac.product_2"];
             [embeddedWC showWindow:nil];
+            [[embeddedWC window] center];
         } else {
             KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeNormal];
             [vc showWindow:nil];
@@ -554,6 +557,7 @@ NSPopoverDelegate>
 //        [[NSWorkspace sharedWorkspace] openURL:url];
         KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentFirstTrialWC:@"com.brother.pdfreaderpro.ai.product_1"];
         [embeddedWC showWindow:nil];
+        [[embeddedWC window] center];
 #else
         
         [[AIPurchaseWindowController currentWC] showWindow:nil];

+ 9 - 5
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationWindowController.m

@@ -299,9 +299,11 @@ static KMVerificationWindowController *_currentWindowController = nil;
                                                 name:[VerificationManager manager].accountName] ;
             } else if (clickIndex == 1) {
                 //了解更多
-                NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?utm_source=app_dmg&utm_medium=dmg_puw_sec_free_trial", Swift_oc_Tool.Store_Link_OC]];
-                [[NSWorkspace sharedWorkspace] openURL:url];
-                [blockSelf close];
+//                NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?utm_source=app_dmg&utm_medium=dmg_puw_sec_free_trial", Swift_oc_Tool.Store_Link_OC]];
+//                [[NSWorkspace sharedWorkspace] openURL:url];
+//                [blockSelf close];
+                KMPurchaseCompareDMGWindowController *singleTon = [[KMPurchaseCompareDMGWindowController alloc] init];
+                [singleTon showWindow:nil];
             } else if (clickIndex == 2) {
                 //输入序列码
                 KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
@@ -755,8 +757,10 @@ static KMVerificationWindowController *_currentWindowController = nil;
 
 - (void)verificationBuy {
 #if VERSION_DMG
-    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?utm_source=MacAppDmg&utm_campaign=StoreLink&utm_medium=PdfStore", Swift_oc_Tool.Store_Link_OC]];
-    [[NSWorkspace sharedWorkspace] openURL:url];
+//    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?utm_source=MacAppDmg&utm_campaign=StoreLink&utm_medium=PdfStore", Swift_oc_Tool.Store_Link_OC]];
+//    [[NSWorkspace sharedWorkspace] openURL:url];
+    KMPurchaseCompareDMGWindowController *singleTon = [[KMPurchaseCompareDMGWindowController alloc] init];
+    [singleTon showWindow:nil];
 #endif
     
 }

+ 32 - 37
PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/KMDMGProductsManager.swift

@@ -7,9 +7,10 @@
 
 import Cocoa
 
+#if VERSION_DMG
 enum ProductType {
-    case ipaConvert                     // 转档
-    case ipaConvert_checkout            // 转档 单独
+    case ipaConvert                     // 转档 单独
+    case ipaConvert_checkout            // 转档
     case ipaPremium                     // 标准
     case ipaPermanent                   // 高级
     case ipaPremiumCrossPlatform        // 标准跨平台
@@ -24,9 +25,7 @@ enum ProductType {
     public static let shareInstance = KMDMGProductsManager.init()
     
     var productDatas: [String : Any]?
-    var activityPrice_CNY: String = "0.00"
     var activityPrice: String = "0.00"
-    var price_CNY: String = "0.00"
     var price: String = "0.00"
     
     override init() {
@@ -54,62 +53,57 @@ enum ProductType {
         } else {
             if let isExist = productDatas?.keys.contains(productID), isExist {
                 let value: [String : Any] = productDatas?[productID] as! [String : Any]
-                activityPrice_CNY = value["activity_cny_price"] as! String
-                activityPrice = value["activity_price"] as! String
-                price_CNY = value["cny_price"] as! String
-                price = value["price"] as! String
+                if NSLocalizedString("USD", comment: "") == "CNY" {
+                    activityPrice = value["activity_cny_price"] as! String
+                    price = value["cny_price"] as! String
+                } else {
+                    activityPrice = value["activity_price"] as! String
+                    price = value["price"] as! String
+                }
             }
         }
     }
 
-    // 优惠价(人民币)
-    func getActivityPriceCNY(_ productID: String) -> String {
-        if productDatas == nil {
-            getProductDatas()
-        } else {
-            if let isExist = productDatas?.keys.contains(productID), isExist {
-                let value: [String : Any] = productDatas?[productID] as! [String : Any]
-                return value["activity_cny_price"] as! String
-            }
-        }
-        
-        return "388.0"
-    }
-    // 优惠价(美元)
+    // 优惠价
     func getActivityPrice(_ productID: String) -> String {
         if productDatas == nil {
             getProductDatas()
         } else {
             if let isExist = productDatas?.keys.contains(productID), isExist {
                 let value: [String : Any] = productDatas?[productID] as! [String : Any]
-                return value["activity_price"] as! String
+                if NSLocalizedString("USD", comment: "") == "CNY" {
+                    return value["activity_cny_price"] as! String
+                } else {
+                    return value["activity_price"] as! String
+                }
             }
         }
-        return "59.99"
-    }
-    // 原价(人民币)
-    func getPriceCNY(_ productID: String) -> String {
-        if productDatas == nil {
-            getProductDatas()
+        if NSLocalizedString("USD", comment: "") == "CNY" {
+            return "388.0"
         } else {
-            if let isExist = productDatas?.keys.contains(productID), isExist {
-                let value: [String : Any] = productDatas?[productID] as! [String : Any]
-                return value["cny_price"] as! String
-            }
+            return "59.99"
         }
-        return "388"
     }
-    //原价(美元)
+    
+    // 原价
     func getPrice(_ productID: String) -> String {
         if productDatas == nil {
             getProductDatas()
         } else {
             if let isExist = productDatas?.keys.contains(productID), isExist {
                 let value: [String : Any] = productDatas?[productID] as! [String : Any]
-                return value["price"] as! String
+                if NSLocalizedString("USD", comment: "") == "CNY" {
+                    return value["cny_price"] as! String
+                } else {
+                    return value["price"] as! String
+                }
             }
         }
-        return "59.99"
+        if NSLocalizedString("USD", comment: "") == "CNY" {
+            return "388"
+        } else {
+            return "59.99"
+        }
     }
     
     private func _getProductDatas(callback: @escaping (([String:Any]?, Any?)->Void)) {
@@ -130,3 +124,4 @@ enum ProductType {
         }
     }
 }
+#endif

+ 58 - 0
PDF Office/PDF Master/Strings/ar.lproj/Localizable.strings

@@ -4640,3 +4640,61 @@
 "Convert PDFs " = "تحويل ملفات PDF";
 "Experience Now" = "تجربة الآن";
 
+"Free" = "نسخة مجانية";
+"Permanent" = "نسخة متميزة";
+"Premium" = "الطبعة القياسية";
+"Apply" = "طلب";
+"Billing Information" = "معلومات الطلب";
+"Discount" = "تخفيض";
+"Email to receive license code" = "البريد الإلكتروني المستخدم لتلقي الرموز التسلسلية";
+"Invalid Email address. Please try again." = "عنوان البريد الإلكتروني غير صالح، يرجى المحاولة مرة أخرى";
+"Email could not be null." = "لا يمكن أن يكون عنوان البريد الإلكتروني فارغًا";
+"Extended Device Access" = "حزمة ترقية إذن الأجهزة المتعددة";
+"Get access to your plan on up to 2 devices." = "يمكن تفعيل رمز تسلسلي واحد على جهازين في نفس الوقت.";
+"Support Mac or Windows device" = "منصات التنشيط المدعومة: Windows/Mac";
+"I have a coupon?" = "هل لدي قسيمة؟";
+"List Price" = "سعر الطلب";
+"Name" = "اسم";
+"PDF to Office Pack" = "حزمة تحويل PDF إلى Office";
+"One time purchase" = "قم بإجراء عملية شراء لمرة واحدة واحصل على تحويلات غير محدودة إلى تنسيقات متعددة إلى الأبد.";
+"Payment Method" = "طريقة الدفع";
+"PDF Reader Pro for Windows" = "قارئ PDF برو لنظام التشغيل Windows";
+"Permanent version (with PDF to Office Pack)" = "الإصدار القياسي + حزمة تحويل PDF";
+"One license for one device. One time purchase." = "يدعم رمز تسلسلي واحد جهازًا واحدًا، ويتم شراء الترخيص الدائم مرة واحدة.";
+"Premium version" = "الطبعة القياسية";
+"One license for one device. One time purchase." = "يدعم رمز تسلسلي واحد جهازًا واحدًا، ويتم شراء الترخيص الدائم مرة واحدة.";
+"Your Order" = "طلبك";
+"Total" = "المجموع";
+"Trial Expired, Upgrade to Pro Version" = "انتهت صلاحية النسخة التجريبية، قم بالترقية إلى الإصدار Pro المرخص بشكل دائم";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "من خلال التقدم بطلب للحصول على نسخة تجريبية مجانية، فإنك توافق على اتفاقية الخصوصية";
+"Payment is being verified..." = "جارٍ التحقق من معلومات الدفع...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "تم إغلاق صفحة الطلب الحالية إذا قمت بالدفع بنجاح، يرجى التحقق من الحالة الحالية للطلب في بريدك الإلكتروني.";
+"AI Add-on" = "أدوات الذكاء الاصطناعي";
+"Individual monthly plan. Manually renew." = "الخطة الشهرية الشخصية. التجديد اليدوي.";
+"PDF Reader Pro AI Tools" = "مجموعة أدوات PDF Reader Pro AI";
+"50 credits for 30 days" = "50 نقطة أسهم، متاحة خلال 30 يومًا";
+"Manually renew at USD 14.99" = "التجديد اليدوي 99 يوان شهريا";
+"PDF to Office" = "حزمة تحويل PDF إلى Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "تحويل PDF إلى Word (.docx)، Excel، (.xlsx)، PowerPoint (.pptx) دون الاتصال بالإنترنت";
+"and more offline. It's one time purchase." = "وملفات التنسيق الأخرى. شراء ترخيص دائم مرة واحدة";
+"License Code" = "الرمز التسلسلي";
+"Not Found?" = "لم يتم العثور عليه؟";
+"Please check if the information is wrong or the network is error." = "يرجى التحقق مما إذا كانت المعلومات صحيحة أو ما إذا كانت الشبكة غير طبيعية.";
+"The coupon code is invalid. Please try again." = "رمز القسيمة غير صالح، يرجى المحاولة مرة أخرى.";
+"Please enter right license code. How to Retrieve License." = "الرجاء إدخال رمز الترخيص الصحيح. كيفية استرجاع الترخيص .";
+"Input license code previously activated the app" = "أدخل رمز الترخيص للتطبيق الذي تم تفعيله مسبقًا.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "من خلال تقديم هذا الطلب، أوافق على سياسة خصوصية منتج الاشتراك وشروط الخدمة";
+"Continue to Pay" = "الاستمرار في الدفع";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "يقوم رمز تسلسلي واحد بتنشيط جهازين مكتبيين (Mac وWindows)";
+"Pay sum" = "مبلغ الدفع";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "انقر هنا لتقديم طلب للحصول على خصم التعليم. يرجى الاتصال بنا لتقديم طلب للحصول على خصومات الشراء بالجملة.";
+"Applied" = "مُطبَّق";
+"Please enter a coupon code." = "الرجاء إدخال رمز القسيمة.";
+"Please enter your email for license receiving." = "الرجاء إدخال عنوان بريدك الإلكتروني لتلقي الرمز التسلسلي.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "لم يتم الحصول على حالة الدفع بعد إذا تم إتمام الدفع، يرجى التحقق من الرمز التسلسلي من بريدك الإلكتروني.";
+"Postcode" = "شفرة البريد";
+"Purchase successfully and the software is activated. Please check your email for order details." = "بعد إتمام عملية الدفع وتفعيل البرنامج بنجاح، يرجى التحقق من بريدك الإلكتروني للحصول على تفاصيل الطلب.";
+"Scan QR Code with Alipay" = "افتح Alipay وامسح رمز الاستجابة السريعة ضوئيًا";
+"Scan QR Code with WeChat" = "افتح WeChat وامسح رمز الاستجابة السريعة ضوئيًا";
+"The coupon code has expired." = "لقد انتهت صلاحية القسيمة الخاصة بك.";
+"The coupon code has been used, please change your coupon code." = "لقد تم استخدام قسيمتك، يرجى تغيير رمز القسيمة.";

+ 58 - 0
PDF Office/PDF Master/Strings/de.lproj/Localizable.strings

@@ -3005,3 +3005,61 @@
 
 "Experience Now" = "Jetzt erleben";
 
+"Free" = "Kostenlose Version";
+"Permanent" = "Premium-Version";
+"Premium" = "Standardausgabe";
+"Apply" = "Anwendung";
+"Billing Information" = "Bestellinformationen";
+"Discount" = "Rabatt";
+"Email to receive license code" = "E-Mail, die zum Empfangen von Seriencodes verwendet wird";
+"Invalid Email address. Please try again." = "Ungültige E-Mail-Adresse, bitte versuchen Sie es erneut";
+"Email could not be null." = "Die E-Mail-Adresse darf nicht leer sein";
+"Extended Device Access" = "Upgrade-Paket für Berechtigungen für mehrere Geräte";
+"Get access to your plan on up to 2 devices." = "Ein Seriencode kann auf zwei Geräten gleichzeitig aktiviert werden.";
+"Support Mac or Windows device" = "Unterstützte Aktivierungsplattformen: Windows/Mac";
+"I have a coupon?" = "Habe ich einen Gutschein?";
+"List Price" = "Bestellpreis";
+"Name" = "Name";
+"PDF to Office Pack" = "PDF-zu-Office-Konvertierungspaket";
+"One time purchase" = "Machen Sie einen einmaligen Kauf und erhalten Sie unbegrenzte Konvertierungen in mehrere Formate für immer.";
+"Payment Method" = "Zahlungsart";
+"PDF Reader Pro for Windows" = "PDF Reader Pro für Windows";
+"Permanent version (with PDF to Office Pack)" = "Standardversion + PDF-Konvertierungspaket";
+"One license for one device. One time purchase." = "Ein Seriencode unterstützt ein Gerät und eine dauerhafte Lizenz wird einmalig erworben.";
+"Premium version" = "Standardausgabe";
+"One license for one device. One time purchase." = "Ein Seriencode unterstützt ein Gerät und eine dauerhafte Lizenz wird einmalig erworben.";
+"Your Order" = "Ihre Bestellung";
+"Total" = "gesamt";
+"Trial Expired, Upgrade to Pro Version" = "Die Testversion ist abgelaufen. Upgraden Sie auf die dauerhaft lizenzierte Pro-Version";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Indem Sie sich für eine kostenlose Testversion bewerben, stimmen Sie der Datenschutzvereinbarung zu";
+"Payment is being verified..." = "Zahlungsinformationen werden überprüft...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "Die aktuelle Bestellseite ist geschlossen. Wenn Sie erfolgreich bezahlt haben, überprüfen Sie bitte den aktuellen Status der Bestellung in Ihrer E-Mail.";
+"AI Add-on" = "KI-Tools";
+"Individual monthly plan. Manually renew." = "Persönlicher Monatsplan. Manuelle Erneuerung.";
+"PDF Reader Pro AI Tools" = "PDF Reader Pro AI-Toolkit";
+"50 credits for 30 days" = "50 Equity-Punkte, verfügbar innerhalb von 30 Tagen";
+"Manually renew at USD 14.99" = "Manuelle Verlängerung, 99 Yuan pro Monat";
+"PDF to Office" = "PDF-zu-Office-Konvertierungspaket";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Konvertieren Sie PDF offline in Word (.docx), Excel (.xlsx), PowerPoint (.pptx).";
+"and more offline. It's one time purchase." = "und andere Formatdateien. Kaufen Sie einmalig eine Dauerlizenz";
+"License Code" = "Seriennummer";
+"Not Found?" = "nicht gefunden?";
+"Please check if the information is wrong or the network is error." = "Bitte überprüfen Sie, ob die Informationen korrekt sind oder ob das Netzwerk abnormal ist.";
+"The coupon code is invalid. Please try again." = "Der Gutscheincode ist ungültig, bitte versuchen Sie es erneut.";
+"Please enter right license code. How to Retrieve License." = "Bitte geben Sie den richtigen Lizenzcode ein. So rufen Sie eine Lizenz ab.";
+"Input license code previously activated the app" = "Geben Sie den Lizenzcode für die zuvor aktivierte Anwendung ein.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Durch das Absenden dieser Bestellung stimme ich den Datenschutzbestimmungen und Nutzungsbedingungen für Abonnementprodukte zu";
+"Continue to Pay" = "Zahlen Sie weiter";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Ein Seriencode aktiviert zwei Desktop-Geräte (Mac und Windows)";
+"Pay sum" = "Zahlungsbetrag";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Klicken Sie hier, um einen Bildungsrabatt zu beantragen. Bitte kontaktieren Sie uns, um Mengenrabatte zu beantragen.";
+"Applied" = "Angewandt";
+"Please enter a coupon code." = "Bitte geben Sie den Gutscheincode ein.";
+"Please enter your email for license receiving." = "Bitte geben Sie Ihre E-Mail-Adresse ein, um den Seriencode zu erhalten.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Der Zahlungsstatus wurde noch nicht ermittelt. Wenn die Zahlung abgeschlossen ist, überprüfen Sie bitte den Seriencode aus Ihrer E-Mail.";
+"Postcode" = "Postleitzahl";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Nachdem Sie die Zahlung abgeschlossen und die Software erfolgreich aktiviert haben, überprüfen Sie bitte Ihre E-Mails auf Bestelldetails.";
+"Scan QR Code with Alipay" = "Öffnen Sie Alipay und scannen Sie den QR-Code";
+"Scan QR Code with WeChat" = "Öffnen Sie WeChat und scannen Sie den QR-Code";
+"The coupon code has expired." = "Ihr Gutschein ist abgelaufen.";
+"The coupon code has been used, please change your coupon code." = "Ihr Gutschein wurde verwendet. Bitte ändern Sie den Gutscheincode.";

+ 61 - 0
PDF Office/PDF Master/Strings/en.lproj/Localizable.strings

@@ -4169,3 +4169,64 @@
 "Experience Now" = "Experience Now";
 "USD" = "USD";
 
+"Free" = "Free";
+"Permanent" = "Permanent";
+"Premium" = "Premium";
+"Apply" = "Apply";
+"Billing Information" = "Billing Information";
+"Discount" = "Discount";
+"Email to receive license code" = "Email to receive license code";
+"Invalid Email address. Please try again." = "Invalid Email address. Please try again.";
+"Email could not be null." = "Email could not be null.";
+"Extended Device Access" = "Extended Device Access";
+"Get access to your plan on up to 2 devices." = "Get access to your plan on up to 2 devices.";
+"Support Mac or Windows device" = "Support Mac or Windows device";
+"I have a coupon?" = "I have a coupon?";
+"List Price" = "List Price";
+"Name" = "Name";
+"PDF to Office Pack" = "PDF to Office Pack";
+"One time purchase" = "One time purchase";
+"Payment Method" = "Payment Method";
+"PDF Reader Pro for Windows" = "PDF Reader Pro for Windows";
+"Permanent version (with PDF to Office Pack)" = "Permanent version (with PDF to Office Pack)";
+"One license for one device. One time purchase." = "One license for one device. One time purchase.";
+"Premium version" = "Premium version";
+"One license for one device. One time purchase." = "One license for one device. One time purchase.";
+"Your Order" = "Your Order";
+"Total" = "Total";
+"Trial Expired, Upgrade to Pro Version" = "Trial Expired, Upgrade to Pro Version";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "By applying for free trial, you confirm that you agree this Privacy Policy.";
+"Payment is being verified..." = "Payment is being verified...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox.";
+"AI Add-on" = "AI Add-on";
+"Individual monthly plan. Manually renew." = "Individual monthly plan. Manually renew.";
+"PDF Reader Pro AI Tools" = "PDF Reader Pro AI Tools";
+"50 credits for 30 days" = "50 credits for 30 days";
+"Manually renew at USD 14.99" = "Manually renew at USD 14.99";
+"PDF to Office" = "PDF to Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)";
+"and more offline. It's one time purchase." = "and more offline. It's one time purchase.";
+"License Code" = "License Code";
+"Not Found?" = "Not Found?";
+"Please check if the information is wrong or the network is error." = "Please check if the information is wrong or the network is error.";
+"The coupon code is invalid. Please try again." = "The coupon code is invalid. Please try again.";
+"Please enter right license code. How to Retrieve License." = "Please enter right license code. How to Retrieve License.";
+"Input license code previously activated the app" = "Input license code previously activated the app";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products";
+"By submitting this order, I agree to the %@ and %@ for subscription products" = "By submitting this order, I agree to the %@ and %@ for subscription products";
+"Continue to Pay" = "Continue to Pay";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "1 license code to activate 2 PCs. (Mac and Windows)";
+"Pay sum" = "Pay sum";
+"Are you a student or a professor? %@ / Want a volume purchase? Please %@." = "Are you a student or a professor? %@ / Want a volume purchase? Please %@.";
+"Get Special Offer" = "Get Special Offer";
+"Contact Us" = "Contact Us";
+"Applied" = "Applied";
+"Please enter a coupon code." = "Please enter a coupon code.";
+"Please enter your email for license receiving." = "Please enter your email for license receiving.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Payment status is not available, if you have completed the payment, please check your email for the license.";
+"Postcode" = "Postcode";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Purchase successfully and the software is activated. Please check your email for order details.";
+"Scan QR Code with Alipay" = "Scan QR Code with Alipay";
+"Scan QR Code with WeChat" = "Scan QR Code with WeChat";
+"The coupon code has expired." = "The coupon code has expired.";
+"The coupon code has been used, please change your coupon code." = "The coupon code has been used, please change your coupon code.";

+ 58 - 0
PDF Office/PDF Master/Strings/es.lproj/Localizable.strings

@@ -3087,3 +3087,61 @@
 
 "Experience Now" = "Experimenta ahora";
 
+"Free" = "Versión gratuita";
+"Permanent" = "versión prémium";
+"Premium" = "Edición estándar";
+"Apply" = "solicitud";
+"Billing Information" = "Información del pedido";
+"Discount" = "descuento";
+"Email to receive license code" = "Correo electrónico utilizado para recibir códigos de serie.";
+"Invalid Email address. Please try again." = "Dirección de correo electrónico no válida, inténtelo de nuevo";
+"Email could not be null." = "La dirección de correo electrónico no puede estar vacía";
+"Extended Device Access" = "Paquete de actualización de permisos para múltiples dispositivos";
+"Get access to your plan on up to 2 devices." = "Se puede activar un código de serie en dos dispositivos al mismo tiempo.";
+"Support Mac or Windows device" = "Plataformas de activación compatibles: Windows/Mac";
+"I have a coupon?" = "¿Tengo un cupón?";
+"List Price" = "precio del pedido";
+"Name" = "Nombre";
+"PDF to Office Pack" = "Paquete de conversión de PDF a Office";
+"One time purchase" = "Realice una compra única y obtenga conversiones ilimitadas a múltiples formatos para siempre.";
+"Payment Method" = "Método de pago";
+"PDF Reader Pro for Windows" = "Lector de PDF Pro para Windows";
+"Permanent version (with PDF to Office Pack)" = "Versión estándar + paquete de conversión de PDF";
+"One license for one device. One time purchase." = "Un código de serie admite un dispositivo y se compra una licencia permanente una vez.";
+"Premium version" = "Edición estándar";
+"One license for one device. One time purchase." = "Un código de serie admite un dispositivo y se compra una licencia permanente una vez.";
+"Your Order" = "tu pedido";
+"Total" = "total";
+"Trial Expired, Upgrade to Pro Version" = "La prueba ha caducado, actualice a la versión Pro con licencia permanente";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Al solicitar una prueba gratuita, acepta el acuerdo de privacidad";
+"Payment is being verified..." = "Verificando información de pago...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "La página del pedido actual está cerrada. Si ha pagado correctamente, verifique el estado actual del pedido en su correo electrónico.";
+"AI Add-on" = "herramientas de inteligencia artificial";
+"Individual monthly plan. Manually renew." = "Plan mensual personalizado. Renovación manual.";
+"PDF Reader Pro AI Tools" = "Kit de herramientas de IA de PDF Reader Pro";
+"50 credits for 30 days" = "50 puntos de capital, disponibles dentro de 30 días";
+"Manually renew at USD 14.99" = "Renovación manual, 99 yuanes al mes.";
+"PDF to Office" = "Paquete de conversión de PDF a Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Convierta PDF a Word (.docx), Excel, (.xlsx), PowerPoint (.pptx) sin conexión";
+"and more offline. It's one time purchase." = "y otros archivos de formato. Compre una licencia permanente una vez";
+"License Code" = "código de serie";
+"Not Found?" = "¿extraviado?";
+"Please check if the information is wrong or the network is error." = "Verifique si la información es correcta o si la red es anormal.";
+"The coupon code is invalid. Please try again." = "El código de cupón no es válido, inténtalo de nuevo.";
+"Please enter right license code. How to Retrieve License." = "Introduzca el código de licencia correcto. Cómo recuperar una licencia.";
+"Input license code previously activated the app" = "Ingrese el código de licencia para la aplicación previamente activada.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Al enviar este pedido, acepto la Política de privacidad del producto de suscripción y los Términos de servicio.";
+"Continue to Pay" = "continuar pagando";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Un código de serie activa dos dispositivos de escritorio (Mac y Windows)";
+"Pay sum" = "Monto del pago";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Haga clic aquí para solicitar un descuento educativo. Comuníquese con nosotros para solicitar descuentos por compras al por mayor.";
+"Applied" = "Aplicado";
+"Please enter a coupon code." = "Por favor ingrese el código de cupón.";
+"Please enter your email for license receiving." = "Ingrese su dirección de correo electrónico para recibir el código de serie.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "El estado del pago aún no se ha obtenido. Si el pago se ha completado, verifique el código de serie de su correo electrónico.";
+"Postcode" = "código postal";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Después de completar el pago y activar exitosamente el software, revise su correo electrónico para obtener detalles del pedido.";
+"Scan QR Code with Alipay" = "Abre Alipay y escanea el código QR";
+"Scan QR Code with WeChat" = "Abra WeChat y escanee el código QR";
+"The coupon code has expired." = "Tu cupón ha caducado.";
+"The coupon code has been used, please change your coupon code." = "Su cupón ha sido utilizado, cambie el código del cupón.";

+ 61 - 0
PDF Office/PDF Master/Strings/fr.lproj/Localizable.strings

@@ -2960,6 +2960,7 @@
 "https://www.pdfreaderpro.com/vpp-purchase-program" = "https://www.pdfreaderpro.com/fr/vpp-purchase-program";
 "Experience Now" = "Expérimentez maintenant";
 
+
 "1-year Plan" = "Plan de 1 an";
 "12 months" = "12 mois";
 "Billed every 12 months at %@ after %@-day trial ends." = "Après la période d'essai de %@ jours, %@ sera facturé tous les 12 mois.";
@@ -2967,3 +2968,63 @@
 
 "%@ for the first year's subscription" = "%@ pour l'abonnement de la première année";
 "%@ for the first 6-month subscription" = "%@ pour le premier abonnement de 6 mois";
+
+"Free" = "Version gratuite";
+"Permanent" = "Version premium";
+"Premium" = "Édition standard";
+"Apply" = "application";
+"Billing Information" = "Informations sur la commande";
+"Discount" = "rabais";
+"Email to receive license code" = "E-mail utilisé pour recevoir les codes de série";
+"Invalid Email address. Please try again." = "Adresse e-mail invalide, veuillez réessayer";
+"Email could not be null." = "L'adresse e-mail ne peut pas être vide";
+"Extended Device Access" = "Package de mise à niveau des autorisations multi-appareils";
+"Get access to your plan on up to 2 devices." = "Un code de série peut être activé sur deux appareils en même temps.";
+"Support Mac or Windows device" = "Plateformes d'activation prises en charge : Windows/Mac";
+"I have a coupon?" = "Ai-je un coupon ?";
+"List Price" = "prix de la commande";
+"Name" = "Nom";
+"PDF to Office Pack" = "Package de conversion PDF vers Office";
+"One time purchase" = "Effectuez un achat unique et obtenez des conversions illimitées vers plusieurs formats pour toujours.";
+"Payment Method" = "Mode de paiement";
+"PDF Reader Pro for Windows" = "Lecteur PDF Pro pour Windows";
+"Permanent version (with PDF to Office Pack)" = "Version standard + package de conversion PDF";
+"One license for one device. One time purchase." = "Un code de série prend en charge un appareil et une licence permanente est achetée une seule fois.";
+"Premium version" = "Édition standard";
+"One license for one device. One time purchase." = "Un code de série prend en charge un appareil et une licence permanente est achetée une seule fois.";
+"Your Order" = "votre commande";
+"Total" = "total";
+"Trial Expired, Upgrade to Pro Version" = "La période d'essai a expiré, passez à la version Pro sous licence permanente";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "En postulant pour un essai gratuit, vous acceptez l'accord de confidentialité";
+"Payment is being verified..." = "Vérification des informations de paiement...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "La page de commande en cours est fermée. Si vous avez payé avec succès, veuillez vérifier l'état actuel de la commande dans votre e-mail.";
+"AI Add-on" = "Outils d'IA";
+"Individual monthly plan. Manually renew." = "Forfait mensuel personnel. Renouvellement manuel.";
+"PDF Reader Pro AI Tools" = "Boîte à outils PDF Reader Pro IA";
+"50 credits for 30 days" = "50 points d'équité, disponibles dans les 30 jours";
+"Manually renew at USD 14.99" = "Renouvellement manuel, 99 yuans par mois";
+"PDF to Office" = "Package de conversion PDF vers Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Convertir un PDF en Word (.docx), Excel, (.xlsx), PowerPoint (.pptx) hors ligne";
+"and more offline. It's one time purchase." = "et d'autres fichiers de format. Achetez une licence permanente une fois";
+"License Code" = "code de série";
+"Not Found?" = "pas trouvé ?";
+"Please check if the information is wrong or the network is error." = "Veuillez vérifier si les informations sont correctes ou si le réseau est anormal.";
+"The coupon code is invalid. Please try again." = "Le code promo n'est pas valide, veuillez réessayer.";
+"Please enter right license code. How to Retrieve License." = "Veuillez saisir le code de licence correct. Comment récupérer une licence.";
+"Input license code previously activated the app" = "Saisissez le code de licence de l'application précédemment activée.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "En soumettant cette commande, j'accepte la politique de confidentialité et les conditions d'utilisation des produits d'abonnement.";
+"Continue to Pay" = "Continuez à payer";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Un code de série active deux appareils de bureau (Mac et Windows)";
+"Pay sum" = "Montant du paiement";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Cliquez ici pour demander une réduction pour l'éducation. Veuillez nous contacter pour demander des réductions sur les achats en gros.";
+"Applied" = "Appliqué";
+"Please enter a coupon code." = "Veuillez entrer le code du coupon.";
+"Please enter your email for license receiving." = "Veuillez entrer votre adresse e-mail pour recevoir le code de série.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Le statut du paiement n'a pas encore été obtenu. Si le paiement a été effectué, veuillez vérifier le code de série figurant sur votre e-mail.";
+"Postcode" = "code postal";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Après avoir effectué le paiement et activé avec succès le logiciel, veuillez vérifier votre courrier électronique pour les détails de la commande.";
+"Scan QR Code with Alipay" = "Ouvrez Alipay et scannez le code QR";
+"Scan QR Code with WeChat" = "Ouvrez WeChat et scannez le code QR";
+"The coupon code has expired." = "Votre coupon a expiré.";
+"The coupon code has been used, please change your coupon code." = "Votre coupon a été utilisé, veuillez modifier le code promo.";
+

+ 58 - 0
PDF Office/PDF Master/Strings/it.lproj/Localizable.strings

@@ -2883,3 +2883,61 @@
 
 "Experience Now" = "Sperimenta ora";
 
+"Free" = "Gratuito";
+"Permanent" = "Permanente";
+"Premium" = "Premio";
+"Apply" = "Fare domanda a";
+"Billing Information" = "Informazioni di fatturazione";
+"Discount" = "Sconto";
+"Email to receive license code" = "E-mail per ricevere il codice di licenza";
+"Invalid Email address. Please try again." = "Indirizzo e-mail non valido. Riprova.";
+"Email could not be null." = "L'e-mail non può essere nulla.";
+"Extended Device Access" = "Accesso esteso al dispositivo";
+"Get access to your plan on up to 2 devices." = "Ottieni l'accesso al tuo piano su un massimo di 2 dispositivi.";
+"Support Mac or Windows device" = "Supporta dispositivi Mac o Windows";
+"I have a coupon?" = "Ho un buono?";
+"List Price" = "Prezzo di listino";
+"Name" = "Nome";
+"PDF to Office Pack" = "Pacchetto da PDF a Office";
+"One time purchase" = "Acquisto una tantum";
+"Payment Method" = "Metodo di pagamento";
+"PDF Reader Pro for Windows" = "Lettore PDF Pro per Windows";
+"Permanent version (with PDF to Office Pack)" = "Versione permanente (con PDF in Office Pack)";
+"One license for one device. One time purchase." = "Una licenza per un dispositivo.";
+"Premium version" = "Versione premium";
+"One license for one device. One time purchase." = "Una licenza per un dispositivo.";
+"Your Order" = "Il tuo ordine";
+"Total" = "Totale";
+"Trial Expired, Upgrade to Pro Version" = "Prova scaduta, passa alla versione Pro";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Richiedendo la prova gratuita, confermi di accettare la presente Informativa sulla privacy.";
+"Payment is being verified..." = "Il pagamento è in fase di verifica...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "La pagina dell'ordine corrente è chiusa, se hai pagato con successo, controlla lo stato attuale del tuo ordine nella tua casella di posta.";
+"AI Add-on" = "Componente aggiuntivo dell'IA";
+"Individual monthly plan. Manually renew." = "Piano mensile individuale. Rinnova manualmente.";
+"PDF Reader Pro AI Tools" = "Strumenti AI di PDF Reader Pro";
+"50 credits for 30 days" = "50 crediti per 30 giorni";
+"Manually renew at USD 14.99" = "Rinnova manualmente a 14,99 USD";
+"PDF to Office" = "PDF in ufficio";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Esporta PDF in Word (.docx), Excel (.xlsx), PowerPoint (.pptx)";
+"and more offline. It's one time purchase." = "e altro ancora offline. È un acquisto una tantum.";
+"License Code" = "Codice di licenza";
+"Not Found?" = "Non trovato?";
+"Please check if the information is wrong or the network is error." = "Controlla se le informazioni sono errate o se la rete è in errore.";
+"The coupon code is invalid. Please try again." = "Il codice coupon non è valido. Riprova.";
+"Please enter right license code. How to Retrieve License." = "Inserisci il codice di licenza corretto. Come recuperare la licenza.";
+"Input license code previously activated the app" = "Inserisci il codice di licenza precedentemente attivato l'app";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Inviando questo ordine, accetto l'Informativa sulla privacy e i Termini di servizio per i prodotti in abbonamento";
+"Continue to Pay" = "Continua a pagare";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "1 codice di licenza per attivare 2 PC (Mac e Windows)";
+"Pay sum" = "Pagare la somma";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Sei uno studente o un professore? Ottieni un'offerta speciale / Desideri un acquisto in volume Contattaci?";
+"Applied" = "Applicato";
+"Please enter a coupon code." = "Inserisci un codice coupon.";
+"Please enter your email for license receiving." = "Inserisci la tua email per ricevere la licenza.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Lo stato del pagamento non è disponibile, se hai completato il pagamento, controlla la tua email per la licenza.";
+"Postcode" = "Codice postale";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Acquista con successo e il software è attivato Controlla la tua email per i dettagli dell'ordine.";
+"Scan QR Code with Alipay" = "Scansiona il codice QR con Alipay";
+"Scan QR Code with WeChat" = "Scansiona il codice QR con WeChat";
+"The coupon code has expired." = "Il codice coupon è scaduto.";
+"The coupon code has been used, please change your coupon code." = "Il codice coupon è stato utilizzato, modifica il codice coupon.";

+ 58 - 0
PDF Office/PDF Master/Strings/ja.lproj/Localizable.strings

@@ -3162,3 +3162,61 @@
 
 "Experience Now" = "今すぐ体験してください";
 
+"Free" = "無料";
+"Permanent" = "永続";
+"Premium" = "プレミアム";
+"Apply" = "適用する";
+"Billing Information" = "請求情報";
+"Discount" = "割引";
+"Email to receive license code" = "ライセンスコードを受け取るための電子メール";
+"Invalid Email address. Please try again." = "メールアドレスが無効です。もう一度試してください。";
+"Email could not be null." = "電子メールを null にすることはできません。";
+"Extended Device Access" = "拡張デバイスアクセス";
+"Get access to your plan on up to 2 devices." = "最大 2 台のデバイスでプランにアクセスできます。";
+"Support Mac or Windows device" = "Mac または Windows デバイスをサポート";
+"I have a coupon?" = "クーポンはありますか?";
+"List Price" = "定価";
+"Name" = "名前";
+"PDF to Office Pack" = "PDF から Office パックへ";
+"One time purchase" = "1回限りの購入";
+"Payment Method" = "支払方法";
+"PDF Reader Pro for Windows" = "Windows 用 PDF リーダー プロ";
+"Permanent version (with PDF to Office Pack)" = "永続版 (PDF to Office Pack 付き)";
+"One license for one device. One time purchase." = "1 つのデバイスに対して 1 つのライセンス。 1回限りの購入。";
+"Premium version" = "プレミアムバージョン";
+"One license for one device. One time purchase." = "1 つのデバイスに対して 1 つのライセンス。 1回限りの購入。";
+"Your Order" = "ご注文";
+"Total" = "合計";
+"Trial Expired, Upgrade to Pro Version" = "試用期間が終了しました。Pro バージョンにアップグレードしてください";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "無料トライアルに申し込むと、このプライバシー ポリシーに同意したことになります。";
+"Payment is being verified..." = "支払いを確認中です...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "現在の注文ページは閉じています。支払いが完了した場合は、メールボックスで現在の注文ステータスを確認してください。";
+"AI Add-on" = "AIアドオン";
+"Individual monthly plan. Manually renew." = "個人向け月額プラン。手動で更新します。";
+"PDF Reader Pro AI Tools" = "PDF リーダー プロ AI ツール";
+"50 credits for 30 days" = "30 日間 50 クレジット";
+"Manually renew at USD 14.99" = "14.99 ドルで手動更新";
+"PDF to Office" = "PDF から Office へ";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "PDF を Word(.docx)、Excel (.xlsx)、PowerPoint(.pptx) にエクスポート";
+"and more offline. It's one time purchase." = "さらにオフラインでも。 1回限りの購入です。";
+"License Code" = "ライセンスコード";
+"Not Found?" = "見つかりません?";
+"Please check if the information is wrong or the network is error." = "情報が間違っていないか、ネットワークに異常がないか確認してください。";
+"The coupon code is invalid. Please try again." = "クーポンコードが無効です。もう一度試してください。";
+"Please enter right license code. How to Retrieve License." = "正しいライセンス コードを入力してください。ライセンスを取得する方法。";
+"Input license code previously activated the app" = "以前にアプリをアクティベートしたライセンス コードを入力してください";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "この注文を送信することにより、サブスクリプション製品のプライバシー ポリシーとサービス利用規約に同意します";
+"Continue to Pay" = "支払いを続ける";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "1 つのライセンス コードで 2 台の PC をアクティベートできます。 (MacおよびWindows)";
+"Pay sum" = "支払額";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "あなたは学生ですか、それとも教授ですか?特別オファーを入手 / 大量購入したいですか?お問い合わせください。";
+"Applied" = "適用済み";
+"Please enter a coupon code." = "クーポンコードを入力してください。";
+"Please enter your email for license receiving." = "ライセンスを受け取るための電子メールを入力してください。";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "支払いステータスが表示されません。支払いが完了している場合は、メールでライセンスを確認してください。";
+"Postcode" = "郵便番号";
+"Purchase successfully and the software is activated. Please check your email for order details." = "購入が完了すると、ソフトウェアがアクティベートされます。ご注文の詳細についてはメールをご確認ください。";
+"Scan QR Code with Alipay" = "AlipayでQRコードをスキャン";
+"Scan QR Code with WeChat" = "WeChatでQRコードをスキャン";
+"The coupon code has expired." = "クーポンコードの有効期限が切れました。";
+"The coupon code has been used, please change your coupon code." = "クーポンコードは使用されていますので、クーポンコードを変更してください。";

+ 58 - 0
PDF Office/PDF Master/Strings/pl.lproj/Localizable.strings

@@ -3099,3 +3099,61 @@
 
 "Experience Now" = "Doświadcz teraz";
 
+"Free" = "Wersja darmowa";
+"Permanent" = "Wersja premium";
+"Premium" = "Wersja standardowa";
+"Apply" = "aplikacja";
+"Billing Information" = "Informacje o zamówieniu";
+"Discount" = "rabat";
+"Email to receive license code" = "Adres e-mail używany do otrzymywania kodów seryjnych";
+"Invalid Email address. Please try again." = "Nieprawidłowy adres e-mail, spróbuj ponownie";
+"Email could not be null." = "Adres e-mail nie może być pusty";
+"Extended Device Access" = "Pakiet aktualizacji uprawnień dla wielu urządzeń";
+"Get access to your plan on up to 2 devices." = "Jeden kod seryjny można aktywować na dwóch urządzeniach jednocześnie.";
+"Support Mac or Windows device" = "Obsługiwane platformy aktywacyjne: Windows/Mac";
+"I have a coupon?" = "Czy mam kupon?";
+"List Price" = "cena zamówienia";
+"Name" = "Nazwa";
+"PDF to Office Pack" = "Pakiet konwersji plików PDF do pakietu Office";
+"One time purchase" = "Dokonaj jednorazowego zakupu i uzyskaj nieograniczoną liczbę konwersji do wielu formatów na zawsze.";
+"Payment Method" = "Metoda płatności";
+"PDF Reader Pro for Windows" = "Czytnik PDF Pro dla systemu Windows";
+"Permanent version (with PDF to Office Pack)" = "Wersja standardowa + pakiet do konwersji PDF";
+"One license for one device. One time purchase." = "Jeden kod seryjny obsługuje jedno urządzenie, a stałą licencję kupuje się raz.";
+"Premium version" = "Wersja standardowa";
+"One license for one device. One time purchase." = "Jeden kod seryjny obsługuje jedno urządzenie, a stałą licencję kupuje się raz.";
+"Your Order" = "Twoje zamówienie";
+"Total" = "całkowity";
+"Trial Expired, Upgrade to Pro Version" = "Wersja próbna wygasła, uaktualnij do wersji Pro z stałą licencją";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Ubiegając się o bezpłatny okres próbny, zgadzasz się z umową o ochronie prywatności";
+"Payment is being verified..." = "Weryfikuję informacje o płatności...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "Bieżąca strona zamówienia jest zamknięta. Jeśli pomyślnie dokonałeś płatności, sprawdź aktualny status zamówienia w swoim e-mailu.";
+"AI Add-on" = "Narzędzia sztucznej inteligencji";
+"Individual monthly plan. Manually renew." = "Osobisty plan miesięczny. Ręczne odnowienie.";
+"PDF Reader Pro AI Tools" = "Zestaw narzędzi PDF Reader Pro AI";
+"50 credits for 30 days" = "50 punktów kapitałowych, dostępnych w ciągu 30 dni";
+"Manually renew at USD 14.99" = "Ręczne odnowienie, 99 juanów miesięcznie";
+"PDF to Office" = "Pakiet konwersji plików PDF do pakietu Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Konwertuj pliki PDF do formatu Word (.docx), Excel, (.xlsx), PowerPoint (.pptx) w trybie offline";
+"and more offline. It's one time purchase." = "i inne pliki w formacie. Kup stałą licencję raz";
+"License Code" = "kod seryjny";
+"Not Found?" = "nie znaleziono?";
+"Please check if the information is wrong or the network is error." = "Sprawdź, czy informacje są prawidłowe lub czy sieć działa nieprawidłowo.";
+"The coupon code is invalid. Please try again." = "Kod kuponu jest nieprawidłowy. Spróbuj ponownie.";
+"Please enter right license code. How to Retrieve License." = "Proszę wprowadzić poprawny kod licencyjny. Jak odzyskać licencję.";
+"Input license code previously activated the app" = "Wprowadź kod licencyjny dla wcześniej aktywowanej aplikacji.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Przesyłając to zamówienie, zgadzam się z Polityką prywatności produktów subskrypcyjnych i Warunkami korzystania z usługi";
+"Continue to Pay" = "Kontynuuj płacenie";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Jeden kod seryjny aktywuje dwa urządzenia stacjonarne (Mac i Windows)";
+"Pay sum" = "Kwota płatności";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Kliknij tutaj, aby ubiegać się o zniżkę edukacyjną. Skontaktuj się z nami, aby ubiegać się o rabaty przy zakupie hurtowym.";
+"Applied" = "Stosowany";
+"Please enter a coupon code." = "Proszę wpisać kod kuponu.";
+"Please enter your email for license receiving." = "Aby otrzymać kod seryjny, wpisz swój adres e-mail.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Status płatności nie został jeszcze uzyskany. Jeśli płatność została zrealizowana, sprawdź kod seryjny w wiadomości e-mail.";
+"Postcode" = "kod pocztowy";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Po dokonaniu płatności i pomyślnej aktywacji oprogramowania sprawdź pocztę e-mail, aby uzyskać szczegółowe informacje o zamówieniu.";
+"Scan QR Code with Alipay" = "Otwórz Alipay i zeskanuj kod QR";
+"Scan QR Code with WeChat" = "Otwórz WeChat i zeskanuj kod QR";
+"The coupon code has expired." = "Twój kupon wygasł.";
+"The coupon code has been used, please change your coupon code." = "Twój kupon został wykorzystany. Zmień kod kuponu.";

+ 58 - 0
PDF Office/PDF Master/Strings/pt.lproj/Localizable.strings

@@ -4561,3 +4561,61 @@
 "Convert PDFs " = "Converter PDFs";
 "Experience Now" = "Experimente agora";
 
+"Free" = "Versão gratuita";
+"Permanent" = "Versão premium";
+"Premium" = "Edição Padrão";
+"Apply" = "aplicativo";
+"Billing Information" = "Informações do pedido";
+"Discount" = "desconto";
+"Email to receive license code" = "Email usado para receber códigos seriais";
+"Invalid Email address. Please try again." = "Endereço de e-mail inválido, tente novamente";
+"Email could not be null." = "O endereço de e-mail não pode ficar vazio";
+"Extended Device Access" = "Pacote de atualização de permissão para vários dispositivos";
+"Get access to your plan on up to 2 devices." = "Um código serial pode ser ativado em dois dispositivos ao mesmo tempo.";
+"Support Mac or Windows device" = "Plataformas de ativação suportadas: Windows/Mac";
+"I have a coupon?" = "Eu tenho um cupom?";
+"List Price" = "preço do pedido";
+"Name" = "Nome";
+"PDF to Office Pack" = "Pacote de conversão de PDF para Office";
+"One time purchase" = "Faça uma compra única e obtenha conversões ilimitadas para vários formatos para sempre.";
+"Payment Method" = "Método de pagamento";
+"PDF Reader Pro for Windows" = "Leitor de PDF Pro para Windows";
+"Permanent version (with PDF to Office Pack)" = "Versão padrão + pacote de conversão de PDF";
+"One license for one device. One time purchase." = "Um código serial suporta um dispositivo e uma licença permanente é adquirida uma vez.";
+"Premium version" = "Edição Padrão";
+"One license for one device. One time purchase." = "Um código serial suporta um dispositivo e uma licença permanente é adquirida uma vez.";
+"Your Order" = "seu pedido";
+"Total" = "total";
+"Trial Expired, Upgrade to Pro Version" = "A avaliação expirou, atualize para a versão Pro com licença permanente";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Ao solicitar um teste gratuito, você concorda com o acordo de privacidade";
+"Payment is being verified..." = "Verificando informações de pagamento...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "A página do pedido atual está fechada. Se você pagou com sucesso, verifique o status atual do pedido em seu e-mail.";
+"AI Add-on" = "Ferramentas de IA";
+"Individual monthly plan. Manually renew." = "Plano mensal pessoal. Renovação manual.";
+"PDF Reader Pro AI Tools" = "Kit de ferramentas de IA do PDF Reader Pro";
+"50 credits for 30 days" = "50 pontos de patrimônio, disponíveis em 30 dias";
+"Manually renew at USD 14.99" = "Renovação manual, 99 yuans por mês";
+"PDF to Office" = "Pacote de conversão de PDF para Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Converta PDF para Word (.docx), Excel, (.xlsx), PowerPoint (.pptx) offline";
+"and more offline. It's one time purchase." = "e outros arquivos de formato. Compre uma licença permanente uma vez";
+"License Code" = "código de série";
+"Not Found?" = "não foi encontrado?";
+"Please check if the information is wrong or the network is error." = "Verifique se as informações estão corretas ou se a rede está anormal.";
+"The coupon code is invalid. Please try again." = "O código do cupom é inválido, tente novamente.";
+"Please enter right license code. How to Retrieve License." = "Insira o código de licença correto. Como recuperar uma licença.";
+"Input license code previously activated the app" = "Insira o código de licença do aplicativo ativado anteriormente.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Ao enviar este pedido, concordo com a Política de Privacidade e os Termos de Serviço do Produto de Assinatura";
+"Continue to Pay" = "Continuar a pagar";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Um código serial ativa dois dispositivos de desktop (Mac e Windows)";
+"Pay sum" = "Valor do pagamento";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Clique aqui para solicitar um desconto educacional. Entre em contato conosco para solicitar descontos em compras em grandes quantidades.";
+"Applied" = "Aplicado";
+"Please enter a coupon code." = "Por favor, insira o código do cupom.";
+"Please enter your email for license receiving." = "Por favor, digite seu endereço de e-mail para receber o código de série.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "O status do pagamento ainda não foi obtido. Se o pagamento foi concluído, verifique o código de série do seu e-mail.";
+"Postcode" = "código postal";
+"Purchase successfully and the software is activated. Please check your email for order details." = "Após concluir o pagamento e ativar o software com sucesso, verifique seu e-mail para obter os detalhes do pedido.";
+"Scan QR Code with Alipay" = "Abra o Alipay e escaneie o código QR";
+"Scan QR Code with WeChat" = "Abra o WeChat e escaneie o código QR";
+"The coupon code has expired." = "Seu cupom expirou.";
+"The coupon code has been used, please change your coupon code." = "Seu cupom foi utilizado, altere o código do cupom.";

+ 58 - 0
PDF Office/PDF Master/Strings/ru.lproj/Localizable.strings

@@ -3033,3 +3033,61 @@
 
 "Experience Now" = "Опыт сейчас";
 
+"Free" = "Бесплатная версия";
+"Permanent" = "Премиум-версия";
+"Premium" = "Стандартное издание";
+"Apply" = "приложение";
+"Billing Information" = "Информация о заказе";
+"Discount" = "скидка";
+"Email to receive license code" = "Электронная почта, используемая для получения серийных кодов";
+"Invalid Email address. Please try again." = "Неверный адрес электронной почты, попробуйте еще раз";
+"Email could not be null." = "Адрес электронной почты не может быть пустым";
+"Extended Device Access" = "Пакет обновления разрешений для нескольких устройств";
+"Get access to your plan on up to 2 devices." = "Один серийный код может быть активирован на двух устройствах одновременно.";
+"Support Mac or Windows device" = "Поддерживаемые платформы активации: Windows/Mac.";
+"I have a coupon?" = "Есть ли у меня купон?";
+"List Price" = "цена заказа";
+"Name" = "Имя";
+"PDF to Office Pack" = "Пакет преобразования PDF в Office";
+"One time purchase" = "Совершите единоразовую покупку и получите неограниченное количество конвертаций в несколько форматов навсегда.";
+"Payment Method" = "Способ оплаты";
+"PDF Reader Pro for Windows" = "PDF Reader Pro для Windows";
+"Permanent version (with PDF to Office Pack)" = "Стандартная версия + пакет конвертации PDF";
+"One license for one device. One time purchase." = "Один серийный код поддерживает одно устройство, а постоянная лицензия приобретается один раз.";
+"Premium version" = "Стандартное издание";
+"One license for one device. One time purchase." = "Один серийный код поддерживает одно устройство, а постоянная лицензия приобретается один раз.";
+"Your Order" = "ваш заказ";
+"Total" = "общий";
+"Trial Expired, Upgrade to Pro Version" = "Срок действия пробной версии истек. Обновите версию Pro с постоянной лицензией.";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "Подавая заявку на бесплатную пробную версию, вы соглашаетесь с соглашением о конфиденциальности.";
+"Payment is being verified..." = "Проверка платежной информации...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "Текущая страница заказа закрыта. Если вы успешно оплатили, пожалуйста, проверьте текущий статус заказа на своей электронной почте.";
+"AI Add-on" = "Инструменты искусственного интеллекта";
+"Individual monthly plan. Manually renew." = "Персональный ежемесячный план. Ручное продление.";
+"PDF Reader Pro AI Tools" = "PDF Reader Pro, набор инструментов искусственного интеллекта";
+"50 credits for 30 days" = "50 баллов капитала, доступные в течение 30 дней";
+"Manually renew at USD 14.99" = "Продление вручную, 99 юаней в месяц.";
+"PDF to Office" = "Пакет преобразования PDF в Office";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "Конвертируйте PDF в Word (.docx), Excel (.xlsx), PowerPoint (.pptx) в автономном режиме.";
+"and more offline. It's one time purchase." = "и другие форматы файлов. Приобретите постоянную лицензию один раз";
+"License Code" = "серийный код";
+"Not Found?" = "не найдено?";
+"Please check if the information is wrong or the network is error." = "Пожалуйста, проверьте, верна ли информация или сеть неисправна.";
+"The coupon code is invalid. Please try again." = "Код купона недействителен, попробуйте еще раз.";
+"Please enter right license code. How to Retrieve License." = "Пожалуйста, введите правильный лицензионный код. Как восстановить лицензию.";
+"Input license code previously activated the app" = "Введите лицензионный код ранее активированного приложения.";
+"By submitting this order, I agree to the Privacy Policy and Terms of Service for subscription products" = "Отправляя этот заказ, я соглашаюсь с Политикой конфиденциальности продукта по подписке и Условиями обслуживания.";
+"Continue to Pay" = "Продолжать платить";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "Один серийный код активирует два настольных устройства (Mac и Windows).";
+"Pay sum" = "Сумма платежа";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "Нажмите здесь, чтобы подать заявку на скидку на образование. Пожалуйста, свяжитесь с нами, чтобы подать заявку на получение скидки при оптовой покупке.";
+"Applied" = "Применяемый";
+"Please enter a coupon code." = "Пожалуйста, введите код купона.";
+"Please enter your email for license receiving." = "Пожалуйста, введите свой адрес электронной почты, чтобы получить серийный код.";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "Статус платежа еще не получен. Если платеж был завершен, проверьте серийный код, указанный в вашей электронной почте.";
+"Postcode" = "почтовый индекс";
+"Purchase successfully and the software is activated. Please check your email for order details." = "После завершения платежа и успешной активации программного обеспечения проверьте свою электронную почту для получения подробной информации о заказе.";
+"Scan QR Code with Alipay" = "Откройте Alipay и отсканируйте QR-код.";
+"Scan QR Code with WeChat" = "Откройте WeChat и отсканируйте QR-код.";
+"The coupon code has expired." = "Срок действия вашего купона истек.";
+"The coupon code has been used, please change your coupon code." = "Ваш купон использован, измените код купона.";

+ 61 - 1
PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings

@@ -4071,4 +4071,64 @@
 "Experience Now" = "立即体验";
 "USD" = "CNY";
 
-
+"Free" = "免费版";
+"Permanent" = "高级版";
+"Premium" = "标准版";
+"Apply" = "应用";
+"Billing Information" = "订单信息";
+"Discount" = "优惠";
+"Email to receive license code" = "用于接收序列码的邮箱";
+"Invalid Email address. Please try again." = "邮箱地址无效,请重试";
+"Email could not be null." = "邮箱地址不能为空";
+"Extended Device Access" = "多设备权限升级包";
+"Get access to your plan on up to 2 devices." = "一个序列码可同时在两台设备上激活使用。";
+"Support Mac or Windows device" = "支持激活平台:Windows/Mac";
+"I have a coupon?" = "我有优惠券?";
+"List Price" = "订单价";
+"Name" = "姓名";
+"PDF to Office Pack" = "PDF to Office转档包";
+"One time purchase" = "一次性购买,即可永久无限制地转换多种格式。";
+"Payment Method" = "支付方式";
+"PDF Reader Pro for Windows" = "PDF Reader Pro for Windows";
+"Permanent version (with PDF to Office Pack)" = "标准版+PDF转档包";
+"One license for one device. One time purchase." = "一个序列码支持一台设备,一次购买永久授权。";
+"Premium version" = "标准版";
+"One license for one device. One time purchase." = "一个序列码支持一台设备,一次购买永久授权。";
+"Your Order" = "您的订单";
+"Total" = "总计";
+"Trial Expired, Upgrade to Pro Version" = "试用已过期,升级至永久授权Pro版本";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "申请免费试用,代表您同意隐私协议";
+"Payment is being verified..." = "正在验证支付信息…";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "当前订单页面已关闭,如果您已成功付款,请在您的邮箱中查看订单的当前状态。";
+"AI Add-on" = "AI工具";
+"Individual monthly plan. Manually renew." = "个人包月计划。手动续费。";
+"PDF Reader Pro AI Tools" = "PDF Reader Pro AI工具包";
+"50 credits for 30 days" = "50权益点,30天内可用";
+"Manually renew at USD 14.99" = "手动续费,每月99元";
+"PDF to Office" = "PDF to Office转档包";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "离线将PDF转换成Word(.docx), Excel,(.xlsx), PowerPoint(.pptx)";
+"and more offline. It's one time purchase." = "等其他格式文件。一次购买永久授权";
+"License Code" = "序列码";
+"Not Found?" = "未找到?";
+"Please check if the information is wrong or the network is error." = "请检查信息是否正确或者网络是否异常。";
+"The coupon code is invalid. Please try again." = "优惠劵代码无效、请重试。";
+"Please enter right license code. How to Retrieve License." = "请输入正确的许可证代码。如何检索许可证。";
+"Input license code previously activated the app" = "输入先前激活应用程序的许可证代码。";
+"By submitting this order, I agree to the %@ and %@ for subscription products" = "通过提交此订单,我同意订阅产品的%@和%@";
+"Continue to Pay" = "继续支付";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "一个序列码可激活两台桌机设备(Mac和Windows)";
+"Pay sum" = "支付金额";
+"Are you a student or a professor? Get Special Offer / Want a volume purchase? Please Contact Us." = "点击此处申请教育折扣。申请批量采购折扣请联系我们。";
+"Are you a student or a professor? %@ / Want a volume purchase? Please %@." = "点击此处%@。申请批量采购折扣请%@。";
+"Get Special Offer" = "申请教育折扣";
+"Contact Us" = "联系我们";
+"Applied" = "已应用";
+"Please enter a coupon code." = "请输入优惠券码。";
+"Please enter your email for license receiving." = "请输入邮箱,用于接收序列码。";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "暂未获取到支付状态,若已完成支付,请从邮箱查收序列码。";
+"Postcode" = "邮编";
+"Purchase successfully and the software is activated. Please check your email for order details." = "完成支付并成功激活软件,订单详情请前往邮箱查看。";
+"Scan QR Code with Alipay" = "打开支付宝扫描二维码";
+"Scan QR Code with WeChat" = "打开微信扫描二维码";
+"The coupon code has expired." = "您的优惠券已过期。";
+"The coupon code has been used, please change your coupon code." = "您的优惠券已被使用,请更换优惠券码。";

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

@@ -4202,3 +4202,63 @@
 
 "Experience Now" = "立即體驗";
 
+"Free" = "免費版";
+"Permanent" = "高級版";
+"Premium" = "標準版";
+"Apply" = "應用";
+"Billing Information" = "訂單資訊";
+"Discount" = "優惠";
+"Email to receive license code" = "用於接收序號的信箱";
+"Invalid Email address. Please try again." = "郵件地址無效,請重試";
+"Email could not be null." = "郵件地址不能為空";
+"Extended Device Access" = "多設備權限升級包";
+"Get access to your plan on up to 2 devices." = "一個序列碼可同時在型號設備上啟動使用。";
+"Support Mac or Windows device" = "支援啟動平台:Windows/Mac";
+"I have a coupon?" = "我有優惠券嗎?";
+"List Price" = "訂單價";
+"Name" = "姓名";
+"PDF to Office Pack" = "PDF 到 Office 轉檔包";
+"One time purchase" = "一次性購買,即可永久無限制地轉換多種格式。";
+"Payment Method" = "支付方式";
+"PDF Reader Pro for Windows" = "適用於 Windows 的 PDF 閱讀器專業版";
+"Permanent version (with PDF to Office Pack)" = "標準版+PDF轉檔包";
+"One license for one device. One time purchase." = "一個序號支援一台設備,一次購買永久授權。";
+"Premium version" = "標準版";
+"One license for one device. One time purchase." = "一個序號支援一台設備,一次購買永久授權。";
+"Your Order" = "您的訂單";
+"Total" = "總共";
+"Trial Expired, Upgrade to Pro Version" = "已過期,升級至永久授權Pro版本";
+"By applying for free trial, you confirm that you agree this Privacy Policy." = "申請免費試用,代表您同意隱私權協議";
+"Payment is being verified..." = "正在驗證付款資訊...";
+"The current order page is closed, if you have paid successfully, please check the current status of your order in your mailbox." = "目前訂單頁面已關閉,如果已成功付款,請在您的郵箱中查看訂單的當前狀態。";
+"AI Add-on" = "人工智慧工具";
+"Individual monthly plan. Manually renew." = "個人包月計劃。";
+"PDF Reader Pro AI Tools" = "PDF Reader Pro AI工具包";
+"50 credits for 30 days" = "50權益點,30可用";
+"Manually renew at USD 14.99" = "手動續費,每月99元";
+"PDF to Office" = "PDF 到 Office 轉檔包";
+"Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)" = "離線將PDF轉換成Word(.docx), Excel,(.xlsx), PowerPoint(.pptx)";
+"and more offline. It's one time purchase." = "等其他格式文件。";
+"License Code" = "序列碼";
+"Not Found?" = "未找到?";
+"Please check if the information is wrong or the network is error." = "請檢查資訊是否正確或網路是否異常。";
+"The coupon code is invalid. Please try again." = "優惠劵代碼無效、請重試。";
+"Please enter right license code. How to Retrieve License." = "請輸入正確的許可證代碼。";
+"Input license code previously activated the app" = "輸入先前啟動應用程式的許可證代碼。";
+"By submitting this order, I agree to the %@ and %@ for subscription products" = "提交此訂單,我同意訂閱產品的%@和%@";
+"Continue to Pay" = "繼續支付";
+"1 license code to activate 2 PCs. (Mac and Windows)" = "一個序號可啟動突變桌機設備(Mac和Windows)";
+"Pay sum" = "支付金額";
+"Are you a student or a professor? %@ / Want a volume purchase? Please %@." = "點擊此處%@。申請批量採購折扣%@。";
+"Get Special Offer" = "獲得特別優惠";
+"Contact Us" = "聯絡我們";
+"Applied" = "已申請";
+"Please enter a coupon code." = "請輸入優惠券碼。";
+"Please enter your email for license receiving." = "請輸入郵箱,用於接收序號。";
+"Payment status is not available, if you have completed the payment, please check your email for the license." = "暫未取得到支付狀態,若已完成支付,請從信箱查收序號。";
+"Postcode" = "郵編";
+"Purchase successfully and the software is activated. Please check your email for order details." = "完成付款並成功啟動軟體,訂單詳情請前往郵箱查看。";
+"Scan QR Code with Alipay" = "打開支付寶掃描二維碼";
+"Scan QR Code with WeChat" = "打開微信掃描二維碼";
+"The coupon code has expired." = "您的優惠券已過期。";
+"The coupon code has been used, please change your coupon code." = "您的優惠券已被使用,請更換優惠券碼。";

+ 12 - 6
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -7,6 +7,8 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		651A59822C8EA20F005A35FB /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
+		651A59832C8EA210005A35FB /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
 		652E953D2C6670CE0061FA40 /* KMFreehandAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652E953C2C6670CE0061FA40 /* KMFreehandAnnotationController.swift */; };
 		652E953E2C6670CE0061FA40 /* KMFreehandAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652E953C2C6670CE0061FA40 /* KMFreehandAnnotationController.swift */; };
 		652E953F2C6670CE0061FA40 /* KMFreehandAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652E953C2C6670CE0061FA40 /* KMFreehandAnnotationController.swift */; };
@@ -35,6 +37,9 @@
 		6554450E2C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
 		6554450F2C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
 		655445102C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
+		654A5A8C2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654A5A8B2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift */; };
+		654A5A8D2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654A5A8B2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift */; };
+		654A5A8E2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654A5A8B2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift */; };
 		65D684062C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
 		65D684072C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
 		65D684082C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
@@ -334,7 +339,6 @@
 		9F080B24298FCB0D00FC27DA /* KMDesignToken+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F080B22298FCB0D00FC27DA /* KMDesignToken+Action.swift */; };
 		9F080B25298FCB0D00FC27DA /* KMDesignToken+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F080B22298FCB0D00FC27DA /* KMDesignToken+Action.swift */; };
 		9F0ACC002C85CB22009574D5 /* KMDMGProductsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0ACBFD2C85CB22009574D5 /* KMDMGProductsManager.swift */; };
-		9F0ACC012C86A334009574D5 /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
 		9F0ACC042C883464009574D5 /* KMEmbeddedPaymentPopWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0ACC022C883464009574D5 /* KMEmbeddedPaymentPopWC.swift */; };
 		9F0ACC052C883464009574D5 /* KMEmbeddedPaymentPopWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0ACC022C883464009574D5 /* KMEmbeddedPaymentPopWC.swift */; };
 		9F0ACC062C883464009574D5 /* KMEmbeddedPaymentPopWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0ACC022C883464009574D5 /* KMEmbeddedPaymentPopWC.swift */; };
@@ -697,8 +701,6 @@
 		9F39B9442A661ED500930ACA /* KMHomeScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F39B9432A661ED500930ACA /* KMHomeScrollView.swift */; };
 		9F39B9452A661ED500930ACA /* KMHomeScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F39B9432A661ED500930ACA /* KMHomeScrollView.swift */; };
 		9F39B9462A661ED500930ACA /* KMHomeScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F39B9432A661ED500930ACA /* KMHomeScrollView.swift */; };
-		9F3A48C52C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
-		9F3A48C62C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
 		9F3A48C72C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3A48C32C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift */; };
 		9F3A48C82C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */; };
 		9F3A48C92C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3A48C42C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.xib */; };
@@ -5550,6 +5552,7 @@
 		655445082C88483B00BD9010 /* KMDiscountToSaveWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMDiscountToSaveWindowController.xib; sourceTree = "<group>"; };
 		655445092C88483C00BD9010 /* KMDiscountToSaveWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMDiscountToSaveWindowController.h; sourceTree = "<group>"; };
 		6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMDiscountToSaveWindowController.m; sourceTree = "<group>"; };
+		654A5A8B2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMAnalytics+KMExtensions.swift"; sourceTree = "<group>"; };
 		65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMWavyLineAnnotationController.swift; sourceTree = "<group>"; };
 		65D6840B2C6A3669003A532E /* KMEraserAnnotationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMEraserAnnotationController.swift; sourceTree = "<group>"; };
 		65D88ED12C85826A00DD06E0 /* KMRSAUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMRSAUtils.swift; sourceTree = "<group>"; };
@@ -12202,6 +12205,7 @@
 			isa = PBXGroup;
 			children = (
 				BB32BF222A5EA05900D11348 /* KMAnalytics.swift */,
+				654A5A8B2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift */,
 			);
 			path = Analytics;
 			sourceTree = "<group>";
@@ -16424,6 +16428,7 @@
 				BBC3484A2958222C008D2CD1 /* KMBackgroundOutsideView.swift in Sources */,
 				BB7BC4D82AD3D6B700D6BEE6 /* PDFListView+KMExtensions.swift in Sources */,
 				ADBC2CFA299CA6B9006280C8 /* KMPrintDuplexPrintingSetView.swift in Sources */,
+				654A5A8C2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */,
 				AD3AAD382B0B7B1900DE5FE7 /* KMCompareToolbar.swift in Sources */,
 				BBA19F4329ADE6A3001A285A /* KMBookMarkRowView.swift in Sources */,
 				ADFA8F092B579945002595A4 /* KMSearchFindView.swift in Sources */,
@@ -16461,7 +16466,6 @@
 				BBB9B310299A5D6D004F3235 /* KMCloudDownloadOperationQueue.m in Sources */,
 				ADBC375429CAE94700D93208 /* KMComparativeOutlineSectionCell.swift in Sources */,
 				9F0ACC042C883464009574D5 /* KMEmbeddedPaymentPopWC.swift in Sources */,
-				9F3A48C52C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift in Sources */,
 				BB328B702B565EC500B382C6 /* iVersion.m in Sources */,
 				BB8D52A52BA29A5C00D5CB31 /* SKVersionNumber.m in Sources */,
 				9F1FE4C329406E4700E952CA /* CTPageTransition.c in Sources */,
@@ -17503,6 +17507,7 @@
 				BB6B43662A04919200E02B54 /* KMBaseViewController.swift in Sources */,
 				AD3AAD412B0B7B6C00DE5FE7 /* KMCompareManager.swift in Sources */,
 				AD055EB92B8843FD0035F824 /* SKToolbarItem.m in Sources */,
+				651A59832C8EA210005A35FB /* KMPurchaseEmbeddedWindowController.swift in Sources */,
 				AD055E812B88294F0035F824 /* SKBookmarkController.m in Sources */,
 				ADE86AD12B04BAEA00414DFA /* KMCompareFilesView.swift in Sources */,
 				BB146FCF299DC0D100784A6A /* GTMMIMEDocument.m in Sources */,
@@ -17603,7 +17608,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				9F0ACC012C86A334009574D5 /* KMPurchaseEmbeddedWindowController.swift in Sources */,
 				BBFBE6D028DD7B98008B2335 /* PDF_MasterTests.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -17891,6 +17895,7 @@
 				BB853C702AF879C1009C20C1 /* KMBatchRemoveWatermarkOperation.swift in Sources */,
 				9FBC48B9299B44C600CA39D7 /* KMSecondaryViewController.m in Sources */,
 				ADDF832D2B391A5C00A81A4E /* NSEvent+PDFListView.m in Sources */,
+				651A59822C8EA20F005A35FB /* KMPurchaseEmbeddedWindowController.swift in Sources */,
 				BB8810CB2B4F97D000AFA63E /* VerificationManager.m in Sources */,
 				ADAFD9F42AE68A7400F084BC /* KMCreatPDFView.swift in Sources */,
 				BBFDFA9F2AF3814000E08AA2 /* KMTextHintWindowController.swift in Sources */,
@@ -18084,7 +18089,6 @@
 				9F53D5482AD664C300CCF9D8 /* CPDFListHoverAnnotationViewController.swift in Sources */,
 				AD3AAD762B0DCEAA00DE5FE7 /* KMCompareSaveView.swift in Sources */,
 				9F9461852BD644BF0076574B /* KMTableDataManager.m in Sources */,
-				9F3A48C62C8017FA0047F565 /* KMPurchaseEmbeddedWindowController.swift in Sources */,
 				9FCFEC8D2AD10A4400EAD2CB /* KMTextFieldSheetController.swift in Sources */,
 				BBC8A7722B06408600FA9377 /* KMBotaSearchViewController.swift in Sources */,
 				BB49ECF2293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
@@ -18355,6 +18359,7 @@
 				BB1D41D42B26D9BD00994EDC /* KMReusable.swift in Sources */,
 				9F0CB51E2986569B00007028 /* KMDesignToken+BorderRadiusBottomRight.swift in Sources */,
 				9FDD0F7D2952F2D8000C4DAD /* KMBaseParser.swift in Sources */,
+				654A5A8D2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */,
 				ADD1B6C82942E83000C3FFF7 /* KMPrintBottomView.swift in Sources */,
 				BB14702D299DC0D100784A6A /* OIDEndSessionRequest.m in Sources */,
 				9F0CB4A8296CF19600007028 /* KMPropertiesPanelListMenuSubVC.swift in Sources */,
@@ -20051,6 +20056,7 @@
 				BB853C712AF879C1009C20C1 /* KMBatchRemoveWatermarkOperation.swift in Sources */,
 				ADDF83A02B391A5D00A81A4E /* CDSignatureDrawViewController.swift in Sources */,
 				BB986AED2AD53AE800ADF172 /* KMInfoWindowController.swift in Sources */,
+				654A5A8E2C8AE200001FBD4B /* KMAnalytics+KMExtensions.swift in Sources */,
 				BB0A55122A302DB700B6E84B /* KMTextField.swift in Sources */,
 				9F0CB5032986560D00007028 /* KMDesignToken+BorderTop.swift in Sources */,
 				9F88108F2B56614600F69815 /* KMAnnotationChoiceWidgetAppearanceViewController.swift in Sources */,