Просмотр исходного кода

【标记密文】KMPDFRedactViewController新增

tangchao 1 год назад
Родитель
Сommit
9b8fce13da

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

@@ -2723,6 +2723,12 @@
 		BB3AD6FA29935483004FC1AE /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = BB3AD6F729935483004FC1AE /* Reachability.m */; };
 		BB3AD6FB29935483004FC1AE /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = BB3AD6F729935483004FC1AE /* Reachability.m */; };
 		BB3BA9082A13684A00623C08 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BBFBE6C128DD7B98008B2335 /* Assets.xcassets */; };
+		BB3D970A2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3D97092B2FEAC8007094C8 /* KMPDFRedactViewController.swift */; };
+		BB3D970B2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3D97092B2FEAC8007094C8 /* KMPDFRedactViewController.swift */; };
+		BB3D970C2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3D97092B2FEAC8007094C8 /* KMPDFRedactViewController.swift */; };
+		BB3D970E2B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3D970D2B2FEAF7007094C8 /* KMPDFRedactViewController.xib */; };
+		BB3D970F2B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3D970D2B2FEAF7007094C8 /* KMPDFRedactViewController.xib */; };
+		BB3D97102B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3D970D2B2FEAF7007094C8 /* KMPDFRedactViewController.xib */; };
 		BB3EAEAD293E3D6000D92407 /* KMConvertBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3EAEAB293E3D6000D92407 /* KMConvertBaseWindowController.swift */; };
 		BB3EAEAE293E3D6000D92407 /* KMConvertBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3EAEAB293E3D6000D92407 /* KMConvertBaseWindowController.swift */; };
 		BB3EAEAF293E3D6000D92407 /* KMConvertBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3EAEAB293E3D6000D92407 /* KMConvertBaseWindowController.swift */; };
