Parcourir la source

Home - v1.0 Appstore AI版本首页调整

wanjun il y a 1 an
Parent
commit
3c6e76a8d7
26 fichiers modifiés avec 7093 ajouts et 9 suppressions
  1. 24 0
      PDF Office/PDF Master.xcodeproj/project.pbxproj
  2. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_ErrorCorrection.imageset/Contents.json
  3. 152 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_ErrorCorrection.imageset/Error Correction.pdf
  4. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_Rewriting.imageset/Contents.json
  5. 2230 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_Rewriting.imageset/Rewriting.pdf
  6. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_function_other.imageset/Contents.json
  7. 2498 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_function_other.imageset/other.pdf
  8. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_SelectYourFiles.imageset/Contents.json
  9. 93 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_SelectYourFiles.imageset/icon.pdf
  10. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_ImportFromScanner.imageset/Contents.json
  11. 112 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_ImportFromScanner.imageset/Import From Scanner.pdf
  12. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewBlackPage.imageset/Contents.json
  13. 127 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewBlackPage.imageset/New Blank Page.pdf
  14. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewFromFiles.imageset/Contents.json
  15. 127 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewFromFiles.imageset/New From Files.pdf
  16. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_addFiles.imageset/Contents.json
  17. 230 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_addFiles.imageset/add files.pdf
  18. 12 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_home.imageset/Contents.json
  19. 215 0
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_home.imageset/home.pdf
  20. 74 0
      PDF Office/PDF Master/Class/Home/View/KMDottedLineView.swift
  21. 398 0
      PDF Office/PDF Master/Class/Home/ViewController/KMAIOpenPDFFilesVC.swift
  22. 330 0
      PDF Office/PDF Master/Class/Home/ViewController/KMAIOpenPDFFilesVC.xib
  23. 1 2
      PDF Office/PDF Master/Class/Home/ViewController/KMCloudEmptyCollectionViewItem.xib
  24. 191 4
      PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift
  25. 180 3
      PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.xib
  26. 3 0
      PDF Office/PDF Master/Strings/en.lproj/Localizable.strings

+ 24 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -396,6 +396,15 @@
 		89E9B409295D268E00AEFA61 /* KMEditImagePropertyViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 89E9B405295D268E00AEFA61 /* KMEditImagePropertyViewController.xib */; };
 		89E9B40A295D268E00AEFA61 /* KMEditImagePropertyViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 89E9B405295D268E00AEFA61 /* KMEditImagePropertyViewController.xib */; };
 		89E9B40B295D268E00AEFA61 /* KMEditImagePropertyViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 89E9B405295D268E00AEFA61 /* KMEditImagePropertyViewController.xib */; };
+		9F0201652A176AF200C9B673 /* KMDottedLineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201642A176AF200C9B673 /* KMDottedLineView.swift */; };
+		9F0201662A176AF200C9B673 /* KMDottedLineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201642A176AF200C9B673 /* KMDottedLineView.swift */; };
+		9F0201672A176AF200C9B673 /* KMDottedLineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201642A176AF200C9B673 /* KMDottedLineView.swift */; };
+		9F02016A2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201682A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift */; };
+		9F02016B2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201682A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift */; };
+		9F02016C2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0201682A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift */; };
+		9F02016D2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0201692A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib */; };
+		9F02016E2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0201692A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib */; };
+		9F02016F2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0201692A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib */; };
 		9F080B0F298A55A300FC27DA /* KMConvertURLToPDF.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F080B0D298A55A300FC27DA /* KMConvertURLToPDF.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
 		9F080B10298A55A300FC27DA /* KMConvertURLToPDF.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F080B0D298A55A300FC27DA /* KMConvertURLToPDF.m */; };
 		9F080B11298A55A300FC27DA /* KMConvertURLToPDF.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F080B0D298A55A300FC27DA /* KMConvertURLToPDF.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
@@ -3435,6 +3444,9 @@
 		89E9B3F8295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMEditPDFTextPropertyViewController.xib; sourceTree = "<group>"; };
 		89E9B404295D268E00AEFA61 /* KMEditImagePropertyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMEditImagePropertyViewController.swift; sourceTree = "<group>"; };
 		89E9B405295D268E00AEFA61 /* KMEditImagePropertyViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMEditImagePropertyViewController.xib; sourceTree = "<group>"; };
+		9F0201642A176AF200C9B673 /* KMDottedLineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDottedLineView.swift; sourceTree = "<group>"; };
+		9F0201682A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAIOpenPDFFilesVC.swift; sourceTree = "<group>"; };
+		9F0201692A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAIOpenPDFFilesVC.xib; sourceTree = "<group>"; };
 		9F080B0D298A55A300FC27DA /* KMConvertURLToPDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMConvertURLToPDF.m; sourceTree = "<group>"; };
 		9F080B0E298A55A300FC27DA /* KMConvertURLToPDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMConvertURLToPDF.h; sourceTree = "<group>"; };
 		9F080B12298CFDB300FC27DA /* KMTextImageButtonVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTextImageButtonVC.swift; sourceTree = "<group>"; };
@@ -5457,6 +5469,7 @@
 				9F5664862988B16F00020985 /* KMTextfieldVC.xib */,
 				9F080B12298CFDB300FC27DA /* KMTextImageButtonVC.swift */,
 				9F080B13298CFDB300FC27DA /* KMTextImageButtonVC.xib */,
+				9F0201642A176AF200C9B673 /* KMDottedLineView.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -5486,6 +5499,8 @@
 				9F1F82B3292DEF370092C4B4 /* KMCloudDocumentsViewController.xib */,
 				9F1F82BA292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.swift */,
 				9F1F82BB292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.xib */,
+				9F0201682A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift */,
+				9F0201692A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib */,
 				9F72D20E2994BDCC00DCACF1 /* customViewController */,
 			);
 			path = ViewController;
@@ -9106,6 +9121,7 @@
 				ADD1B6F82946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				89E4E76429656A88002DBA6F /* KMAnnotationStampViewController.xib in Resources */,
 				BBC745ED295F067B0072C2ED /* KMCropSettingWindowController.xib in Resources */,
+				9F02016D2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
 				9FF94F1C29A770B500B1EF69 /* KMFillSignShapePanel.xib in Resources */,
 				89E9B3F9295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
 				ADB1FE9A2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
@@ -9341,6 +9357,7 @@
 				8997010A28F4082C009AF911 /* KMFromViewController.xib in Resources */,
 				ADB1FE8329752F3200ED072D /* KMBatchSecurityView.xib in Resources */,
 				894A00F62976314C0070ED83 /* KMPDFViewPanelSetViewController.xib in Resources */,
+				9F02016E2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
 				9F0CB48B29683DC400007028 /* KMPropertiesPanelPresetColorSubVC.xib in Resources */,
 				89D2D2FF294C806000BFF5FE /* KMPDFThumbnailItem.xib in Resources */,
 				89E4E70C2963D62B002DBA6F /* KMAnnotationFontWindowController.xib in Resources */,
@@ -9667,6 +9684,7 @@
 				9F1F82DF292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
 				BB9695B829BDB03E00FD68D3 /* InfoWindow.xib in Resources */,
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
+				9F02016F2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
 				ADCB98EF2924779800B51A03 /* KMBatchProcessingStateTableCell.xib in Resources */,
 				BB897233294B08DE0045787C /* KMWatermarkViewController.xib in Resources */,
 				9F0CB4BA2977BC1000007028 /* KMPropertiesPanelPreviewSubVC.xib in Resources */,
@@ -9923,6 +9941,7 @@
 				9F81ADC629B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BBEC00C7295C319400A26C98 /* KMBatesManager.swift in Sources */,
 				BB147020299DC0D100784A6A /* OIDServiceDiscovery.m in Sources */,
+				9F0201652A176AF200C9B673 /* KMDottedLineView.swift in Sources */,
 				BB5DF1F12959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
 				BBC3482429559506008D2CD1 /* KMBackgroundManager.swift in Sources */,
 				AD867FC529DFFBC400F00440 /* KMAnnotationOutlineRowView.swift in Sources */,
@@ -10242,6 +10261,7 @@
 				BBFE6E5D2930809A00142C01 /* KMMergeCollectionPageViewItem.swift in Sources */,
 				89E4E7132963D7FF002DBA6F /* NSFont_SKExtensions.m in Sources */,
 				89316849296E436B0073EA59 /* KMSignatureManager.m in Sources */,
+				9F02016A2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */,
 				BB147005299DC0D100784A6A /* OIDFieldMapping.m in Sources */,
 				BB003015298CA446002DD1A0 /* KMPreferenceGeneralController.swift in Sources */,
 				BBB9B32E299A5D6D004F3235 /* GTMAppAuthFetcherAuthorization.m in Sources */,
@@ -10874,6 +10894,7 @@
 				BB99ACCB292DEE6E0048AFD9 /* KMMergeTitleBar.swift in Sources */,
 				ADD1B6A629416FE800C3FFF7 /* KMOCRPresenter.swift in Sources */,
 				89D9895F28FD21E6003A3E87 /* KMAnnotationCollectionView.swift in Sources */,
+				9F0201662A176AF200C9B673 /* KMDottedLineView.swift in Sources */,
 				BB897257294C559F0045787C /* KMWatermarkPropertyCreateController.swift in Sources */,
 				9F0CB4CE298654FA00007028 /* KMDesignToken+Height.swift in Sources */,
 				ADB1FE3C29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */,
@@ -11294,6 +11315,7 @@
 				BB49ECEA293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */,
 				F373228D292CCA650013862C /* CPDFListViewAnimatedBorderlessWindow.m in Sources */,
 				F373228D292CCA650013862C /* CPDFListViewAnimatedBorderlessWindow.m in Sources */,
+				9F02016B2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */,
 				9F0CB4DA2986553600007028 /* KMDesignToken+VerticalPadding.swift in Sources */,
 				9FF94F1A29A770B500B1EF69 /* KMFillSignShapePanel.swift in Sources */,
 				9F8539C729430AC400DF644E /* KMToolbarRightView.swift in Sources */,
@@ -12034,12 +12056,14 @@
 				8942F7EB2925E1C400389627 /* KMLiftSideCellView.swift in Sources */,
 				BB86C20C28F5569F005AD968 /* NSGeometry_SKExtensions.m in Sources */,
 				AD88109429A7612000178CA1 /* KMRegisterModel.swift in Sources */,
+				9F02016C2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */,
 				9F1F82D4292F6D510092C4B4 /* KMPDFInsertPreviewViewController.swift in Sources */,
 				ADB1FE7029752BB700ED072D /* KMBatchConvertPDFView.swift in Sources */,
 				9F705F8F291E579F005199AD /* KMHistoryFileTableView.swift in Sources */,
 				9F0CB4812967F64D00007028 /* KMPropertiesPanelReadOnlySubVC.swift in Sources */,
 				9F0CB53B2986570600007028 /* KMDesignToken+BoxShadow.swift in Sources */,
 				BB49ECE7293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */,
+				9F0201672A176AF200C9B673 /* KMDottedLineView.swift in Sources */,
 				896DD46929893B9900ADE514 /* KMSplitView.m in Sources */,
 				ADB1FE7829752F0900ED072D /* KMBatchCompressView.swift in Sources */,
 				AD88109829A78ADC00178CA1 /* KMVerificationCodeView.swift in Sources */,

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_ErrorCorrection.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Error Correction.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 152 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_ErrorCorrection.imageset/Error Correction.pdf

@@ -0,0 +1,152 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.531250 3.030151 cm
+0.215686 0.831373 0.811765 scn
+11.418592 20.769800 m
+11.418592 20.252438 11.700403 19.799891 12.118641 19.557543 c
+12.118641 18.175371 l
+7.226383 17.830475 3.368544 13.899054 3.368544 9.099952 c
+3.368544 7.866128 3.623538 6.689634 4.085548 5.616745 c
+4.324090 5.062782 4.617815 4.536438 4.960127 4.044037 c
+5.048690 3.916641 4.940897 3.266623 4.636747 2.093958 c
+4.500668 1.569302 4.975939 1.084202 5.502803 1.211470 c
+6.745975 1.511765 7.434424 1.618814 7.568171 1.532574 c
+8.079510 1.202971 8.626099 0.920099 9.201367 0.690414 c
+10.315522 0.245516 11.537265 -0.000048 12.818543 -0.000048 c
+18.037636 -0.000048 22.268543 4.074158 22.268543 9.099952 c
+22.268543 13.898990 18.410807 17.830372 13.518641 18.175358 c
+13.518641 19.557600 l
+13.936825 19.799961 14.218593 20.252478 14.218593 20.769800 c
+14.218593 21.541998 13.590790 22.169800 12.818592 22.169800 c
+12.046395 22.169800 11.418592 21.541998 11.418592 20.769800 c
+h
+7.261635 13.358135 m
+7.396380 13.452629 7.548779 13.519777 7.709039 13.557225 c
+8.609238 13.767574 9.709990 13.767574 12.843432 13.767575 c
+12.843447 13.767575 l
+12.843461 13.767575 l
+12.843475 13.767575 l
+12.843641 13.767575 l
+13.252094 13.767575 13.628986 13.768225 13.977308 13.768826 c
+16.542664 13.773249 17.558304 13.774999 18.218643 13.494916 c
+18.245035 13.483904 l
+18.584702 13.343203 19.885309 12.804443 19.885309 9.268699 c
+19.885309 5.648186 18.728212 5.227671 18.224842 5.044733 c
+18.218643 5.042480 l
+17.718643 4.860706 15.926975 4.769821 12.843641 4.769821 c
+9.760307 4.769821 7.885308 4.786856 7.468641 5.042480 c
+7.452450 5.052414 7.435126 5.062811 7.416782 5.073818 c
+6.963064 5.346107 5.885308 5.992901 5.885308 9.268699 c
+5.885308 12.160749 6.785347 13.024126 7.261635 13.358135 c
+h
+1.527686 12.505590 m
+1.066092 12.648630 0.575939 12.390390 0.432900 11.928796 c
+0.151112 11.019456 0.000000 10.056777 0.000000 9.061583 c
+0.000000 8.066388 0.151111 7.103709 0.432900 6.194368 c
+0.575939 5.732773 1.066092 5.474535 1.527686 5.617573 c
+1.989281 5.760612 2.247520 6.250767 2.104481 6.712360 c
+1.873924 7.456376 1.750000 8.244530 1.750000 9.061583 c
+1.750000 9.878634 1.873924 10.666789 2.104481 11.410804 c
+2.247520 11.872398 1.989281 12.362551 1.527686 12.505590 c
+h
+24.109547 12.505590 m
+24.571142 12.648630 25.061295 12.390390 25.204334 11.928796 c
+25.486122 11.019456 25.637234 10.056777 25.637234 9.061583 c
+25.637234 8.066388 25.486122 7.103709 25.204334 6.194368 c
+25.061295 5.732773 24.571142 5.474535 24.109547 5.617573 c
+23.647953 5.760612 23.389713 6.250767 23.532753 6.712360 c
+23.763309 7.456376 23.887234 8.244530 23.887234 9.061583 c
+23.887234 9.878634 23.763309 10.666789 23.532753 11.410804 c
+23.389713 11.872398 23.647953 12.362551 24.109547 12.505590 c
+h
+9.507048 7.447737 m
+9.498971 7.439538 l
+9.206078 7.146645 8.731204 7.146645 8.438312 7.439538 c
+7.438311 8.439538 l
+7.145418 8.732431 7.145418 9.207305 7.438311 9.500198 c
+7.731205 9.793092 8.206079 9.793092 8.498971 9.500198 c
+8.968579 9.030590 l
+11.438160 11.500178 l
+11.731052 11.793072 12.205925 11.793072 12.498818 11.500178 c
+12.791712 11.207285 12.791712 10.732410 12.498818 10.439517 c
+9.507048 7.447737 l
+h
+13.938311 8.250341 m
+13.645418 7.957447 13.645418 7.482573 13.938311 7.189679 c
+14.231204 6.896786 14.706077 6.896786 14.998970 7.189679 c
+15.968513 8.159226 l
+16.938160 7.189578 l
+17.231052 6.896685 17.705925 6.896685 17.998817 7.189578 c
+18.291710 7.482471 18.291710 7.957346 17.998817 8.250240 c
+17.029171 9.219889 l
+17.998817 10.189536 l
+18.291710 10.482430 18.291710 10.957304 17.998817 11.250198 c
+17.705925 11.543092 17.231052 11.543092 16.938160 11.250198 c
+15.968513 10.280550 l
+14.998970 11.250097 l
+14.706077 11.542991 14.231204 11.542991 13.938311 11.250097 c
+13.645418 10.957203 13.645418 10.482328 13.938311 10.189435 c
+14.907855 9.219889 l
+13.938311 8.250341 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  3903
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 28.000000 28.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000003993 00000 n
+0000004016 00000 n
+0000004189 00000 n
+0000004263 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+4322
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_Rewriting.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Rewriting.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 2230 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_ai_Rewriting.imageset/Rewriting.pdf


+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_function_other.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "other.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 2498 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/ic_function_other.imageset/other.pdf


+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_SelectYourFiles.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "icon.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 93 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_SelectYourFiles.imageset/icon.pdf

@@ -0,0 +1,93 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.000000 1.600037 cm
+1.000000 1.000000 1.000000 scn
+6.397224 8.899988 m
+5.951925 9.567938 l
+4.826911 11.255458 l
+4.808364 11.283278 4.777142 11.299988 4.743707 11.299988 c
+1.600000 11.299988 l
+1.544773 11.299988 1.500000 11.255217 1.500000 11.199986 c
+1.500000 1.599988 l
+1.500000 1.544760 1.544771 1.499988 1.600000 1.499988 c
+14.400001 1.499988 l
+14.455227 1.499988 14.500000 1.544759 14.500000 1.599989 c
+14.500000 8.799988 l
+14.500000 8.855216 14.455229 8.899988 14.400001 8.899988 c
+7.200000 8.899988 l
+6.397224 8.899988 l
+h
+1.600000 12.799988 m
+0.716345 12.799988 0.000000 12.083642 0.000000 11.199986 c
+0.000000 1.599988 l
+0.000000 0.716332 0.716345 -0.000012 1.600000 -0.000012 c
+14.400001 -0.000012 l
+15.283656 -0.000012 16.000000 0.716333 16.000000 1.599989 c
+16.000000 8.799988 l
+16.000000 9.683643 15.283656 10.399988 14.400001 10.399988 c
+7.200000 10.399988 l
+6.074986 12.087508 l
+5.778241 12.532626 5.278672 12.799988 4.743707 12.799988 c
+1.600000 12.799988 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1050
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001140 00000 n
+0000001163 00000 n
+0000001336 00000 n
+0000001410 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1469
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_ImportFromScanner.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Import From Scanner.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 112 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_ImportFromScanner.imageset/Import From Scanner.pdf

@@ -0,0 +1,112 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 7.450073 cm
+0.807843 0.815686 0.831373 scn
+29.550201 34.247814 m
+30.131178 34.620720 30.299856 35.393990 29.926952 35.974968 c
+29.554049 36.555946 28.780775 36.724621 28.199799 36.351719 c
+1.324799 19.101841 l
+1.278679 19.072239 1.235161 19.040115 1.194302 19.005764 c
+0.490974 18.695852 0.000000 17.992613 0.000000 17.174683 c
+0.000000 2.174683 l
+0.000000 1.070114 0.895432 0.174683 2.000000 0.174683 c
+36.000000 0.174683 l
+37.104568 0.174683 38.000000 1.070114 38.000000 2.174683 c
+38.000000 17.174683 l
+38.000000 18.279251 37.104568 19.174683 36.000000 19.174683 c
+6.066532 19.174683 l
+29.550201 34.247814 l
+h
+35.500000 2.674683 m
+35.500000 16.674683 l
+2.500000 16.674683 l
+2.500000 2.674683 l
+35.500000 2.674683 l
+h
+20.000000 22.174652 m
+20.000000 22.865009 20.559645 23.424652 21.250000 23.424652 c
+36.250000 23.424652 l
+36.940357 23.424652 37.500000 22.865009 37.500000 22.174652 c
+37.500000 21.484295 36.940357 20.924652 36.250000 20.924652 c
+21.250000 20.924652 l
+20.559645 20.924652 20.000000 21.484295 20.000000 22.174652 c
+h
+19.000000 4.174683 m
+20.104570 4.174683 21.000000 5.070112 21.000000 6.174683 c
+21.000000 7.279253 20.104570 8.174683 19.000000 8.174683 c
+17.895430 8.174683 17.000000 7.279253 17.000000 6.174683 c
+17.000000 5.070112 17.895430 4.174683 19.000000 4.174683 c
+h
+27.250000 6.174683 m
+27.250000 5.070112 26.354570 4.174683 25.250000 4.174683 c
+24.145430 4.174683 23.250000 5.070112 23.250000 6.174683 c
+23.250000 7.279253 24.145430 8.174683 25.250000 8.174683 c
+26.354570 8.174683 27.250000 7.279253 27.250000 6.174683 c
+h
+31.500000 4.174683 m
+32.604568 4.174683 33.500000 5.070112 33.500000 6.174683 c
+33.500000 7.279253 32.604568 8.174683 31.500000 8.174683 c
+30.395430 8.174683 29.500000 7.279253 29.500000 6.174683 c
+29.500000 5.070112 30.395430 4.174683 31.500000 4.174683 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1896
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001986 00000 n
+0000002009 00000 n
+0000002182 00000 n
+0000002256 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2315
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewBlackPage.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "New Blank Page.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 127 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewBlackPage.imageset/New Blank Page.pdf

@@ -0,0 +1,127 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 8.250000 3.750000 cm
+0.807843 0.815686 0.831373 scn
+25.148119 34.052544 m
+25.102215 34.102749 l
+21.538939 38.000000 l
+2.500000 38.000000 l
+2.500000 2.500031 l
+28.999977 2.500031 l
+28.999977 30.274498 l
+25.196686 34.004910 l
+25.148119 34.052544 l
+h
+26.947269 35.789692 m
+23.235315 39.849556 l
+22.856424 40.263958 22.320782 40.500000 21.759274 40.500000 c
+2.000000 40.500000 l
+0.895430 40.500000 0.000000 39.604572 0.000000 38.500004 c
+0.000000 2.000031 l
+0.000000 0.895462 0.895429 0.000031 1.999998 0.000031 c
+29.499977 0.000031 l
+30.604546 0.000031 31.499977 0.895458 31.499977 2.000031 c
+31.499977 30.484444 l
+31.499977 31.021584 31.283916 31.536148 30.900444 31.912270 c
+26.947269 35.789692 l
+h
+25.467300 14.607716 m
+25.467300 9.250557 21.124466 4.907722 15.767306 4.907722 c
+10.410147 4.907722 6.067311 9.250557 6.067311 14.607716 c
+6.067311 19.964874 10.410147 24.307711 15.767306 24.307711 c
+21.124466 24.307711 25.467300 19.964874 25.467300 14.607716 c
+h
+15.767306 7.407722 m
+19.743753 7.407722 22.967300 10.631268 22.967300 14.607716 c
+22.967300 18.584164 19.743753 21.807711 15.767306 21.807711 c
+11.790859 21.807711 8.567311 18.584164 8.567311 14.607716 c
+8.567311 10.631268 11.790859 7.407722 15.767306 7.407722 c
+h
+15.765798 18.782564 m
+16.456154 18.782564 17.015797 18.222919 17.015797 17.532564 c
+17.015797 15.859346 l
+18.689243 15.859346 l
+19.379597 15.859346 19.939243 15.299702 19.939243 14.609346 c
+19.939243 13.918991 19.379597 13.359346 18.689243 13.359346 c
+17.015797 13.359346 l
+17.015797 11.685780 l
+17.015797 10.995424 16.456154 10.435780 15.765798 10.435780 c
+15.075441 10.435780 14.515798 10.995424 14.515798 11.685780 c
+14.515798 13.359346 l
+12.842458 13.359346 l
+12.152102 13.359346 11.592458 13.918991 11.592458 14.609346 c
+11.592458 15.299702 12.152102 15.859346 12.842458 15.859346 c
+14.515798 15.859346 l
+14.515798 17.532564 l
+14.515798 18.222919 15.075441 18.782564 15.765798 18.782564 c
+h
+21.000000 36.250000 m
+21.000000 29.500000 l
+27.750000 29.500000 l
+27.750000 27.000000 l
+19.750000 27.000000 l
+19.059645 27.000000 18.500000 27.559643 18.500000 28.250000 c
+18.500000 36.250000 l
+21.000000 36.250000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2215
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002305 00000 n
+0000002328 00000 n
+0000002501 00000 n
+0000002575 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2634
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewFromFiles.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "New From Files.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 127 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_NewFromFiles.imageset/New From Files.pdf