@@ -5299,6 +5305,8 @@
 		BB3AAB982987BEA900992A5A /* KMWatermarkPDFView_OC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMWatermarkPDFView_OC.h; sourceTree = "<group>"; };
 		BB3AD6F729935483004FC1AE /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
 		BB3AD6F829935483004FC1AE /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
+		BB3D97092B2FEAC8007094C8 /* KMPDFRedactViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFRedactViewController.swift; sourceTree = "<group>"; };
+		BB3D970D2B2FEAF7007094C8 /* KMPDFRedactViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMPDFRedactViewController.xib; sourceTree = "<group>"; };
 		BB3EAEAB293E3D6000D92407 /* KMConvertBaseWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertBaseWindowController.swift; sourceTree = "<group>"; };
 		BB3EAEAC293E3D6000D92407 /* KMConvertBaseWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMConvertBaseWindowController.xib; sourceTree = "<group>"; };
 		BB403BA92B15CA6E00B3106D /* KMBatchConvertOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchConvertOperation.swift; sourceTree = "<group>"; };
@@ -9245,6 +9253,7 @@
 		BB35C49C297535C800D46EE2 /* Redact */ = {
 			isa = PBXGroup;
 			children = (
+				BB3D97082B2FEA9E007094C8 /* Controller */,
 				BBB14A512978DD4200936EDB /* Tools */,
 				BB4EEF2A29763EC7003A3537 /* Base */,
 				BB4EEF2929763EC7003A3537 /* Window */,
@@ -9311,6 +9320,15 @@
 			path = Reachability;
 			sourceTree = "<group>";
 		};
+		BB3D97082B2FEA9E007094C8 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				BB3D97092B2FEAC8007094C8 /* KMPDFRedactViewController.swift */,
+				BB3D970D2B2FEAF7007094C8 /* KMPDFRedactViewController.xib */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
 		BB3EAEA9293E3BA200D92407 /* Convert */ = {
 			isa = PBXGroup;
 			children = (
@@ -11484,6 +11502,7 @@
 				AD68783829A60FC0005B5210 /* KMLoginView.xib in Resources */,
 				9F853A022947137500DF644E /* default-icon.pdf in Resources */,
 				BBC348052955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.xib in Resources */,
+				BB3D970E2B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */,
 				ADBC2CF5299C7B3E006280C8 /* Print.xcassets in Resources */,
 				AD88109A29A78AEC00178CA1 /* KMVerificationCodeView.xib in Resources */,
 				9F72D20B2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
@@ -11753,6 +11772,7 @@
 				AD2D74B129F0CEB300EDC5E4 /* KMCancellationWindowController.xib in Resources */,
 				9F1FE4DF29406E4700E952CA /* .gclient in Resources */,
 				ADC63E4C2A49BEDD00854E02 /* KMSubscribeWaterMarkCollectionItem.xib in Resources */,
+				BB3D970F2B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */,
 				BB69C960299116FD0001A9B1 /* plaid.pdf in Resources */,
 				ADE86AC42B034C7100414DFA /* KMBackgroundWindowController.xib in Resources */,
 				AD0FA4FF29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */,
@@ -12307,6 +12327,7 @@
 				BBB376AC2B10A7FD009539CC /* a_3a.png in Resources */,
 				9FDD0FBC295D5230000C4DAD /* KMToolbarController.xib in Resources */,
 				AD8810A529A8459000178CA1 /* KMComparativeTableViewController.xib in Resources */,
+				BB3D97102B2FEAF9007094C8 /* KMPDFRedactViewController.xib in Resources */,
 				ADBC376829CD86A000D93208 /* KMReadModelView.xcassets in Resources */,
 				8942F7FD2926089200389627 /* KMSignatureViewController.xib in Resources */,
 				AD1CA4262A061D190070541F /* KMAnnotationScreenAuthorViewItem.xib in Resources */,
@@ -13341,6 +13362,7 @@
 				BB49ECED293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */,
 				BB65A0542AF8B90F003A27A0 /* KMDisplayPreferences.swift in Sources */,
 				9F0CB49729683E1000007028 /* KMPropertiesPanelTextSubVC.swift in Sources */,
+				BB3D970A2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */,
 				BB853C6B2AF8782A009C20C1 /* KMRemoveWatermarkOperationQueue.swift in Sources */,
 				9F1FE49929406E4700E952CA /* NewTabButton.m in Sources */,
 				9FCFECA82AD243C900EAD2CB /* KMBlankView.swift in Sources */,
@@ -13842,6 +13864,7 @@
 				BBC3481D295593F0008D2CD1 /* KMBackgroundListController.swift in Sources */,
 				9F5664882988B16F00020985 /* KMTextfieldVC.swift in Sources */,
 				89D2D2FC294C806000BFF5FE /* KMPDFThumbnailItem.swift in Sources */,
+				BB3D970B2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */,
 				BB65A06C2AF8D8A1003A27A0 /* KMNotesPreferences.swift in Sources */,
 				9F0CB4EA2986559400007028 /* KMDesignToken+PaddingBottom.swift in Sources */,
 				BB96A0B12AFCD56100559E24 /* KMToolCompareWindowController.swift in Sources */,
@@ -15049,6 +15072,7 @@
 				BB146FE3299DC0D100784A6A /* GTLRDriveQuery.m in Sources */,
 				9F72D20A2994BDAF00DCACF1 /* KMNotificationVC.swift in Sources */,
 				BB8F456F295AC1220037EA22 /* KMHeaderFooterAdjectiveModel.swift in Sources */,
+				BB3D970C2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */,
 				BBB7B48F2A0384E100B58A5A /* NSCollectionViewItem+KMExtension.swift in Sources */,
 				BB146FFE299DC0D100784A6A /* OIDAuthState+Mac.m in Sources */,
 				AD88108F29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,

+ 0 - 32
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -308,38 +308,6 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "CC9A5B69-56FC-4B20-B00E-39FCD1571051"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFTools/OCRNew/Controller/KMOCRPDFWindowController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "190"
-            endingLineNumber = "190"
-            landmarkName = "windowDidLoad()"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "19F075E1-10AB-4E08-B52C-0127B88E2E9B"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFTools/OCRNew/Controller/KMOCRPDFWindowController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "271"
-            endingLineNumber = "271"
-            landmarkName = "updateLanguageButton(_:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent

+ 17 - 0
PDF Office/PDF Master/Class/PDFTools/Redact/Controller/KMPDFRedactViewController.swift

@@ -0,0 +1,17 @@
+//
+//  KMPDFRedactViewController.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/12/18.
+//
+
+import Cocoa
+
+class KMPDFRedactViewController: NSViewController {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 226 - 0
PDF Office/PDF Master/Class/PDFTools/Redact/Controller/KMPDFRedactViewController.xib

@@ -0,0 +1,226 @@
+<?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="KMPDFRedactViewController">
+            <connections>
+                <outlet property="applyBox" destination="p57-Ip-T2T" id="wb7-JQ-7Sy"/>
+                <outlet property="applyButton" destination="jgL-Z5-PR3" id="fHy-NQ-YtV"/>
+                <outlet property="exitBox" destination="dDh-hJ-cIA" id="KFg-W4-fiL"/>
+                <outlet property="exitButton" destination="pup-Oa-y3G" id="uAO-zj-9h7"/>
+                <outlet property="propertiesBox" destination="iwX-y1-ea2" id="Bxj-bw-w1v"/>
+                <outlet property="propertiesButton" destination="G4u-HY-WcV" id="j9h-KE-Uqx"/>
+                <outlet property="propertiesLabel" destination="9vB-gG-Xmd" id="EpZ-II-dke"/>
+                <outlet property="redactPdfView" destination="Ljd-Vm-9rM" id="5be-1E-Uob"/>
+                <outlet property="redactTextBox" destination="aoK-i3-jUv" id="UeG-Pz-3fU"/>
+                <outlet property="redactTextButton" destination="ryk-qe-WA4" id="nRS-P5-FLH"/>
+                <outlet property="redactTextLabel" destination="bf1-3b-pkO" id="y8J-XA-3uO"/>
+                <outlet property="redactTipLabel" destination="YU9-ht-l5r" id="Z1O-ZP-7Xa"/>
+                <outlet property="toolView" destination="2S1-Gb-ePE" id="QY0-Kq-JcW"/>
+                <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="1000" height="361"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="2S1-Gb-ePE">
+                    <rect key="frame" x="0.0" y="321" width="1000" height="40"/>
+                    <subviews>
+                        <box boxType="custom" borderType="none" cornerRadius="4" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="aoK-i3-jUv">
+                            <rect key="frame" x="413" y="8" width="81" height="24"/>
+                            <view key="contentView" id="cu2-VR-LMh">
+                                <rect key="frame" x="0.0" y="0.0" width="81" height="24"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="UVs-wD-kHf">
+                                        <rect key="frame" x="10" y="2" width="20" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="20" id="0fK-DJ-icK"/>
+                                            <constraint firstAttribute="height" constant="20" id="uC1-em-ML9"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameButtonRedactText" id="10J-Vc-p1f"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bf1-3b-pkO">
+                                        <rect key="frame" x="36" y="4" width="37" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="SQB-JZ-YQd">
+                                            <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="ryk-qe-WA4" customClass="KMCustomButton">
+                                        <rect key="frame" x="0.0" y="0.0" width="81" height="24"/>
+                                        <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" alignment="center" state="on" imageScaling="proportionallyDown" inset="2" id="HKN-QE-F2Y">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="ryk-qe-WA4" firstAttribute="leading" secondItem="cu2-VR-LMh" secondAttribute="leading" id="0ml-x2-817"/>
+                                    <constraint firstAttribute="trailing" secondItem="ryk-qe-WA4" secondAttribute="trailing" id="1xK-nj-ccm"/>
+                                    <constraint firstAttribute="bottom" secondItem="ryk-qe-WA4" secondAttribute="bottom" id="2lW-go-6eQ"/>
+                                    <constraint firstItem="bf1-3b-pkO" firstAttribute="leading" secondItem="UVs-wD-kHf" secondAttribute="trailing" constant="8" id="AVI-KH-18V"/>
+                                    <constraint firstAttribute="trailing" secondItem="bf1-3b-pkO" secondAttribute="trailing" constant="10" id="WRX-4x-oKU"/>
+                                    <constraint firstItem="UVs-wD-kHf" firstAttribute="leading" secondItem="cu2-VR-LMh" secondAttribute="leading" constant="10" id="ZCC-uD-EvM"/>
+                                    <constraint firstItem="bf1-3b-pkO" firstAttribute="centerY" secondItem="UVs-wD-kHf" secondAttribute="centerY" id="fPi-51-EcZ"/>
+                                    <constraint firstItem="ryk-qe-WA4" firstAttribute="top" secondItem="cu2-VR-LMh" secondAttribute="top" id="hHJ-vU-tyU"/>
+                                    <constraint firstItem="UVs-wD-kHf" firstAttribute="centerY" secondItem="cu2-VR-LMh" secondAttribute="centerY" id="zjk-6O-sRF"/>
+                                </constraints>
+                            </view>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="cDN-lX-Jb8"/>
+                            </constraints>
+                        </box>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YU9-ht-l5r">
+                            <rect key="frame" x="14" y="12" width="60" height="17"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Edit PDF" id="xwB-CI-KY9">
+                                <font key="font" metaFont="system" size="14"/>
+                                <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                        <box boxType="custom" borderWidth="0.0" cornerRadius="1" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="p57-Ip-T2T">
+                            <rect key="frame" x="906" y="8" width="79" height="24"/>
+                            <view key="contentView" id="SkL-h8-Tpz">
+                                <rect key="frame" x="0.0" y="0.0" width="79" height="24"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jgL-Z5-PR3">
+                                        <rect key="frame" x="20" y="4" width="39" height="16"/>
+                                        <buttonCell key="cell" type="bevel" title="Apply" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="Avm-LZ-ePg">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="apply_button:" target="-2" id="e1M-4e-CN2"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstAttribute="trailing" secondItem="jgL-Z5-PR3" secondAttribute="trailing" constant="20" id="O24-kg-iaR"/>
+                                    <constraint firstItem="jgL-Z5-PR3" firstAttribute="leading" secondItem="SkL-h8-Tpz" secondAttribute="leading" constant="20" id="YiZ-mR-yNH"/>
+                                    <constraint firstItem="jgL-Z5-PR3" firstAttribute="centerY" secondItem="SkL-h8-Tpz" secondAttribute="centerY" id="lxb-En-69V"/>
+                                </constraints>
+                            </view>
+                            <color key="fillColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <box boxType="custom" borderWidth="0.0" cornerRadius="1" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="dDh-hJ-cIA">
+                            <rect key="frame" x="827" y="8" width="67" height="24"/>
+                            <view key="contentView" id="qpy-I2-8jU">
+                                <rect key="frame" x="0.0" y="0.0" width="67" height="24"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pup-Oa-y3G">
+                                        <rect key="frame" x="20" y="4" width="27" height="16"/>
+                                        <buttonCell key="cell" type="bevel" title="Exit" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="TcM-v9-HPa">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="exit_button:" target="-2" id="jp5-Zg-WXB"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="pup-Oa-y3G" firstAttribute="leading" secondItem="qpy-I2-8jU" secondAttribute="leading" constant="20" id="3fF-7j-K5P"/>
+                                    <constraint firstItem="pup-Oa-y3G" firstAttribute="centerY" secondItem="qpy-I2-8jU" secondAttribute="centerY" id="VpB-D0-d0P"/>
+                                    <constraint firstAttribute="trailing" secondItem="pup-Oa-y3G" secondAttribute="trailing" constant="20" id="k6e-jp-K9d"/>
+                                </constraints>
+                            </view>
+                            <color key="fillColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <box boxType="custom" borderType="none" cornerRadius="4" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="iwX-y1-ea2">
+                            <rect key="frame" x="506" y="8" width="81" height="24"/>
+                            <view key="contentView" id="ZZF-jp-flc">
+                                <rect key="frame" x="0.0" y="0.0" width="81" height="24"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="wmd-of-I4h">
+                                        <rect key="frame" x="10" y="2" width="20" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="YcT-7F-lSr"/>
+                                            <constraint firstAttribute="width" constant="20" id="a4d-Wr-CJW"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameButtonRedactProperties" id="ORk-5j-x9i"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9vB-gG-Xmd">
+                                        <rect key="frame" x="36" y="4" width="37" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="RIY-Ss-doB">
+                                            <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="G4u-HY-WcV" customClass="KMCustomButton">
+                                        <rect key="frame" x="0.0" y="0.0" width="81" height="24"/>
+                                        <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" alignment="center" state="on" imageScaling="proportionallyDown" inset="2" id="pAw-R5-ae6">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <connections>
+                                            <action selector="showProperties_button:" target="-2" id="ak9-cG-D94"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="wmd-of-I4h" firstAttribute="centerY" secondItem="ZZF-jp-flc" secondAttribute="centerY" id="3qQ-y5-pYZ"/>
+                                    <constraint firstItem="wmd-of-I4h" firstAttribute="leading" secondItem="ZZF-jp-flc" secondAttribute="leading" constant="10" id="54F-VB-DTy"/>
+                                    <constraint firstItem="G4u-HY-WcV" firstAttribute="leading" secondItem="ZZF-jp-flc" secondAttribute="leading" id="607-kv-oZS"/>
+                                    <constraint firstAttribute="bottom" secondItem="G4u-HY-WcV" secondAttribute="bottom" id="I5N-mL-JG8"/>
+                                    <constraint firstItem="9vB-gG-Xmd" firstAttribute="centerY" secondItem="wmd-of-I4h" secondAttribute="centerY" id="KnA-gl-wY3"/>
+                                    <constraint firstAttribute="trailing" secondItem="G4u-HY-WcV" secondAttribute="trailing" id="agX-Gn-XLd"/>
+                                    <constraint firstItem="G4u-HY-WcV" firstAttribute="top" secondItem="ZZF-jp-flc" secondAttribute="top" id="hFT-HB-gbq"/>
+                                    <constraint firstAttribute="trailing" secondItem="9vB-gG-Xmd" secondAttribute="trailing" constant="10" id="iKd-Gb-9CH"/>
+                                    <constraint firstItem="9vB-gG-Xmd" firstAttribute="leading" secondItem="wmd-of-I4h" secondAttribute="trailing" constant="8" id="vAH-9A-ypo"/>
+                                </constraints>
+                            </view>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="eCk-ic-tUa"/>
+                            </constraints>
+                        </box>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="YU9-ht-l5r" firstAttribute="centerY" secondItem="2S1-Gb-ePE" secondAttribute="centerY" id="Fvh-Id-qhM"/>
+                        <constraint firstItem="aoK-i3-jUv" firstAttribute="centerY" secondItem="2S1-Gb-ePE" secondAttribute="centerY" id="I0v-ft-szS"/>
+                        <constraint firstAttribute="trailing" secondItem="p57-Ip-T2T" secondAttribute="trailing" constant="15" id="VSh-yG-pTg"/>
+                        <constraint firstItem="dDh-hJ-cIA" firstAttribute="top" secondItem="2S1-Gb-ePE" secondAttribute="top" constant="8" id="WH3-I9-gGf"/>
+                        <constraint firstItem="p57-Ip-T2T" firstAttribute="top" secondItem="2S1-Gb-ePE" secondAttribute="top" constant="8" id="WR2-Qc-g35"/>
+                        <constraint firstAttribute="height" constant="40" id="WUy-y7-LrA"/>
+                        <constraint firstItem="YU9-ht-l5r" firstAttribute="leading" secondItem="2S1-Gb-ePE" secondAttribute="leading" constant="16" id="aT9-aj-pzQ"/>
+                        <constraint firstItem="iwX-y1-ea2" firstAttribute="centerX" secondItem="2S1-Gb-ePE" secondAttribute="centerX" constant="46" id="bXp-VB-JyA"/>
+                        <constraint firstItem="p57-Ip-T2T" firstAttribute="leading" secondItem="dDh-hJ-cIA" secondAttribute="trailing" constant="12" id="iIc-KL-0gR"/>
+                        <constraint firstAttribute="bottom" secondItem="dDh-hJ-cIA" secondAttribute="bottom" constant="8" id="m6o-zI-Wdu"/>
+                        <constraint firstAttribute="bottom" secondItem="p57-Ip-T2T" secondAttribute="bottom" constant="8" id="mtN-jR-bCV"/>
+                        <constraint firstItem="iwX-y1-ea2" firstAttribute="leading" secondItem="aoK-i3-jUv" secondAttribute="trailing" constant="12" id="qqF-pS-UzL"/>
+                        <constraint firstItem="iwX-y1-ea2" firstAttribute="centerY" secondItem="2S1-Gb-ePE" secondAttribute="centerY" id="sWN-bH-6QS"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Ljd-Vm-9rM" customClass="KMRedactPDFView">
+                    <rect key="frame" x="0.0" y="0.0" width="1000" height="321"/>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="2S1-Gb-ePE" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="8jh-Dz-18G"/>
+                <constraint firstItem="Ljd-Vm-9rM" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="9dF-4q-8Uw"/>
+                <constraint firstAttribute="trailing" secondItem="Ljd-Vm-9rM" secondAttribute="trailing" id="Rm0-EU-FOU"/>
+                <constraint firstItem="Ljd-Vm-9rM" firstAttribute="top" secondItem="2S1-Gb-ePE" secondAttribute="bottom" id="YPB-Ng-n7R"/>
+                <constraint firstItem="2S1-Gb-ePE" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="bKr-kB-74n"/>
+                <constraint firstAttribute="bottom" secondItem="Ljd-Vm-9rM" secondAttribute="bottom" id="jYf-ow-CxC"/>
+                <constraint firstAttribute="trailing" secondItem="2S1-Gb-ePE" secondAttribute="trailing" id="oJq-Zw-u7u"/>
+            </constraints>
+            <point key="canvasLocation" x="274" y="171.5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="KMImageNameButtonRedactProperties" width="20" height="20"/>
+        <image name="KMImageNameButtonRedactText" width="20" height="20"/>
+    </resources>
+</document>

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

@@ -3568,7 +3568,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                     toolbarItem.isSelected = !toolbarItem.isSelected
                     self.toggleRightPane()
                 } else if itemID == KMDocumentRedactToolbarItemIdentifier {
-                    Swift.debugPrint("KMDocumentRedactToolbarItemIdentifier ...")
+                    self.enterRedact()
                 } else if itemID == KMDocumentScanOCRToolbarItemIdentifier {
                     showOCRWindow()
                 } else if itemID == KMDocumentDigitalSignToolbarItemIdentifier {

+ 19 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -536,6 +536,25 @@ import Cocoa
         }
     }
     
+    // MARK: - 标记密文
+    
+    func enterRedact() {
+        let controller = KMPDFRedactViewController()
+        self.addChild(controller)
+        self.PDFContendView.addSubview(controller.view)
+        controller.view.frame = self.PDFContendView.bounds
+        controller.view.autoresizingMask = [.width, .height]
+        self.listView.isHidden = true
+    }
+    
+    func exitRedact() {
+        
+    }
+    
+    func hasEnterRedact() -> Bool {
+        return false
+    }
+    
     // MARK: - 页面编辑
     
     open func enterPageEdit(_ pages: [Int] = []) {