@@ -0,0 +1,127 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.750000 4.750000 cm
+0.807843 0.815686 0.831373 scn
+9.250000 38.500000 m
+7.455075 38.500000 6.000000 37.044926 6.000000 35.250000 c
+6.000000 29.500000 l
+3.250000 29.500000 l
+1.455074 29.500000 0.000000 28.044926 0.000000 26.250000 c
+0.000000 3.250000 l
+0.000000 1.455074 1.455074 0.000000 3.250000 0.000000 c
+33.250000 0.000000 l
+35.044926 0.000000 36.500000 1.455078 36.500000 3.250000 c
+36.500000 19.250000 l
+36.500000 21.044926 35.044926 22.500000 33.250000 22.500000 c
+30.500000 22.500000 l
+30.500000 35.250000 l
+30.500000 37.044926 29.044928 38.500000 27.250000 38.500000 c
+9.250000 38.500000 l
+h
+28.000000 22.500000 m
+28.000000 35.250000 l
+28.000000 35.664215 27.664213 36.000000 27.250000 36.000000 c
+9.250000 36.000000 l
+8.835787 36.000000 8.500000 35.664215 8.500000 35.250000 c
+8.500000 29.500000 l
+9.750000 29.500000 l
+12.874523 29.500000 l
+14.010064 29.500000 15.063261 28.907326 15.652582 27.936680 c
+18.734386 22.860767 l
+18.870384 22.636772 19.113430 22.500000 19.375477 22.500000 c
+28.000000 22.500000 l
+h
+2.500000 26.250000 m
+2.500000 26.664213 2.835787 27.000000 3.250000 27.000000 c
+9.750000 27.000000 l
+12.874523 27.000000 l
+13.136571 27.000000 13.379617 26.863228 13.515614 26.639233 c
+16.597418 21.563320 l
+17.186737 20.592674 18.239937 20.000000 19.375477 20.000000 c
+33.250000 20.000000 l
+33.664215 20.000000 34.000000 19.664213 34.000000 19.250000 c
+34.000000 3.250000 l
+34.000000 2.835785 33.664211 2.500000 33.250000 2.500000 c
+3.250000 2.500000 l
+2.835786 2.500000 2.500000 2.835785 2.500000 3.250000 c
+2.500000 26.250000 l
+h
+26.250000 16.500000 m
+26.940355 16.500000 27.500000 15.940355 27.500000 15.250000 c
+27.500000 12.500000 l
+30.250000 12.500000 l
+30.940357 12.500000 31.500000 11.940355 31.500000 11.250000 c
+31.500000 10.559645 30.940357 10.000000 30.250000 10.000000 c
+27.500000 10.000000 l
+27.500000 7.250000 l
+27.500000 6.559643 26.940355 6.000000 26.250000 6.000000 c
+25.559645 6.000000 25.000000 6.559643 25.000000 7.250000 c
+25.000000 10.000000 l
+22.250000 10.000000 l
+21.559645 10.000000 21.000000 10.559645 21.000000 11.250000 c
+21.000000 11.940355 21.559645 12.500000 22.250000 12.500000 c
+25.000000 12.500000 l
+25.000000 15.250000 l
+25.000000 15.940355 25.559645 16.500000 26.250000 16.500000 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2317
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002407 00000 n
+0000002430 00000 n
+0000002603 00000 n
+0000002677 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2736
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_addFiles.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "add files.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 230 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_empty_addFiles.imageset/add files.pdf

@@ -0,0 +1,230 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 23.000000 14.000000 cm
+0.807843 0.815686 0.831373 scn
+42.198082 58.125153 m
+42.253166 58.064903 l
+42.311447 58.007740 l
+49.000000 51.447357 l
+49.000000 3.000000 l
+3.000000 3.000000 l
+3.000000 65.000000 l
+35.912369 65.000000 l
+42.198082 58.125153 l
+h
+37.829082 67.349556 m
+44.412148 60.149483 l
+51.400467 53.295074 l
+51.783939 52.918953 52.000000 52.404388 52.000000 51.867249 c
+52.000000 2.000000 l
+52.000000 0.895432 51.104568 0.000000 50.000000 0.000000 c
+2.000001 0.000000 l
+0.895432 0.000000 0.000000 0.895432 0.000000 2.000000 c
+0.000000 66.000000 l
+0.000000 67.104568 0.895431 68.000000 2.000000 68.000000 c
+36.353039 68.000000 l
+36.914547 68.000000 37.450188 67.763962 37.829082 67.349556 c
+h
+8.000000 38.000000 m
+15.000000 38.000000 l
+15.000000 41.000000 l
+8.000000 41.000000 l
+8.000000 38.000000 l
+h
+18.000000 38.000000 m
+38.000000 38.000000 l
+38.000000 41.000000 l
+18.000000 41.000000 l
+18.000000 38.000000 l
+h
+8.000000 31.000000 m
+29.000000 31.000000 l
+29.000000 34.000000 l
+8.000000 34.000000 l
+8.000000 31.000000 l
+h
+43.000000 24.000000 m
+8.000000 24.000000 l
+8.000000 27.000000 l
+43.000000 27.000000 l
+43.000000 24.000000 l
+h
+8.000000 10.000000 m
+32.000000 10.000000 l
+32.000000 13.000000 l
+8.000000 13.000000 l
+8.000000 10.000000 l
+h
+25.000000 17.000000 m
+8.000000 17.000000 l
+8.000000 20.000000 l
+25.000000 20.000000 l
+25.000000 17.000000 l
+h
+35.000000 17.000000 m
+28.000000 17.000000 l
+28.000000 20.000000 l
+35.000000 20.000000 l
+35.000000 17.000000 l
+h
+f*
+n
+Q
+q
+0.983025 -0.183470 0.183470 0.983025 64.458496 20.234360 cm
+0.807843 0.815686 0.831373 scn
+16.352558 52.007996 m
+16.352558 7.853607 l
+19.352558 7.853607 l
+19.352558 52.007996 l
+16.352558 52.007996 l
+h
+0.000000 52.685425 m
+15.675129 52.685425 l
+15.675129 55.685425 l
+0.000000 55.685425 l
+0.000000 52.685425 l
+h
+15.675131 7.176178 m
+13.389420 7.176178 l
+13.389420 4.176178 l
+15.675131 4.176178 l
+15.675131 7.176178 l
+h
+16.352558 7.853607 m
+16.352558 7.479473 16.049261 7.176178 15.675131 7.176178 c
+15.675131 4.176178 l
+17.706121 4.176178 19.352558 5.822628 19.352558 7.853607 c
+16.352558 7.853607 l
+h
+19.352558 52.007996 m
+19.352558 54.038986 17.706116 55.685425 15.675129 55.685425 c
+15.675129 52.685425 l
+16.049263 52.685425 16.352558 52.382130 16.352558 52.007996 c
+19.352558 52.007996 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 56.000000 61.500000 cm
+0.807843 0.815686 0.831373 scn
+0.000000 1.500000 m
+-1.500000 1.500000 l
+-1.500000 0.671573 -0.828427 0.000000 0.000000 0.000000 c
+0.000000 1.500000 l
+h
+14.250000 3.000000 m
+0.000000 3.000000 l
+0.000000 0.000000 l
+14.250000 0.000000 l
+14.250000 3.000000 l
+h
+1.500000 1.500000 m
+1.500000 15.750000 l
+-1.500000 15.750000 l
+-1.500000 1.500000 l
+1.500000 1.500000 l
+h
+f
+n
+Q
+q
+0.965926 0.258819 -0.258819 0.965926 15.326099 12.848835 cm
+0.807843 0.815686 0.831373 scn
+2.308538 6.324112 m
+2.218217 7.821392 l
+2.218217 7.821392 l
+2.308538 6.324112 l
+h
+1.500000 8.497589 m
+1.500000 45.446964 l
+-1.500000 45.446964 l
+-1.500000 8.497589 l
+1.500000 8.497589 l
+h
+2.177428 46.124390 m
+16.709490 46.124390 l
+16.709490 49.124390 l
+2.177428 49.124390 l
+2.177428 46.124390 l
+h
+6.775479 8.096302 m
+2.218217 7.821392 l
+2.398860 4.826832 l
+6.956121 5.101742 l
+6.775479 8.096302 l
+h
+-1.500000 8.497589 m
+-1.500000 6.379524 0.284638 4.699295 2.398860 4.826832 c
+2.218217 7.821392 l
+1.828753 7.797897 1.500000 8.107414 1.500000 8.497589 c
+-1.500000 8.497589 l
+h
+1.500000 45.446964 m
+1.500000 45.821095 1.803293 46.124390 2.177428 46.124390 c
+2.177428 49.124390 l
+0.146442 49.124390 -1.500000 47.477951 -1.500000 45.446964 c
+1.500000 45.446964 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  3636
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 96.000000 96.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000003726 00000 n
+0000003749 00000 n
+0000003922 00000 n
+0000003996 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+4055
+%%EOF

+ 12 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_home.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "home.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 215 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Home/icon_home.imageset/home.pdf

@@ -0,0 +1,215 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+5.411656 19.885353 m
+4.653033 19.362823 4.199951 18.500589 4.199951 17.579424 c
+4.199951 7.000511 l
+4.199951 5.454115 5.453556 4.200512 6.999953 4.200512 c
+20.999950 4.200512 l
+22.546349 4.200512 23.799952 5.454111 23.799952 7.000509 c
+23.799952 17.579422 l
+23.799952 18.500587 23.346870 19.362823 22.588245 19.885353 c
+15.588245 24.706860 l
+14.631842 25.365618 13.368061 25.365618 12.411657 24.706860 c
+5.411656 19.885353 l
+h
+16.000000 10.999756 m
+12.000000 10.999756 l
+12.000000 5.999756 l
+16.000000 5.999756 l
+16.000000 10.999756 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 4.199951 4.035889 cm
+0.090196 0.439216 0.956863 scn
+1.211705 15.849465 m
+0.077209 17.496559 l
+0.077209 17.496559 l
+1.211705 15.849465 l
+h
+18.388294 15.849464 m
+17.253798 14.202372 l
+17.253799 14.202370 l
+18.388294 15.849464 l
+h
+11.388294 20.670971 m
+12.522790 22.318064 l
+12.522790 22.318064 l
+11.388294 20.670971 l
+h
+8.211706 20.670971 m
+7.077210 22.318066 l
+7.077210 22.318066 l
+8.211706 20.670971 l
+h
+7.800049 6.963867 m
+7.800049 8.963867 l
+5.800049 8.963867 l
+5.800049 6.963867 l
+7.800049 6.963867 l
+h
+11.800049 6.963867 m
+13.800049 6.963867 l
+13.800049 8.963867 l
+11.800049 8.963867 l
+11.800049 6.963867 l
+h
+7.800049 1.963867 m
+5.800049 1.963867 l
+5.800049 -0.036133 l
+7.800049 -0.036133 l
+7.800049 1.963867 l
+h
+11.800049 1.963867 m
+11.800049 -0.036133 l
+13.800049 -0.036133 l
+13.800049 1.963867 l
+11.800049 1.963867 l
+h
+2.000000 13.543535 m
+2.000000 13.806725 2.129451 14.053076 2.346202 14.202372 c
+0.077209 17.496559 l
+-1.223287 16.600794 -2.000000 15.122679 -2.000000 13.543535 c
+2.000000 13.543535 l
+h
+2.000000 2.964622 m
+2.000000 13.543535 l
+-2.000000 13.543535 l
+-2.000000 2.964622 l
+2.000000 2.964622 l
+h
+2.800002 2.164623 m
+2.358172 2.164623 2.000000 2.522799 2.000000 2.964622 c
+-2.000000 2.964622 l
+-2.000000 0.313654 0.149038 -1.835377 2.800002 -1.835377 c
+2.800002 2.164623 l
+h
+16.799999 2.164623 m
+2.800002 2.164623 l
+2.800002 -1.835377 l
+16.799999 -1.835377 l
+16.799999 2.164623 l
+h
+17.600000 2.964621 m
+17.600000 2.522795 17.241831 2.164623 16.799999 2.164623 c
+16.799999 -1.835377 l
+19.450964 -1.835377 21.600000 0.313650 21.600000 2.964621 c
+17.600000 2.964621 l
+h
+17.600000 13.543533 m
+17.600000 2.964621 l
+21.600000 2.964621 l
+21.600000 13.543533 l
+17.600000 13.543533 l
+h
+17.253799 14.202370 m
+17.470549 14.053076 17.600000 13.806725 17.600000 13.543533 c
+21.600000 13.543533 l
+21.600000 15.122675 20.823290 16.600794 19.522789 17.496559 c
+17.253799 14.202370 l
+h
+10.253798 19.023876 m
+17.253798 14.202372 l
+19.522791 17.496559 l
+12.522790 22.318064 l
+10.253798 19.023876 l
+h
+9.346202 19.023876 m
+9.619460 19.212093 9.980539 19.212093 10.253798 19.023876 c
+12.522790 22.318064 l
+10.883242 23.447363 8.716760 23.447365 7.077210 22.318066 c
+9.346202 19.023876 l
+h
+2.346201 14.202372 m
+9.346202 19.023876 l
+7.077210 22.318066 l
+0.077209 17.496559 l
+2.346201 14.202372 l
+h
+7.800049 4.963867 m
+11.800049 4.963867 l
+11.800049 8.963867 l
+7.800049 8.963867 l
+7.800049 4.963867 l
+h
+9.800049 1.963867 m
+9.800049 6.963867 l
+5.800049 6.963867 l
+5.800049 1.963867 l
+9.800049 1.963867 l
+h
+11.800049 3.963867 m
+7.800049 3.963867 l
+7.800049 -0.036133 l
+11.800049 -0.036133 l
+11.800049 3.963867 l
+h
+9.800049 6.963867 m
+9.800049 1.963867 l
+13.800049 1.963867 l
+13.800049 6.963867 l
+9.800049 6.963867 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  3331
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 28.000000 28.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000003421 00000 n
+0000003444 00000 n
+0000003617 00000 n
+0000003691 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+3750
+%%EOF

+ 74 - 0
PDF Office/PDF Master/Class/Home/View/KMDottedLineView.swift

@@ -0,0 +1,74 @@
+//
+//  KMDottedLineView.swift
+//  PDF Master
+//
+//  Created by wanjun on 2023/5/19.
+//
+
+import Cocoa
+
+@objc enum KMDrawBorderState : Int {
+    case None = 0
+    case Hover
+    case Select
+}
+
+class KMDottedLineView: NSView {
+    
+    var state: KMDrawBorderState = .None
+    
+    var area: NSTrackingArea?
+    var canHover : Bool! = true // 是否允许悬浮
+    var canClick : Bool! = true // 是否允许点击
+
+    deinit {
+        if (self.area != nil) {
+            self.removeTrackingArea(self.area!)
+            self.area = nil
+        }
+    }
+
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+        
+        if ((self.state == .Hover) || (self.state == .Select)) {
+            let path = NSBezierPath(roundedRect: self.bounds, xRadius: 8.0, yRadius: 8.0)
+            path.lineWidth = 1.0
+            NSColor(hex: "#68ACF8").setStroke()
+            path.stroke()
+        } else {
+            let path = NSBezierPath(roundedRect: self.bounds, xRadius: 8.0, yRadius: 8.0)
+            
+            path.setLineDash([3, 3, 3], count: 3, phase: 0)
+            path.lineWidth = 1.0
+            NSColor(hex: "#CED0D4").setStroke()
+            path.stroke()
+        }
+    }
+    
+    override func updateTrackingAreas() {
+        super.updateTrackingAreas()
+
+        if (self.area != nil) {
+            self.removeTrackingArea(self.area!)
+            self.area = nil
+        }
+        
+        self.area = NSTrackingArea(rect: self.bounds, options: [.mouseEnteredAndExited, .mouseMoved, .activeAlways], owner: self)
+        self.addTrackingArea(self.area!)
+    }
+    
+    override func mouseEntered(with event: NSEvent) {
+        if canHover {
+            self.state = .Hover
+            self.needsDisplay = true
+        }
+    }
+    
+    override func mouseExited(with event: NSEvent) {
+        if canHover {
+            self.state = .None
+            self.needsDisplay = true
+        }
+    }
+}

+ 398 - 0
PDF Office/PDF Master/Class/Home/ViewController/KMAIOpenPDFFilesVC.swift

@@ -0,0 +1,398 @@
+//
+//  KMAIOpenPDFFilesVC.swift
+//  PDF Master
+//
+//  Created by wanjun on 2023/5/22.
+//
+
+import Cocoa
+
+class KMAIOpenPDFFilesVC: NSViewController {
+    
+    @IBOutlet weak var openPDFFilesLabel: NSTextField!
+    @IBOutlet weak var openPDFFilesImageView: NSImageView!
+    @IBOutlet weak var selectYourFilesBox: KMBox!
+    @IBOutlet weak var selectYourFilesLabel: NSTextField!
+    @IBOutlet weak var selectYourFilesImageView: NSImageView!
+    @IBOutlet weak var orDropFilesHereToOpenLabel: NSTextField!
+
+    @IBOutlet weak var creatPDFLabel: NSTextField!
+    @IBOutlet weak var newFromFilesLabel: NSTextField!
+    @IBOutlet weak var newFromFilesImageView: NSImageView!
+    @IBOutlet weak var newBlankPageLabel: NSTextField!
+    @IBOutlet weak var newBlankPageImageView: NSImageView!
+    @IBOutlet weak var importFromScannerLabel: NSTextField!
+    @IBOutlet weak var importFromScannerImageView: NSImageView!
+    var deviceBrowserWC: KMDeviceBrowserWindowController?
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        
+        self.initLocalization()
+        self.initializeUI()
+    }
+    
+    
+    // MARK: initialize
+    
+    func initializeUI() -> Void {
+        self.openPDFFilesLabel.textColor = NSColor(hex: "#252629")
+        self.openPDFFilesLabel.font = NSFont.SFProTextSemibold(20.0)
+        self.openPDFFilesImageView.image = NSImage(named: "icon_empty_addFiles")
+        self.selectYourFilesBox.cornerRadius = 4.0
+        self.selectYourFilesBox.fillColor = NSColor(hex: "#1770F4")
+        self.selectYourFilesLabel.textColor = NSColor(hex: "#FFFFFF")
+        self.selectYourFilesLabel.font = NSFont.SFProTextRegular(16.0)
+        self.selectYourFilesImageView.image = NSImage(named: "icon_SelectYourFiles")
+        self.orDropFilesHereToOpenLabel.textColor = NSColor(hex: "#616469")
+        self.orDropFilesHereToOpenLabel.font = NSFont.SFProTextRegular(14.0)
+        
+        self.creatPDFLabel.textColor = NSColor(hex: "#252629")
+        self.creatPDFLabel.font = NSFont.SFProTextSemibold(20.0)
+        self.newFromFilesLabel.textColor = NSColor(hex: "#252629")
+        self.newFromFilesLabel.font = NSFont.SFProTextRegular(16.0)
+        self.newFromFilesImageView.image = NSImage(named: "icon_empty_NewFromFiles")
+        self.newBlankPageLabel.textColor = NSColor(hex: "#252629")
+        self.newBlankPageLabel.font = NSFont.SFProTextRegular(16.0)
+        self.newBlankPageImageView.image = NSImage(named: "icon_empty_NewBlackPage")
+        self.importFromScannerLabel.textColor = NSColor(hex: "#252629")
+        self.importFromScannerLabel.font = NSFont.SFProTextRegular(16.0)
+        self.importFromScannerImageView.image = NSImage(named: "icon_empty_ImportFromScanner")
+        
+        self.selectYourFilesBox.moveCallback = { [unowned self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
+            if mouseEntered {
+                self.selectYourFilesBox.fillColor = NSColor(hex: "#3F8FF6")
+            } else {
+                self.selectYourFilesBox.fillColor = NSColor(hex: "#1770F4")
+            }
+        }
+        self.selectYourFilesBox.downCallback = { [unowned self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
+            if downEntered {
+                self.openPDFButtonAction()
+            }
+        }
+
+    }
+    
+    func initLocalization() -> Void {
+        self.openPDFFilesLabel.stringValue = NSLocalizedString("Open PDF Files", comment: "")
+        self.selectYourFilesLabel.stringValue = NSLocalizedString("Select your files", comment: "")
+        self.orDropFilesHereToOpenLabel.stringValue = NSLocalizedString("or drop files here to open", comment: "")
+        self.creatPDFLabel.stringValue = NSLocalizedString("Create PDF", comment: "")
+        self.newFromFilesLabel.stringValue = NSLocalizedString("New From Files", comment: "")
+        self.newBlankPageLabel.stringValue = NSLocalizedString("New Blank Page", comment: "")
+        self.importFromScannerLabel.stringValue = NSLocalizedString("Import From Scanner", comment: "")
+    }
+    
+    // MARK: Private Methods
+    
+    func openImageFile(url: URL) -> Void {
+        let filePath = url.path
+        
+        let fileName: NSString = url.lastPathComponent as NSString
+        let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath()).deletingLastPathComponent
+
+        let imageName = NSString(string: NSString(string: filePath).lastPathComponent).deletingPathExtension
+        
+        let path = self.fetchDifferentFilePath(filePath: savePath + "/" + imageName + ".pdf")
+        let document = CPDFDocument.init()
+        var success = false
+        
+        //FIXME: 无法插入图片
+        let image = NSImage(contentsOfFile: filePath)
+        let insertPageSuccess = document?.insertPage(image!.size, withImage: filePath, at: document!.pageCount)
+        if insertPageSuccess != nil {
+            //信号量控制异步
+            let semaphore = DispatchSemaphore(value: 0)
+            DispatchQueue.global().async {
+                success = ((document?.write(toFile: path)) != nil)
+                semaphore.signal()
+            }
+            semaphore.wait()
+        } else {
+        }
+        if success {
+            if !path.isPDFValid() {
+                let alert = NSAlert()
+                alert.alertStyle = .critical
+                alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                alert.runModal()
+                return
+            }
+            NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: path), display: true) { document, documentWasAlreadyOpen, error in
+                if error != nil {
+                    NSApp.presentError(error!)
+                    return
+                }
+            }
+        }
+    }
+    
+    func openOfficeFile(url: URL) -> Void {
+        let filePath = url.path
+        let folderPath = "convertToPDF.pdf"
+        let savePath = folderPath.kUrlToPDFFolderPath()
+        if savePath == nil {
+            return
+        }
+        KMConvertPDFManagerOC.convertFile(filePath, savePath: savePath!) { success, errorDic in
+            if errorDic != nil || !success || !FileManager.default.fileExists(atPath: savePath!) {
+                if FileManager.default.fileExists(atPath: savePath!) {
+                    try?FileManager.default.removeItem(atPath: savePath!)
+                }
+                let alert = NSAlert.init()
+                alert.alertStyle = .critical
+                var infoString = ""
+                if errorDic != nil {
+                    for key in (errorDic! as Dictionary).keys {
+                        infoString = infoString.appendingFormat("%@\n", errorDic![key] as! CVarArg)
+                    }
+                }
+                alert.informativeText = NSLocalizedString("Please install Microsoft Office to create PDFs from Office files", comment: "")
+                alert.messageText = NSLocalizedString("Failed to Create PDF", comment: "")
+                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.runModal()
+                return
+            }
+            
+            if !savePath!.isPDFValid() {
+                let alert = NSAlert()
+                alert.alertStyle = .critical
+                alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                alert.runModal()
+                return
+            }
+            NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: savePath!), display: true) { document, documentWasAlreadyOpen, error in
+                if error != nil {
+                    NSApp.presentError(error!)
+                    return
+                }
+            }
+        }
+    }
+    
+    func fetchUniquePath(_ originalPath: String) -> String {
+        var path = originalPath
+        let dManager = FileManager.default
+        if !dManager.fileExists(atPath: path) {
+            if path.extension.count < 1 {
+                path = path.stringByAppendingPathExtension("pdf")
+            }
+            return path
+        } else {
+            let originalFullFileName = path.lastPathComponent
+            let originalFileName = path.lastPathComponent.deletingPathExtension.lastPathComponent
+            let originalExtension = path.extension
+
+            let startIndex: Int = 0
+            let endIndex: Int = startIndex + originalPath.count - originalFullFileName.count - 1
+            let fileLocatePath = originalPath.substring(to: endIndex)
+            var i = 1
+            while (1 != 0) {
+                var newName = String(format: "%@%ld", originalFileName, i)
+                newName = String(format: "%@%@", newName, originalExtension)
+                let newPath = fileLocatePath.stringByAppendingPathComponent(newName)
+                if !dManager.fileExists(atPath: newPath) {
+                    return newPath
+                } else {
+                    i+=1
+                    continue
+                }
+            }
+        }
+    }
+    
+    func fetchDifferentFilePath(filePath: String) -> String {
+        var resultFilePath = filePath
+        var index: Int = 0
+        while (FileManager.default.fileExists(atPath: resultFilePath)) {
+            index += 1
+            let path = NSString(string: filePath).deletingPathExtension + "(" + String(index) + ")"
+            resultFilePath = NSString(string: path).appendingPathExtension(NSString(string: filePath).pathExtension)!
+        }
+        
+        return resultFilePath;
+    }
+    
+    func openFile(withFilePath path: URL) -> Void {
+        let type = path.pathExtension.lowercased()
+        if (type == "pdf") {
+            if !path.path.isPDFValid() {
+                let alert = NSAlert()
+                alert.alertStyle = .critical
+                alert.messageText = NSLocalizedString("This file format is not supported, please drag in PDF, picture, Office format files", comment: "")
+                alert.runModal()
+                return
+            }
+            NSDocumentController.shared.openDocument(withContentsOf: path, display: true) { document, documentWasAlreadyOpen, error in
+                if error != nil {
+                    NSApp.presentError(error!)
+                    return
+                }
+            }
+        } else if (type == "jpg") ||
+                  (type == "cur") ||
+                  (type == "bmp") ||
+                  (type == "jpeg") ||
+                  (type == "gif") ||
+                  (type == "png") ||
+                  (type == "tiff") ||
+                  (type == "tif") ||
+                  (type == "ico") ||
+                  (type == "icns") ||
+                  (type == "tga") ||
+                  (type == "psd") ||
+                  (type == "eps") ||
+                  (type == "hdr") ||
+                  (type == "jp2") ||
+                  (type == "jpc") ||
+                  (type == "pict") ||
+                  (type == "sgi") ||
+                  (type == "heic") {
+            openImageFile(url: path)
+        } else if (type == "doc") ||
+                  (type == "docx") ||
+                  (type == "xls") ||
+                  (type == "xlsx") ||
+                  (type == "ppt") ||
+                  (type == "pptx") ||
+                  (type == "pptx") {
+            let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
+            let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath())
+            openOfficeFile(url: path)
+        }
+    }
+    
+    // MARK: Action
+    
+    @IBAction func createPDFAction(_ sender: NSButton) {
+        let tag = sender.tag;
+        if tag == 0 {
+            // New From Files
+            self.openSupportPDFButtonAction()
+        } else if tag == 1 {
+            // New Blank Page
+            self.openBlankPage("")
+        } else if tag == 2 {
+            // Import From Scanner
+            self.importFromScanner("")
+        }
+    }
+    
+    func openPDFButtonAction() {
+        let openPanel = NSOpenPanel()
+        openPanel.allowedFileTypes = ["pdf", "PDF"]
+        openPanel.allowsMultipleSelection = true
+        openPanel.beginSheetModal(for: self.view.window!) { result in
+            if result == .OK {
+                for url in openPanel.urls {
+                    if !url.path.isPDFValid() {
+                        let alert = NSAlert()
+                        alert.alertStyle = .critical
+                        alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                        alert.runModal()
+                    } else {
+                        NSDocumentController.shared.openDocument(withContentsOf: url, display: true) { document, documentWasAlreadyOpen, error in
+                            if error != nil {
+                                NSApp.presentError(error!)
+                            } else {
+                                
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    func openSupportPDFButtonAction() {
+        let openPanel = NSOpenPanel()
+        openPanel.allowedFileTypes = ["pdf", "PDF", "jpg", "cur", "bmp", "jpeg", "gif", "png", "tiff", "tif", "ico", "icns", "tga", "psd", "eps", "hdr", "jp2", "jpc", "pict", "sgi", "heic", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "pptx"]
+        openPanel.allowsMultipleSelection = true
+        
+        var window = self.view.window
+        if (window == nil) {
+            window = NSApp.mainWindow
+        }
+        openPanel.beginSheetModal(for: window!) { [self] result in
+            if result == .OK {
+                var imageUrl: [URL] = []
+                for url in openPanel.urls {
+                    let type = url.pathExtension.lowercased()
+                    if (type == "pdf" || type == "PDF") {
+                        if !url.path.isPDFValid() {
+                            let alert = NSAlert()
+                            alert.alertStyle = .critical
+                            alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                            alert.runModal()
+                        } else {
+                            NSDocumentController.shared.openDocument(withContentsOf: url, display: true) { document, documentWasAlreadyOpen, error in
+                                if error != nil {
+                                    NSApp.presentError(error!)
+                                    return
+                                }
+                            }
+                        }
+                    } else if (type == "jpg") ||
+                                (type == "cur") ||
+                                (type == "bmp") ||
+                                (type == "jpeg") ||
+                                (type == "gif") ||
+                                (type == "png") ||
+                                (type == "tiff") ||
+                                (type == "tif") ||
+                                (type == "ico") ||
+                                (type == "icns") ||
+                                (type == "tga") ||
+                                (type == "psd") ||
+                                (type == "eps") ||
+                                (type == "hdr") ||
+                                (type == "jp2") ||
+                                (type == "jpc") ||
+                                (type == "pict") ||
+                                (type == "sgi") ||
+                                (type == "heic") {
+                        openImageFile(url: url)
+                    } else if (type == "doc") ||
+                                (type == "docx") ||
+                                (type == "xls") ||
+                                (type == "xlsx") ||
+                                (type == "ppt") ||
+                                (type == "pptx") ||
+                                (type == "pptx") {
+                        self.openOfficeFile(url: url)
+                    }
+                }
+            }
+        }
+    }
+    
+    @IBAction func openBlankPage(_ sender: Any) {
+        let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
+        let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath())
+        let pdfDocument = CPDFDocument()
+        pdfDocument?.insertPage(CGSize(width: 595, height: 842), at: 0)
+        pdfDocument?.write(to: URL(fileURLWithPath: savePath))
+        NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: savePath), display: true) { document, documentWasAlreadyOpen, error in
+            if error != nil {
+                NSApp.presentError(error!)
+            } else {
+                if document is KMMainDocument {
+                    let newDocument = document
+                    (newDocument as! KMMainDocument).isNewCreated = true
+                }
+            }
+        }
+    }
+    
+    @IBAction func importFromScanner(_ sender: Any) {
+        deviceBrowserWC = KMDeviceBrowserWindowController.init(windowNibName: "KMDeviceBrowserWindowController")
+        deviceBrowserWC!.type = .scanner
+        deviceBrowserWC!.importScannerFileCallback = { [unowned self](url: NSURL) -> Void in
+            openFile(withFilePath: url as URL)
+        }
+        deviceBrowserWC!.showWindow(NSApp.mainWindow)
+    }
+
+}

+ 330 - 0
PDF Office/PDF Master/Class/Home/ViewController/KMAIOpenPDFFilesVC.xib

@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMAIOpenPDFFilesVC" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="creatPDFLabel" destination="ymv-tl-S9B" id="qbX-IF-uF5"/>
+                <outlet property="importFromScannerImageView" destination="ZkD-G1-ufi" id="q7O-PU-MPZ"/>
+                <outlet property="importFromScannerLabel" destination="6VI-X2-0F4" id="zsM-J0-dFn"/>
+                <outlet property="newBlankPageImageView" destination="vaH-Gg-RE3" id="tJh-vm-5gT"/>
+                <outlet property="newBlankPageLabel" destination="8tw-6D-nG5" id="QDW-PG-c2Q"/>
+                <outlet property="newFromFilesImageView" destination="Vo2-Q5-D0s" id="37d-ie-cRN"/>
+                <outlet property="newFromFilesLabel" destination="7DP-8M-cyh" id="Q2C-GS-eLy"/>
+                <outlet property="openPDFFilesImageView" destination="G8R-Cd-sSC" id="FHu-Vv-wv5"/>
+                <outlet property="openPDFFilesLabel" destination="Kwa-7o-t9g" id="Kep-vK-wn3"/>
+                <outlet property="orDropFilesHereToOpenLabel" destination="Q7o-W4-U5i" id="h2T-uH-eYa"/>
+                <outlet property="selectYourFilesBox" destination="mEy-Af-9bc" id="Pvw-gR-WHT"/>
+                <outlet property="selectYourFilesImageView" destination="iFo-5S-2e6" id="4kU-cr-GPX"/>
+                <outlet property="selectYourFilesLabel" destination="I4g-Mc-xZP" id="tUp-Vx-QnG"/>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="Hz6-mo-xeY">
+            <rect key="frame" x="0.0" y="0.0" width="858" height="388"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="rkU-6X-4PB">
+                    <rect key="frame" x="498" y="40" width="328" height="308"/>
+                    <view key="contentView" id="ITd-Xp-Gda">
+                        <rect key="frame" x="0.0" y="0.0" width="328" height="308"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ymv-tl-S9B">
+                                <rect key="frame" x="-2" y="280" width="332" height="28"/>
+                                <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="OvS-AE-U4f">
+                                    <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="ijL-7x-C3M" customClass="KMDottedLineView" customModule="PDF_Master" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="184" width="328" height="80"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Vo2-Q5-D0s">
+                                        <rect key="frame" x="20" y="16" width="48" height="48"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="48" id="8Ym-SH-ivV"/>
+                                            <constraint firstAttribute="width" constant="48" id="fBS-XU-A42"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="lUO-YD-f4Y"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7DP-8M-cyh">
+                                        <rect key="frame" x="78" y="32" width="240" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="gOr-jf-tVk">
+                                            <font key="font" metaFont="system"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DEy-Ef-iCj">
+                                        <rect key="frame" x="0.0" y="0.0" width="328" height="80"/>
+                                        <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="FZ7-cc-TD5">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="createPDFAction:" target="-2" id="W0r-RG-SA2"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstAttribute="trailing" secondItem="DEy-Ef-iCj" secondAttribute="trailing" id="BYg-Aa-pMY"/>
+                                    <constraint firstItem="Vo2-Q5-D0s" firstAttribute="leading" secondItem="ijL-7x-C3M" secondAttribute="leading" constant="20" id="ETn-NS-NXm"/>
+                                    <constraint firstItem="7DP-8M-cyh" firstAttribute="centerY" secondItem="Vo2-Q5-D0s" secondAttribute="centerY" id="M0g-jT-3zD"/>
+                                    <constraint firstItem="Vo2-Q5-D0s" firstAttribute="centerY" secondItem="ijL-7x-C3M" secondAttribute="centerY" id="QIl-f0-44d"/>
+                                    <constraint firstItem="7DP-8M-cyh" firstAttribute="leading" secondItem="Vo2-Q5-D0s" secondAttribute="trailing" constant="12" id="SMD-pT-ftc"/>
+                                    <constraint firstItem="DEy-Ef-iCj" firstAttribute="leading" secondItem="ijL-7x-C3M" secondAttribute="leading" id="Ssa-jr-qXP"/>
+                                    <constraint firstAttribute="bottom" secondItem="DEy-Ef-iCj" secondAttribute="bottom" id="fmy-lk-2Zg"/>
+                                    <constraint firstItem="DEy-Ef-iCj" firstAttribute="top" secondItem="ijL-7x-C3M" secondAttribute="top" id="kNW-jZ-PDY"/>
+                                    <constraint firstAttribute="trailing" secondItem="7DP-8M-cyh" secondAttribute="trailing" constant="12" id="kfj-jg-P6K"/>
+                                    <constraint firstAttribute="height" constant="80" id="ou6-ig-yyC"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Lt3-8t-GUS" customClass="KMDottedLineView" customModule="PDF_Master" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="92" width="328" height="80"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vaH-Gg-RE3">
+                                        <rect key="frame" x="20" y="16" width="48" height="48"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="48" id="HSW-dT-BpZ"/>
+                                            <constraint firstAttribute="width" constant="48" id="rS9-IK-oQJ"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="hSo-f9-vaK"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8tw-6D-nG5">
+                                        <rect key="frame" x="78" y="32" width="240" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="UbN-Sa-wRR">
+                                            <font key="font" metaFont="system"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                    <button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="eB0-YT-Ld7">
+                                        <rect key="frame" x="0.0" y="0.0" width="328" height="80"/>
+                                        <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="kPc-Fw-cKJ">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="createPDFAction:" target="-2" id="SoH-HX-tJg"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="vaH-Gg-RE3" firstAttribute="centerY" secondItem="Lt3-8t-GUS" secondAttribute="centerY" id="3d0-89-07d"/>
+                                    <constraint firstAttribute="trailing" secondItem="8tw-6D-nG5" secondAttribute="trailing" constant="12" id="A30-ej-fqs"/>
+                                    <constraint firstItem="vaH-Gg-RE3" firstAttribute="leading" secondItem="Lt3-8t-GUS" secondAttribute="leading" constant="20" id="BnA-Ys-gGJ"/>
+                                    <constraint firstAttribute="trailing" secondItem="eB0-YT-Ld7" secondAttribute="trailing" id="CLD-fp-ALu"/>
+                                    <constraint firstItem="8tw-6D-nG5" firstAttribute="centerY" secondItem="vaH-Gg-RE3" secondAttribute="centerY" id="JbY-mJ-BfE"/>
+                                    <constraint firstItem="eB0-YT-Ld7" firstAttribute="top" secondItem="Lt3-8t-GUS" secondAttribute="top" id="cs4-6i-IOY"/>
+                                    <constraint firstItem="8tw-6D-nG5" firstAttribute="leading" secondItem="vaH-Gg-RE3" secondAttribute="trailing" constant="12" id="nyG-wP-6Bg"/>
+                                    <constraint firstAttribute="height" constant="80" id="rbU-Sa-9j0"/>
+                                    <constraint firstItem="eB0-YT-Ld7" firstAttribute="leading" secondItem="Lt3-8t-GUS" secondAttribute="leading" id="w2C-sb-Ue3"/>
+                                    <constraint firstAttribute="bottom" secondItem="eB0-YT-Ld7" secondAttribute="bottom" id="y8K-sB-B0c"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="sWW-D6-Ohy" customClass="KMDottedLineView" customModule="PDF_Master" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="328" height="80"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ZkD-G1-ufi">
+                                        <rect key="frame" x="20" y="16" width="48" height="48"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="48" id="OEz-Oc-Cfu"/>
+                                            <constraint firstAttribute="width" constant="48" id="tSy-XU-d6c"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="Yd6-Gu-GJW"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6VI-X2-0F4">
+                                        <rect key="frame" x="78" y="32" width="240" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="wph-cO-qrj">
+                                            <font key="font" metaFont="system"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                    <button verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="0sY-bd-bsz">
+                                        <rect key="frame" x="0.0" y="0.0" width="328" height="80"/>
+                                        <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="vZ0-SU-FIM">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="createPDFAction:" target="-2" id="9kk-Ac-RrI"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="0sY-bd-bsz" firstAttribute="top" secondItem="sWW-D6-Ohy" secondAttribute="top" id="0TE-FK-alr"/>
+                                    <constraint firstItem="ZkD-G1-ufi" firstAttribute="leading" secondItem="sWW-D6-Ohy" secondAttribute="leading" constant="20" id="5Ca-CA-YqH"/>
+                                    <constraint firstAttribute="trailing" secondItem="6VI-X2-0F4" secondAttribute="trailing" constant="12" id="BiY-n7-BXI"/>
+                                    <constraint firstItem="ZkD-G1-ufi" firstAttribute="centerY" secondItem="sWW-D6-Ohy" secondAttribute="centerY" id="JH7-st-J0e"/>
+                                    <constraint firstItem="6VI-X2-0F4" firstAttribute="leading" secondItem="ZkD-G1-ufi" secondAttribute="trailing" constant="12" id="MM9-TH-Z3i"/>
+                                    <constraint firstAttribute="height" constant="80" id="NUE-4N-0CP"/>
+                                    <constraint firstItem="0sY-bd-bsz" firstAttribute="leading" secondItem="sWW-D6-Ohy" secondAttribute="leading" id="QfC-vG-Be7"/>
+                                    <constraint firstAttribute="trailing" secondItem="0sY-bd-bsz" secondAttribute="trailing" id="Uuv-oN-sem"/>
+                                    <constraint firstAttribute="bottom" secondItem="0sY-bd-bsz" secondAttribute="bottom" id="YMZ-aA-P1j"/>
+                                    <constraint firstItem="6VI-X2-0F4" firstAttribute="centerY" secondItem="ZkD-G1-ufi" secondAttribute="centerY" id="kCa-nz-cJA"/>
+                                </constraints>
+                            </customView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="ymv-tl-S9B" firstAttribute="leading" secondItem="ITd-Xp-Gda" secondAttribute="leading" id="0pQ-QG-Bkp"/>
+                            <constraint firstAttribute="trailing" secondItem="sWW-D6-Ohy" secondAttribute="trailing" id="16k-gk-5gO"/>
+                            <constraint firstAttribute="trailing" secondItem="ijL-7x-C3M" secondAttribute="trailing" id="1Br-pP-mqt"/>
+                            <constraint firstItem="Lt3-8t-GUS" firstAttribute="leading" secondItem="ITd-Xp-Gda" secondAttribute="leading" id="Acx-mM-6Id"/>
+                            <constraint firstAttribute="trailing" secondItem="Lt3-8t-GUS" secondAttribute="trailing" id="Bs6-9V-Bva"/>
+                            <constraint firstItem="Lt3-8t-GUS" firstAttribute="top" secondItem="ijL-7x-C3M" secondAttribute="bottom" constant="12" id="CZV-j3-Dd3"/>
+                            <constraint firstItem="sWW-D6-Ohy" firstAttribute="top" secondItem="Lt3-8t-GUS" secondAttribute="bottom" constant="12" id="HAu-Rr-Jh6"/>
+                            <constraint firstItem="ijL-7x-C3M" firstAttribute="top" secondItem="ymv-tl-S9B" secondAttribute="bottom" constant="16" id="HG9-FX-xMS"/>
+                            <constraint firstItem="ijL-7x-C3M" firstAttribute="leading" secondItem="ITd-Xp-Gda" secondAttribute="leading" id="KZm-39-nw1"/>
+                            <constraint firstItem="sWW-D6-Ohy" firstAttribute="leading" secondItem="ITd-Xp-Gda" secondAttribute="leading" id="POY-aw-77z"/>
+                            <constraint firstAttribute="bottom" secondItem="sWW-D6-Ohy" secondAttribute="bottom" id="PcU-Ej-014"/>
+                            <constraint firstAttribute="trailing" secondItem="ymv-tl-S9B" secondAttribute="trailing" id="T7c-KN-RfV"/>
+                            <constraint firstItem="ymv-tl-S9B" firstAttribute="top" secondItem="ITd-Xp-Gda" secondAttribute="top" id="hoW-km-0Fa"/>
+                        </constraints>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="308" id="Gbw-1F-7Pn"/>
+                        <constraint firstAttribute="width" constant="328" id="Q9u-eS-ZxW"/>
+                    </constraints>
+                </box>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="0Nz-PR-SKo">
+                    <rect key="frame" x="32" y="40" width="446" height="308"/>
+                    <view key="contentView" id="Ccx-6r-SYL">
+                        <rect key="frame" x="0.0" y="0.0" width="446" height="308"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kwa-7o-t9g">
+                                <rect key="frame" x="-2" y="292" width="450" height="16"/>
+                                <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="5x9-0z-eD5">
+                                    <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="VFW-vA-QSU" customClass="KMDottedLineView" customModule="PDF_Master" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="446" height="264"/>
+                                <subviews>
+                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="PfB-2S-9kQ">
+                                        <rect key="frame" x="73" y="50" width="300" height="182"/>
+                                        <view key="contentView" id="8s4-Gn-uV5">
+                                            <rect key="frame" x="0.0" y="0.0" width="300" height="182"/>
+                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                            <subviews>
+                                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="G8R-Cd-sSC">
+                                                    <rect key="frame" x="102" y="86" width="96" height="96"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="96" id="Km8-qh-oqS"/>
+                                                        <constraint firstAttribute="height" constant="96" id="mGC-h2-oD3"/>
+                                                    </constraints>
+                                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="C4o-sS-qvs"/>
+                                                </imageView>
+                                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="mEy-Af-9bc" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                                    <rect key="frame" x="0.0" y="30" width="300" height="48"/>
+                                                    <view key="contentView" id="luV-jz-hgR">
+                                                        <rect key="frame" x="0.0" y="0.0" width="300" height="48"/>
+                                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                        <subviews>
+                                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Qrx-RS-sSa">
+                                                                <rect key="frame" x="120" y="0.0" width="61" height="48"/>
+                                                                <subviews>
+                                                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="iFo-5S-2e6">
+                                                                        <rect key="frame" x="0.0" y="16" width="16" height="16"/>
+                                                                        <constraints>
+                                                                            <constraint firstAttribute="width" constant="16" id="cx2-CX-PmH"/>
+                                                                            <constraint firstAttribute="height" constant="16" id="zVt-wS-uIX"/>
+                                                                        </constraints>
+                                                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="qof-kY-hZ2"/>
+                                                                    </imageView>
+                                                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="I4g-Mc-xZP">
+                                                                        <rect key="frame" x="26" y="16" width="37" height="16"/>
+                                                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="XKi-oh-1Z1">
+                                                                            <font key="font" metaFont="system"/>
+                                                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                                        </textFieldCell>
+                                                                    </textField>
+                                                                </subviews>
+                                                                <constraints>
+                                                                    <constraint firstItem="iFo-5S-2e6" firstAttribute="centerY" secondItem="Qrx-RS-sSa" secondAttribute="centerY" id="2z9-lh-VrY"/>
+                                                                    <constraint firstItem="I4g-Mc-xZP" firstAttribute="centerY" secondItem="iFo-5S-2e6" secondAttribute="centerY" id="QLh-JS-ijg"/>
+                                                                    <constraint firstItem="iFo-5S-2e6" firstAttribute="leading" secondItem="Qrx-RS-sSa" secondAttribute="leading" id="gP7-Q5-sIj"/>
+                                                                    <constraint firstAttribute="trailing" secondItem="I4g-Mc-xZP" secondAttribute="trailing" id="qCP-Lf-xOa"/>
+                                                                    <constraint firstItem="I4g-Mc-xZP" firstAttribute="leading" secondItem="iFo-5S-2e6" secondAttribute="trailing" constant="12" id="t5n-fB-rZ5"/>
+                                                                </constraints>
+                                                            </customView>
+                                                        </subviews>
+                                                        <constraints>
+                                                            <constraint firstAttribute="bottom" secondItem="Qrx-RS-sSa" secondAttribute="bottom" id="5UC-QA-YUi"/>
+                                                            <constraint firstItem="Qrx-RS-sSa" firstAttribute="top" secondItem="luV-jz-hgR" secondAttribute="top" id="FqC-Dj-qmG"/>
+                                                            <constraint firstItem="Qrx-RS-sSa" firstAttribute="centerX" secondItem="luV-jz-hgR" secondAttribute="centerX" id="iym-4C-53Z"/>
+                                                        </constraints>
+                                                    </view>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="48" id="wUq-Yy-puD"/>
+                                                    </constraints>
+                                                </box>
+                                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Q7o-W4-U5i">
+                                                    <rect key="frame" x="-2" y="6" width="304" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Label" id="bUi-8C-1tk">
+                                                        <font key="font" metaFont="system"/>
+                                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                    </textFieldCell>
+                                                </textField>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="mEy-Af-9bc" firstAttribute="leading" secondItem="8s4-Gn-uV5" secondAttribute="leading" id="03b-RK-Gcb"/>
+                                                <constraint firstItem="Q7o-W4-U5i" firstAttribute="top" secondItem="mEy-Af-9bc" secondAttribute="bottom" constant="8" id="7jE-hi-laD"/>
+                                                <constraint firstAttribute="trailing" secondItem="mEy-Af-9bc" secondAttribute="trailing" id="BeV-W1-8IZ"/>
+                                                <constraint firstItem="Q7o-W4-U5i" firstAttribute="leading" secondItem="8s4-Gn-uV5" secondAttribute="leading" id="KNR-vj-lcv"/>
+                                                <constraint firstAttribute="trailing" secondItem="Q7o-W4-U5i" secondAttribute="trailing" id="Y9m-BZ-94Y"/>
+                                                <constraint firstItem="G8R-Cd-sSC" firstAttribute="centerX" secondItem="8s4-Gn-uV5" secondAttribute="centerX" id="fAt-Bg-rUy"/>
+                                                <constraint firstItem="G8R-Cd-sSC" firstAttribute="top" secondItem="8s4-Gn-uV5" secondAttribute="top" id="fUg-cL-oCn"/>
+                                                <constraint firstItem="mEy-Af-9bc" firstAttribute="top" secondItem="G8R-Cd-sSC" secondAttribute="bottom" constant="8" id="pl7-aB-lW1"/>
+                                            </constraints>
+                                        </view>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="182" id="WOq-J5-YdP"/>
+                                            <constraint firstAttribute="width" constant="300" id="g2w-9u-6Lz"/>
+                                        </constraints>
+                                    </box>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="PfB-2S-9kQ" firstAttribute="top" secondItem="VFW-vA-QSU" secondAttribute="top" constant="32" id="2VJ-9o-obs"/>
+                                    <constraint firstAttribute="bottom" secondItem="PfB-2S-9kQ" secondAttribute="bottom" constant="50" id="g46-lD-3WT"/>
+                                    <constraint firstItem="PfB-2S-9kQ" firstAttribute="centerX" secondItem="VFW-vA-QSU" secondAttribute="centerX" id="hMw-ON-9Mn"/>
+                                </constraints>
+                            </customView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="VFW-vA-QSU" firstAttribute="top" secondItem="Ccx-6r-SYL" secondAttribute="top" constant="44" id="5L9-vL-5r8"/>
+                            <constraint firstItem="Kwa-7o-t9g" firstAttribute="top" secondItem="Ccx-6r-SYL" secondAttribute="top" id="JzD-eU-49A"/>
+                            <constraint firstAttribute="bottom" secondItem="VFW-vA-QSU" secondAttribute="bottom" id="KBS-Fs-zpG"/>
+                            <constraint firstAttribute="trailing" secondItem="VFW-vA-QSU" secondAttribute="trailing" id="PWy-a6-GDa"/>
+                            <constraint firstItem="Kwa-7o-t9g" firstAttribute="leading" secondItem="Ccx-6r-SYL" secondAttribute="leading" id="Ub5-b3-ukL"/>
+                            <constraint firstItem="VFW-vA-QSU" firstAttribute="leading" secondItem="Ccx-6r-SYL" secondAttribute="leading" id="aPv-hJ-Zwr"/>
+                            <constraint firstAttribute="trailing" secondItem="Kwa-7o-t9g" secondAttribute="trailing" id="cyk-wk-nOk"/>
+                        </constraints>
+                    </view>
+                </box>
+            </subviews>
+            <constraints>
+                <constraint firstItem="0Nz-PR-SKo" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="1yT-Xh-eRe"/>
+                <constraint firstItem="rkU-6X-4PB" firstAttribute="leading" secondItem="0Nz-PR-SKo" secondAttribute="trailing" constant="20" id="9hS-v6-iJ6"/>
+                <constraint firstAttribute="trailing" secondItem="rkU-6X-4PB" secondAttribute="trailing" constant="32" id="IdV-ca-59L"/>
+                <constraint firstAttribute="bottom" secondItem="rkU-6X-4PB" secondAttribute="bottom" constant="40" id="JAT-NW-dZI"/>
+                <constraint firstItem="rkU-6X-4PB" firstAttribute="top" secondItem="0Nz-PR-SKo" secondAttribute="top" id="MeE-TX-R0j"/>
+                <constraint firstItem="rkU-6X-4PB" firstAttribute="bottom" secondItem="0Nz-PR-SKo" secondAttribute="bottom" id="S51-tD-RFN"/>
+                <constraint firstItem="rkU-6X-4PB" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="40" id="XF4-iR-ChB"/>
+            </constraints>
+            <point key="canvasLocation" x="306" y="226"/>
+        </customView>
+    </objects>
+</document>

+ 1 - 2
PDF Office/PDF Master/Class/Home/ViewController/KMCloudEmptyCollectionViewItem.xib

@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <deployment identifier="macosx"/>
         <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMCloudEmptyCollectionViewItem" customModule="PDF_Office" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCloudEmptyCollectionViewItem" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="cloudImageView" destination="ir1-0I-yOK" id="oAD-Go-xDI"/>
                 <outlet property="cloudLabel" destination="efb-UO-oeN" id="ttW-Cb-ehx"/>

+ 191 - 4
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift

@@ -17,6 +17,13 @@ import KMAdvertisement
     case CloudDocuments
 }
 
+@objc enum KMAIHomeToolState : Int {
+    case Home = 0
+    case AITranslation
+    case AIRewriting
+    case AIErrorCorrection
+}
+
 @objcMembers class KMHomeViewController: NSViewController {
 
     @IBOutlet weak var leftBox: NSBox!
@@ -66,6 +73,23 @@ import KMAdvertisement
     
     @IBOutlet weak var dragView: KMHomeDragView!
     
+    // AI 临时UI
+    @IBOutlet weak var aiHomeBox: KMBox!
+    @IBOutlet weak var aiHomeImageView: NSImageView!
+    @IBOutlet weak var aiHomeLabel: NSTextField!
+    @IBOutlet weak var aiTranslationBox: KMBox!
+    @IBOutlet weak var aiTranslationImageView: NSImageView!
+    @IBOutlet weak var aiTranslationLabel: NSTextField!
+    @IBOutlet weak var aiRewritingBox: KMBox!
+    @IBOutlet weak var aiRewritingImageView: NSImageView!
+    @IBOutlet weak var aiRewritingLabel: NSTextField!
+    @IBOutlet weak var aiErrorCorrectionBox: KMBox!
+    @IBOutlet weak var aiErrorCorrectionImageView: NSImageView!
+    @IBOutlet weak var aiErrorCorrectionLabel: NSTextField!
+    @IBOutlet var aiOpenPDFFilesViewController: KMAIOpenPDFFilesVC!
+    
+    var aiHomeState: KMAIHomeToolState = .Home
+    
     let ScrollerViewWidget: CGFloat = 15.0
     
     var homeWindowController : MainWindowController!
@@ -132,11 +156,12 @@ import KMAdvertisement
             self.otherMouseDown(with: aEvent)
             return aEvent
         }
-        self.initNetworkingData()
-        self.initLocalization()
-        self.initializeUI()
+//        self.initNetworkingData()
+//        self.initLocalization()
+//        self.initializeUI()
+        self.initializeUI_DMG()
         
-        refreshUI()
+//        refreshUI()
         
         NotificationCenter.default.addObserver(self, selector: #selector(homeFileRectChange(_:)), name: Notification.Name("KMHomeFileRectChange"), object: nil)
     }
@@ -316,6 +341,117 @@ import KMAdvertisement
         pdfOthersButtonVC.stringValue = NSLocalizedString("Others", comment: "")
     }
     
+    // MARK: Action
+    func initializeUI_DMG() -> Void {
+        rightTopBox.fillColor = .white
+        rightBottomBox.fillColor = .white
+        rightFullBox.fillColor = .white
+
+        self.aiHomeBox.fillColor = .clear
+        self.aiHomeBox.cornerRadius = 8.0
+        self.aiHomeImageView.image = NSImage(named: "icon_home")
+        self.aiHomeLabel.stringValue = NSLocalizedString("Home", comment: "")
+        self.aiHomeLabel.textColor = NSColor(hex: "#252629")
+        self.aiHomeLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiHomeBox.moveCallback = { [unowned self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
+            if aiHomeState != .Home {
+                if mouseEntered {
+                    self.aiHomeBox.fillColor = NSColor(hex: "#EDEEF0")
+                } else {
+                    self.aiHomeBox.fillColor = .clear
+                }
+            }
+        }
+        self.aiHomeBox.downCallback = { [unowned self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
+            if aiHomeState != .Home {
+                if downEntered {
+                    self.aiHomeState = .Home
+                    
+                    self.refreshAIUI()
+                }
+            }
+        }
+
+        self.aiTranslationBox.fillColor = .clear
+        self.aiTranslationBox.cornerRadius = 8.0
+        self.aiTranslationImageView.image = NSImage(named: "ic_function_other")
+        self.aiTranslationLabel.stringValue = NSLocalizedString("AI Translation", comment: "")
+        self.aiTranslationLabel.textColor = NSColor(hex: "#252629")
+        self.aiTranslationLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiTranslationBox.moveCallback = { [unowned self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
+            if aiHomeState != .AITranslation {
+                if mouseEntered {
+                    self.aiTranslationBox.fillColor = NSColor(hex: "#EDEEF0")
+                } else {
+                    self.aiTranslationBox.fillColor = .clear
+                }
+            }
+        }
+        self.aiTranslationBox.downCallback = { [unowned self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
+            if aiHomeState != .AITranslation {
+                if downEntered {
+                    self.aiHomeState = .AITranslation
+                    
+                    self.refreshAIUI()
+                }
+            }
+        }
+
+        self.aiRewritingBox.fillColor = .clear
+        self.aiRewritingBox.cornerRadius = 8.0
+        self.aiRewritingImageView.image = NSImage(named: "ic_ai_Rewriting")
+        self.aiRewritingLabel.stringValue = NSLocalizedString("AI Rewriting", comment: "")
+        self.aiRewritingLabel.textColor = NSColor(hex: "#252629")
+        self.aiRewritingLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiRewritingBox.moveCallback = { [unowned self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
+            if aiHomeState != .AIRewriting {
+                if mouseEntered {
+                    self.aiRewritingBox.fillColor = NSColor(hex: "#EDEEF0")
+                } else {
+                    self.aiRewritingBox.fillColor = .clear
+                }
+            }
+        }
+        self.aiRewritingBox.downCallback = { [unowned self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
+            if aiHomeState != .AIRewriting {
+                if downEntered {
+                    self.aiHomeState = .AIRewriting
+                    
+                    self.refreshAIUI()
+                }
+            }
+        }
+
+        self.aiErrorCorrectionBox.fillColor = .clear
+        self.aiErrorCorrectionBox.cornerRadius = 8.0
+        self.aiErrorCorrectionImageView.image = NSImage(named: "ic_ai_ErrorCorrection")
+        self.aiErrorCorrectionLabel.stringValue = NSLocalizedString("AI Error Correction", comment: "")
+        self.aiErrorCorrectionLabel.textColor = NSColor(hex: "#252629")
+        self.aiErrorCorrectionLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiErrorCorrectionBox.moveCallback = { [unowned self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
+            if aiHomeState != .AIErrorCorrection {
+                if mouseEntered {
+                    self.aiErrorCorrectionBox.fillColor = NSColor(hex: "#EDEEF0")
+                } else {
+                    self.aiErrorCorrectionBox.fillColor = .clear
+                }
+            }
+        }
+        self.aiErrorCorrectionBox.downCallback = { [unowned self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
+            if aiHomeState != .AIErrorCorrection {
+                if downEntered {
+                    self.aiHomeState = .AIErrorCorrection
+                    
+                    self.refreshAIUI()
+                }
+            }
+        }
+        
+        self.refreshAIUI()
+        
+        dragView.delete = self
+    }
+    
     // MARK: Action
     
     @IBAction func productPromotionButtonAction(_ sender: NSButton) {
@@ -363,6 +499,57 @@ import KMAdvertisement
         cloudDocumentsButtonVC.updateUI()
     }
     
+    func refreshAIUI() -> Void {
+        self.aiHomeBox.fillColor = .clear
+        self.aiHomeLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiTranslationBox.fillColor = .clear
+        self.aiTranslationLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiRewritingBox.fillColor = .clear
+        self.aiRewritingLabel.font = NSFont.SFProTextRegular(16.0)
+        self.aiErrorCorrectionBox.fillColor = .clear
+        self.aiErrorCorrectionLabel.font = NSFont.SFProTextRegular(16.0)
+
+        rightFullBox.isHidden = true
+        rightTopBox.isHidden = true
+        rightBottomBox.isHidden = true
+
+        switch self.aiHomeState {
+        case .Home:
+            self.aiHomeBox.fillColor = NSColor(hex: "#1770F4", alpha: 0.1)
+            self.aiHomeLabel.font = NSFont.SFProTextSemibold(16.0)
+            
+            self.rightTopBox.isHidden = false
+            self.rightBottomBox.isHidden = false
+            self.rightTopBox.contentView = self.aiOpenPDFFilesViewController.view
+            self.rightBottomBox.contentView = self.historyFileViewController.view
+            self.rightFullBox.contentView = nil
+            
+            self.rightTopBoxHeightConstraint.constant = 388.0
+            
+            break
+        case .AITranslation:
+            self.aiTranslationBox.fillColor = NSColor(hex: "#1770F4", alpha: 0.1)
+            self.aiTranslationLabel.textColor = NSColor(hex: "#252629")
+            self.aiTranslationLabel.font = NSFont.SFProTextSemibold(16.0)
+
+            break
+        case .AIRewriting:
+            self.aiRewritingBox.fillColor = NSColor(hex: "#1770F4", alpha: 0.1)
+            self.aiRewritingLabel.textColor = NSColor(hex: "#252629")
+            self.aiRewritingLabel.font = NSFont.SFProTextSemibold(16.0)
+
+            break
+        case .AIErrorCorrection:
+            self.aiErrorCorrectionBox.fillColor = NSColor(hex: "#1770F4", alpha: 0.1)
+            self.aiErrorCorrectionLabel.textColor = NSColor(hex: "#252629")
+            self.aiErrorCorrectionLabel.font = NSFont.SFProTextSemibold(16.0)
+
+            break
+        default:
+            break
+        }
+    }
+    
     func refreshProductActiveSpacing() -> Void {
         let height = self.view.frame.height - 32.0 - openPDFBoxHeight.constant - 16.0 - createPDFBoxHeight.constant - 24.0 - pdfSeriesBoxHeight.constant - pdfProSeriesBoxHeightConstraint.constant - 8 - othersBoxHeightConstraint.constant - pdfOthersBoxHeightConstraint.constant - 242 - 30
 //        print("height == %f", height)

+ 180 - 3
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.xib

@@ -8,6 +8,19 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMHomeViewController" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="activitiesBox" destination="MFa-T5-0wb" id="hkR-Nv-9aL"/>
+                <outlet property="aiErrorCorrectionBox" destination="gfM-nc-QPH" id="Hmh-sg-oXV"/>
+                <outlet property="aiErrorCorrectionImageView" destination="tWj-m1-RHC" id="Vih-4K-hKQ"/>
+                <outlet property="aiErrorCorrectionLabel" destination="aGT-3k-XaH" id="v9b-2n-Uue"/>
+                <outlet property="aiHomeBox" destination="fGu-QI-qsr" id="hrL-a0-avA"/>
+                <outlet property="aiHomeImageView" destination="uq4-KF-k9k" id="RRL-4F-uGi"/>
+                <outlet property="aiHomeLabel" destination="ZAT-Co-tte" id="0Kz-Po-Uct"/>
+                <outlet property="aiOpenPDFFilesViewController" destination="FOs-X3-zsa" id="WsQ-cr-AvC"/>
+                <outlet property="aiRewritingBox" destination="0aC-uQ-5lW" id="iLK-iS-H4H"/>
+                <outlet property="aiRewritingImageView" destination="7L8-5k-lE1" id="B5k-0W-Dgp"/>
+                <outlet property="aiRewritingLabel" destination="Fhh-MS-1UA" id="ihQ-rh-yLB"/>
+                <outlet property="aiTranslationBox" destination="aEd-2n-FAH" id="QFg-bu-h0w"/>
+                <outlet property="aiTranslationImageView" destination="R0l-VG-P9c" id="bS5-ho-ymi"/>
+                <outlet property="aiTranslationLabel" destination="p5N-bY-CVu" id="1QT-kv-3v4"/>
                 <outlet property="cloudDocumentsBox" destination="ntJ-b8-qxk" id="hNr-Vi-fYQ"/>
                 <outlet property="cloudDocumentsBoxHeight" destination="aCh-WL-S1o" id="Ly4-LY-8YM"/>
                 <outlet property="cloudDocumentsViewController" destination="icM-sk-XE7" id="b9t-ez-lLE"/>
@@ -84,7 +97,7 @@ Gw
                                 <rect key="frame" x="0.0" y="0.0" width="270" height="820"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="IBc-Xn-ACX">
+                                    <box hidden="YES" boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="IBc-Xn-ACX">
                                         <rect key="frame" x="32" y="740" width="206" height="48"/>
                                         <view key="contentView" id="FXX-vK-R1B">
                                             <rect key="frame" x="0.0" y="0.0" width="206" height="48"/>
@@ -95,7 +108,7 @@ Gw
                                         </constraints>
                                         <color key="fillColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     </box>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="OtM-0x-ayU">
+                                    <box hidden="YES" boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="OtM-0x-ayU">
                                         <rect key="frame" x="32" y="676" width="206" height="48"/>
                                         <view key="contentView" id="yiR-qy-ftP">
                                             <rect key="frame" x="0.0" y="0.0" width="206" height="48"/>
@@ -105,7 +118,7 @@ Gw
                                             <constraint firstAttribute="height" constant="48" id="dGW-CI-1rZ"/>
                                         </constraints>
                                     </box>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Dbe-pI-QSy">
+                                    <box hidden="YES" boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Dbe-pI-QSy">
                                         <rect key="frame" x="208" y="684" width="26" height="32"/>
                                         <view key="contentView" id="BDS-se-7ty">
                                             <rect key="frame" x="0.0" y="0.0" width="26" height="32"/>
@@ -314,14 +327,175 @@ Gw
                                         <color key="borderColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                         <color key="fillColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                     </box>
+                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="3io-Hj-Kiz">
+                                        <rect key="frame" x="0.0" y="0.0" width="270" height="820"/>
+                                        <subviews>
+                                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="fGu-QI-qsr" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                                <rect key="frame" x="16" y="732" width="238" height="64"/>
+                                                <view key="contentView" id="XIH-la-IM7">
+                                                    <rect key="frame" x="0.0" y="0.0" width="238" height="64"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="uq4-KF-k9k">
+                                                            <rect key="frame" x="16" y="18" width="28" height="28"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="28" id="JWy-0z-k3e"/>
+                                                                <constraint firstAttribute="height" constant="28" id="T4M-96-ah8"/>
+                                                            </constraints>
+                                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="edc-z8-gCQ"/>
+                                                        </imageView>
+                                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ZAT-Co-tte">
+                                                            <rect key="frame" x="54" y="24" width="186" height="16"/>
+                                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="XuC-gZ-0YQ">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="ZAT-Co-tte" firstAttribute="leading" secondItem="uq4-KF-k9k" secondAttribute="trailing" constant="12" id="PU4-jx-Nu0"/>
+                                                        <constraint firstAttribute="trailing" secondItem="ZAT-Co-tte" secondAttribute="trailing" id="VL4-QQ-6cm"/>
+                                                        <constraint firstItem="uq4-KF-k9k" firstAttribute="leading" secondItem="XIH-la-IM7" secondAttribute="leading" constant="16" id="VUv-xz-TFO"/>
+                                                        <constraint firstItem="ZAT-Co-tte" firstAttribute="centerY" secondItem="uq4-KF-k9k" secondAttribute="centerY" id="Xsd-W2-vdd"/>
+                                                    </constraints>
+                                                </view>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="64" id="TKk-Rp-VWm"/>
+                                                    <constraint firstItem="uq4-KF-k9k" firstAttribute="centerY" secondItem="fGu-QI-qsr" secondAttribute="centerY" id="o4J-SF-n2k"/>
+                                                </constraints>
+                                            </box>
+                                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="aEd-2n-FAH" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                                <rect key="frame" x="16" y="660" width="238" height="64"/>
+                                                <view key="contentView" id="lfb-vJ-XnI">
+                                                    <rect key="frame" x="0.0" y="0.0" width="238" height="64"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="R0l-VG-P9c">
+                                                            <rect key="frame" x="16" y="18" width="28" height="28"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="28" id="70S-mf-0VQ"/>
+                                                                <constraint firstAttribute="width" constant="28" id="WF1-br-7fT"/>
+                                                            </constraints>
+                                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="cON-bS-15a"/>
+                                                        </imageView>
+                                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="p5N-bY-CVu">
+                                                            <rect key="frame" x="54" y="24" width="186" height="16"/>
+                                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="RZo-Aj-B8y">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstAttribute="trailing" secondItem="p5N-bY-CVu" secondAttribute="trailing" id="01b-Tg-RQY"/>
+                                                        <constraint firstItem="p5N-bY-CVu" firstAttribute="centerY" secondItem="R0l-VG-P9c" secondAttribute="centerY" id="8r5-0f-Ipy"/>
+                                                        <constraint firstItem="R0l-VG-P9c" firstAttribute="leading" secondItem="lfb-vJ-XnI" secondAttribute="leading" constant="16" id="Ll3-ww-Ua9"/>
+                                                        <constraint firstItem="p5N-bY-CVu" firstAttribute="leading" secondItem="R0l-VG-P9c" secondAttribute="trailing" constant="12" id="sLE-Da-onW"/>
+                                                    </constraints>
+                                                </view>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="64" id="A6a-8U-W3c"/>
+                                                    <constraint firstItem="R0l-VG-P9c" firstAttribute="centerY" secondItem="aEd-2n-FAH" secondAttribute="centerY" id="x6x-n7-TZb"/>
+                                                </constraints>
+                                            </box>
+                                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="0aC-uQ-5lW" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                                <rect key="frame" x="16" y="588" width="238" height="64"/>
+                                                <view key="contentView" id="R1S-LV-EMO">
+                                                    <rect key="frame" x="0.0" y="0.0" width="238" height="64"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="7L8-5k-lE1">
+                                                            <rect key="frame" x="16" y="18" width="28" height="28"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="28" id="6GM-P7-ZA4"/>
+                                                                <constraint firstAttribute="width" constant="28" id="9aH-Jk-9re"/>
+                                                            </constraints>
+                                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="oLu-02-hg4"/>
+                                                        </imageView>
+                                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Fhh-MS-1UA">
+                                                            <rect key="frame" x="54" y="24" width="186" height="16"/>
+                                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="hZb-7Q-757">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="Fhh-MS-1UA" firstAttribute="centerY" secondItem="7L8-5k-lE1" secondAttribute="centerY" id="4EB-DV-CLt"/>
+                                                        <constraint firstItem="7L8-5k-lE1" firstAttribute="leading" secondItem="R1S-LV-EMO" secondAttribute="leading" constant="16" id="904-jB-LVB"/>
+                                                        <constraint firstItem="Fhh-MS-1UA" firstAttribute="leading" secondItem="7L8-5k-lE1" secondAttribute="trailing" constant="12" id="gGb-cT-3z2"/>
+                                                        <constraint firstAttribute="trailing" secondItem="Fhh-MS-1UA" secondAttribute="trailing" id="xyN-yE-rkf"/>
+                                                    </constraints>
+                                                </view>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="64" id="L2u-Qp-yTn"/>
+                                                    <constraint firstItem="7L8-5k-lE1" firstAttribute="centerY" secondItem="0aC-uQ-5lW" secondAttribute="centerY" id="Pz8-Nb-wy8"/>
+                                                </constraints>
+                                            </box>
+                                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="gfM-nc-QPH" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                                <rect key="frame" x="16" y="516" width="238" height="64"/>
+                                                <view key="contentView" id="hsW-0F-KnS">
+                                                    <rect key="frame" x="0.0" y="0.0" width="238" height="64"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="tWj-m1-RHC">
+                                                            <rect key="frame" x="16" y="18" width="28" height="28"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="28" id="TDL-Hm-ohv"/>
+                                                                <constraint firstAttribute="width" constant="28" id="Zuv-Vx-2b6"/>
+                                                            </constraints>
+                                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="RX4-be-ygC"/>
+                                                        </imageView>
+                                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aGT-3k-XaH">
+                                                            <rect key="frame" x="54" y="24" width="186" height="16"/>
+                                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="A36-Eb-2cb">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="aGT-3k-XaH" firstAttribute="centerY" secondItem="tWj-m1-RHC" secondAttribute="centerY" id="3uW-ug-wnS"/>
+                                                        <constraint firstItem="aGT-3k-XaH" firstAttribute="leading" secondItem="tWj-m1-RHC" secondAttribute="trailing" constant="12" id="57F-8b-R4d"/>
+                                                        <constraint firstItem="tWj-m1-RHC" firstAttribute="leading" secondItem="hsW-0F-KnS" secondAttribute="leading" constant="16" id="bu6-f5-Lei"/>
+                                                        <constraint firstAttribute="trailing" secondItem="aGT-3k-XaH" secondAttribute="trailing" id="s4G-Vg-fsl"/>
+                                                    </constraints>
+                                                </view>
+                                                <constraints>
+                                                    <constraint firstItem="tWj-m1-RHC" firstAttribute="centerY" secondItem="gfM-nc-QPH" secondAttribute="centerY" id="CtM-0V-CLq"/>
+                                                    <constraint firstAttribute="height" constant="64" id="Wxl-mi-6dg"/>
+                                                </constraints>
+                                            </box>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="0aC-uQ-5lW" firstAttribute="trailing" secondItem="aEd-2n-FAH" secondAttribute="trailing" id="1em-N9-EZt"/>
+                                            <constraint firstItem="0aC-uQ-5lW" firstAttribute="top" secondItem="aEd-2n-FAH" secondAttribute="bottom" constant="8" id="2Wf-YF-47K"/>
+                                            <constraint firstItem="fGu-QI-qsr" firstAttribute="leading" secondItem="3io-Hj-Kiz" secondAttribute="leading" constant="16" id="Iis-JZ-KM7"/>
+                                            <constraint firstItem="aEd-2n-FAH" firstAttribute="leading" secondItem="fGu-QI-qsr" secondAttribute="leading" id="JIW-4g-Eee"/>
+                                            <constraint firstItem="aEd-2n-FAH" firstAttribute="trailing" secondItem="fGu-QI-qsr" secondAttribute="trailing" id="Jyy-2X-OR9"/>
+                                            <constraint firstItem="aEd-2n-FAH" firstAttribute="top" secondItem="fGu-QI-qsr" secondAttribute="bottom" constant="8" id="LA9-Lk-hoG"/>
+                                            <constraint firstItem="fGu-QI-qsr" firstAttribute="top" secondItem="3io-Hj-Kiz" secondAttribute="top" constant="24" id="XKS-E9-44d"/>
+                                            <constraint firstItem="0aC-uQ-5lW" firstAttribute="leading" secondItem="aEd-2n-FAH" secondAttribute="leading" id="bhw-hX-MVg"/>
+                                            <constraint firstAttribute="trailing" secondItem="fGu-QI-qsr" secondAttribute="trailing" constant="16" id="bvC-Lu-ALO"/>
+                                            <constraint firstItem="gfM-nc-QPH" firstAttribute="trailing" secondItem="0aC-uQ-5lW" secondAttribute="trailing" id="fzO-yw-MBw"/>
+                                            <constraint firstItem="gfM-nc-QPH" firstAttribute="leading" secondItem="0aC-uQ-5lW" secondAttribute="leading" id="krm-LG-O6K"/>
+                                            <constraint firstItem="gfM-nc-QPH" firstAttribute="top" secondItem="0aC-uQ-5lW" secondAttribute="bottom" constant="8" id="m9w-w0-Rb8"/>
+                                        </constraints>
+                                    </customView>
                                 </subviews>
                                 <constraints>
                                     <constraint firstItem="20T-xp-Q2e" firstAttribute="top" secondItem="UKl-9H-uAO" secondAttribute="bottom" id="6Ty-9p-ozz"/>
+                                    <constraint firstAttribute="bottom" secondItem="3io-Hj-Kiz" secondAttribute="bottom" id="8hH-Nz-14P"/>
                                     <constraint firstItem="ntJ-b8-qxk" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="16" id="9G7-II-reM"/>
                                     <constraint firstAttribute="trailing" secondItem="IBc-Xn-ACX" secondAttribute="trailing" constant="32" id="9bt-6N-Fpw"/>
                                     <constraint firstAttribute="trailing" secondItem="20T-xp-Q2e" secondAttribute="trailing" constant="16" id="9h5-eC-BcV"/>
                                     <constraint firstAttribute="bottom" secondItem="TRt-mD-49a" secondAttribute="bottom" id="LHh-fM-nsg"/>
                                     <constraint firstItem="IBc-Xn-ACX" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" constant="32" id="OT0-pO-LgG"/>
+                                    <constraint firstItem="3io-Hj-Kiz" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" id="OUk-vQ-edJ"/>
                                     <constraint firstItem="IBc-Xn-ACX" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="32" id="Pct-00-aes"/>
                                     <constraint firstItem="Dbe-pI-QSy" firstAttribute="centerY" secondItem="OtM-0x-ayU" secondAttribute="centerY" id="Prm-NR-YvO"/>
                                     <constraint firstItem="deA-td-u53" firstAttribute="top" secondItem="20T-xp-Q2e" secondAttribute="bottom" id="QfX-k5-vsv"/>
@@ -330,11 +504,13 @@ Gw
                                     <constraint firstItem="TRt-mD-49a" firstAttribute="top" secondItem="deA-td-u53" secondAttribute="bottom" constant="24" id="dB5-BE-n63"/>
                                     <constraint firstItem="OtM-0x-ayU" firstAttribute="top" secondItem="IBc-Xn-ACX" secondAttribute="bottom" constant="16" id="dJR-pr-FoO"/>
                                     <constraint firstAttribute="trailing" secondItem="ntJ-b8-qxk" secondAttribute="trailing" constant="16" id="e8Q-or-Xvd"/>
+                                    <constraint firstItem="3io-Hj-Kiz" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" id="eTW-ob-qK1"/>
                                     <constraint firstItem="20T-xp-Q2e" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="16" id="gtH-3g-pwb"/>
                                     <constraint firstItem="deA-td-u53" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="16" id="hLP-Mo-nJv"/>
                                     <constraint firstItem="OtM-0x-ayU" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="32" id="iC5-mp-yL7"/>
                                     <constraint firstItem="TRt-mD-49a" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" id="iq0-o7-PiX"/>
                                     <constraint firstAttribute="trailing" secondItem="TRt-mD-49a" secondAttribute="trailing" id="j9O-4p-xXv"/>
+                                    <constraint firstAttribute="trailing" secondItem="3io-Hj-Kiz" secondAttribute="trailing" id="kZa-Sb-BLN"/>
                                     <constraint firstItem="UKl-9H-uAO" firstAttribute="top" secondItem="OtM-0x-ayU" secondAttribute="bottom" constant="-108" id="o8v-Wg-KIZ"/>
                                     <constraint firstAttribute="trailing" secondItem="deA-td-u53" secondAttribute="trailing" constant="16" id="qjB-C0-vh0"/>
                                     <constraint firstAttribute="trailing" secondItem="OtM-0x-ayU" secondAttribute="trailing" constant="32" id="rZt-Tb-kjn"/>
@@ -483,6 +659,7 @@ Gw
         <customObject id="UcW-Sh-zFW" customClass="KMHomeHistoryFileViewController" customModule="PDF_Master" customModuleProvider="target"/>
         <customObject id="cEr-ez-OtI" customClass="KMPDFToolsViewController" customModule="PDF_Master" customModuleProvider="target"/>
         <customObject id="icM-sk-XE7" customClass="KMCloudDocumentsViewController" customModule="PDF_Master" customModuleProvider="target"/>
+        <customObject id="FOs-X3-zsa" customClass="KMAIOpenPDFFilesVC" customModule="PDF_Master" customModuleProvider="target"/>
     </objects>
     <resources>
         <image name="NSTouchBarGoForwardTemplate" width="12" height="17"/>

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

@@ -3816,3 +3816,6 @@
 "Incorrect Password" = "Incorrect Password";
 "This is a secured document. Editing is not permitted." = "This is a secured document. Editing is not permitted.";
 
+"AI Translation" = "AI Translation";
+"AI Rewriting" = "AI Rewriting";
+"AI Error Correction" = "AI Error Correction";