浏览代码

【2025】【Tools】批量处理,导入加密文档时,需求是不需要输入密码的-修复

lizhe 1 月之前
父节点
当前提交
7849d2eaf4

+ 3 - 3
PDF Office/PDF Master/Class/Batch/WindowController/KMAlertWindowController.xib

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="NSAlertWindowController" customModule="PDF_Master" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="NSAlertWindowController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
                 <outlet property="actionButton" destination="ysS-2k-HPo" id="qaJ-km-j4F"/>
                 <outlet property="alertCheckButton" destination="Ss5-2o-1Dn" id="QAq-RC-Zd2"/>

+ 45 - 15
PDF Office/PDF Master/KMClass/NewBatch/Manager/KMBatchManager.swift

@@ -37,6 +37,23 @@ class KMBatchManager: NSObject {
     }
     
     func batch(type: KMBatchCollectionViewType, data: KMBatchSettingItemViewModel) {
+        if self.isContainLockFiles() {
+            let window = NSWindow()
+            let currentWindow = NSWindow.currentWindow()
+            let controller = KMBatchProcessingPasswordAlertViewController.init(nibName: "KMBatchProcessingPasswordAlertViewController", bundle: nil)
+            controller.cancelAction = {
+                currentWindow.endSheet(window)
+            }
+            
+            controller.continueAction = {
+                currentWindow.endSheet(window)
+            }
+            window.contentViewController = controller
+            currentWindow.beginSheet(window)
+            
+            return
+        }
+        
         let panel = NSOpenPanel()
         panel.canChooseFiles = false
         panel.canChooseDirectories = true
@@ -827,7 +844,7 @@ extension KMBatchManager {
             data.pageRangeString = model.pageRangeString
             
             let pages:[Int] = KMOCRManager.fetchPageIndex(document: document, model: data)
-
+            
             return pages
         }
         return []
@@ -845,7 +862,7 @@ extension KMBatchManager {
             let data = KMOCRModel()
             data.pageRangeType = model.pageRange
             data.pageRangeString = model.pageRangeString
-           
+            
             let pages:[Int] = KMOCRManager.fetchPageIndex(document: document!, model: data)
             
             var tempDocument = CPDFDocument()
@@ -867,7 +884,7 @@ extension KMBatchManager {
     func fetchTempFilePath(fileName: String) -> String {
         let floderPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("BatchTemp")
         let filePath = floderPath?.stringByAppendingPathComponent("\(fileName).pdf")
-
+        
         if let data = floderPath, !FileManager.default.fileExists(atPath: data) {
             try?FileManager.default.createDirectory(atPath: data, withIntermediateDirectories: false)
         }
@@ -891,23 +908,36 @@ extension KMBatchManager {
         if fileName.isEmpty {
             fileName = NSLocalizedString("Untitled", comment: "")
         }
-
+        
         let path = outputFolderPath + "/" + fileName + ".pdf"
-
-//        // 检查文件是否已存在,如果存在,则添加数字后缀
-//        var finalPath = path
-//        var count = 1
-//        while FileManager.default.fileExists(atPath: finalPath) {
-//            let newFileName = "\(fileName) \(count)"
-//            finalPath = outputFolderPath + "/" + newFileName + ".pdf"
-//            count += 1
-//        }
-
+        
+        //        // 检查文件是否已存在,如果存在,则添加数字后缀
+        //        var finalPath = path
+        //        var count = 1
+        //        while FileManager.default.fileExists(atPath: finalPath) {
+        //            let newFileName = "\(fileName) \(count)"
+        //            finalPath = outputFolderPath + "/" + newFileName + ".pdf"
+        //            count += 1
+        //        }
+        
         // 使用最终路径进行保存或其他操作
-//        path = finalPath
+        //        path = finalPath
         
         return path
     }
+    
+    func isContainLockFiles() -> Bool {
+        var isContainFiles = false
+        for item in filesData {
+            if !item.isLock {
+                
+            } else {
+                isContainFiles = true
+                break
+            }
+        }
+        return isContainFiles
+    }
 }
 
 //MARK: Alert

+ 12 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_pic-empty.imageset/Contents.json

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

二进制
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_pic-empty.imageset/pic-empty.pdf


+ 49 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/KMBatchProcessingView/PasswordAlertView/KMBatchProcessingPasswordAlertViewController.swift

@@ -0,0 +1,49 @@
+//
+//  KMBatchProcessingPasswordAlertViewController.swift
+//  PDF Reader Pro
+//
+//  Created by kdanmobile on 2025/2/8.
+//
+
+import Cocoa
+import KMComponentLibrary
+
+typealias KMBatchProcessingPasswordAlertViewControllerCancelAction = () -> Void
+typealias KMBatchProcessingPasswordAlertViewControllerContinueAction = () -> Void
+
+class KMBatchProcessingPasswordAlertViewController: NSViewController {
+
+    @IBOutlet weak var titleLabel: NSTextField!
+    
+    @IBOutlet weak var cancelButton: ComponentButton!
+    @IBOutlet weak var continueButton: ComponentButton!
+    
+    var cancelAction: KMBatchProcessingPasswordAlertViewControllerCancelAction?
+    var continueAction: KMBatchProcessingPasswordAlertViewControllerContinueAction?
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        
+        self.setup()
+    }
+    
+    func setup() {
+        cancelButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, buttonText: KMLocalizedString("Cancel"), keepPressState: false)
+        cancelButton.setTarget(self, action: #selector(cancelButtonAction))
+        cancelButton.reloadData()
+        
+        continueButton.properties = ComponentButtonProperty(type: .primary, size: .s, buttonText: KMLocalizedString("Continue"), keepPressState: false)
+        continueButton.setTarget(self, action: #selector(continueButtonAction))
+        continueButton.reloadData()
+    }
+    
+    @objc func cancelButtonAction() {
+        cancelAction?()
+    }
+     
+    @objc func continueButtonAction() {
+        continueAction?()
+    }
+    
+}

+ 97 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/KMBatchProcessingView/PasswordAlertView/KMBatchProcessingPasswordAlertViewController.xib

@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchProcessingPasswordAlertViewController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="cancelButton" destination="1nE-pL-2HF" id="zbe-tO-mVN"/>
+                <outlet property="continueButton" destination="xc1-lE-p9N" id="8hf-PJ-o8t"/>
+                <outlet property="titleLabel" destination="oum-hg-grh" id="F5M-ey-ead"/>
+                <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="360" height="356"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="P8V-8l-VRh">
+                    <rect key="frame" x="0.0" y="0.0" width="360" height="64"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="1nE-pL-2HF" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="24" y="16" width="152" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="152" id="0l3-pE-LWJ"/>
+                                <constraint firstAttribute="height" constant="32" id="ISd-ks-xAJ"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="xc1-lE-p9N" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="184" y="16" width="152" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="16o-0J-VbT"/>
+                                <constraint firstAttribute="width" constant="152" id="WtR-h3-LlK"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="1nE-pL-2HF" firstAttribute="centerY" secondItem="P8V-8l-VRh" secondAttribute="centerY" id="Wz9-sZ-riT"/>
+                        <constraint firstItem="xc1-lE-p9N" firstAttribute="centerY" secondItem="P8V-8l-VRh" secondAttribute="centerY" id="YsA-DL-1Or"/>
+                        <constraint firstItem="1nE-pL-2HF" firstAttribute="leading" secondItem="P8V-8l-VRh" secondAttribute="leading" constant="24" id="dru-EX-0F0"/>
+                        <constraint firstAttribute="trailing" secondItem="xc1-lE-p9N" secondAttribute="trailing" constant="24" id="f4b-NV-91T"/>
+                        <constraint firstAttribute="height" constant="64" id="rgl-vu-7oD"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ua7-7R-7jz">
+                    <rect key="frame" x="24" y="72" width="312" height="276"/>
+                    <subviews>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oNP-Ls-08y">
+                            <rect key="frame" x="92" y="132" width="128" height="128"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="128" id="3W1-ct-uML"/>
+                                <constraint firstAttribute="height" constant="128" id="EKy-5l-EhA"/>
+                            </constraints>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="icon_pic-empty" id="zwB-H5-gWT"/>
+                        </imageView>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oum-hg-grh">
+                            <rect key="frame" x="-2" y="16" width="316" height="100"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="312" id="Djq-lB-cvh"/>
+                                <constraint firstAttribute="height" constant="100" id="ej5-sb-gMc"/>
+                            </constraints>
+                            <textFieldCell key="cell" lineBreakMode="charWrapping" alignment="center" id="yD0-c2-3Ki">
+                                <font key="font" metaFont="system"/>
+                                <string key="title">At least one file in the list requires a password before you can proceed. Continuing the current operation will skip these undecrypted files. Do you want to continue?</string>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="oum-hg-grh" firstAttribute="centerX" secondItem="ua7-7R-7jz" secondAttribute="centerX" id="BVB-Td-aJV"/>
+                        <constraint firstItem="oNP-Ls-08y" firstAttribute="top" secondItem="ua7-7R-7jz" secondAttribute="top" constant="16" id="LIn-jB-wy9"/>
+                        <constraint firstItem="oNP-Ls-08y" firstAttribute="centerX" secondItem="ua7-7R-7jz" secondAttribute="centerX" id="OrM-fL-OZV"/>
+                        <constraint firstItem="oum-hg-grh" firstAttribute="top" secondItem="oNP-Ls-08y" secondAttribute="bottom" constant="16" id="zxM-Tf-jZC"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="P8V-8l-VRh" secondAttribute="bottom" id="KfF-93-Qe6"/>
+                <constraint firstItem="ua7-7R-7jz" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="8" id="KoJ-qy-xVH"/>
+                <constraint firstItem="P8V-8l-VRh" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="QQL-Fg-ojV"/>
+                <constraint firstItem="P8V-8l-VRh" firstAttribute="top" secondItem="ua7-7R-7jz" secondAttribute="bottom" constant="8" id="Xik-Bc-HPn"/>
+                <constraint firstAttribute="trailing" secondItem="P8V-8l-VRh" secondAttribute="trailing" id="Yj5-Hm-PWS"/>
+                <constraint firstAttribute="trailing" secondItem="ua7-7R-7jz" secondAttribute="trailing" constant="24" id="Z2c-GC-kJ4"/>
+                <constraint firstItem="ua7-7R-7jz" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="24" id="ccx-r9-HzH"/>
+            </constraints>
+            <point key="canvasLocation" x="139" y="114"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="icon_pic-empty" width="128" height="128"/>
+    </resources>
+</document>

+ 16 - 16
PDF Office/PDF Master/KMClass/NewBatch/View/KMBatchProcessingView/Tableview/Presenter/KMBatchProcessingTableViewPresenter.swift

@@ -90,17 +90,17 @@ extension KMBatchProcessingTableViewPresenter: KMBatchProcessingTableViewPresent
                         if document != nil {
                             if (!document!.allowsCopying && !document!.allowsPrinting) {
                                 self.modelData.append(model)
-                                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
-                                    KMPasswordInputWindow.openWindow(window: NSWindow.currentWindow(), type: .owner, url: URL(fileURLWithPath: model.filePath)) { [unowned self] result, password in
-                                        if (result == .success) {
-                                            model.password = password ?? ""
-                                            model.isLock = false
-                                        } else {
+//                                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+//                                    KMPasswordInputWindow.openWindow(window: NSWindow.currentWindow(), type: .owner, url: URL(fileURLWithPath: model.filePath)) { [unowned self] result, password in
+//                                        if (result == .success) {
+//                                            model.password = password ?? ""
+//                                            model.isLock = false
+//                                        } else {
                                             model.isLock = true
-                                        }
+//                                        }
                                         self.delegate?.showData(presenter: self, data: self.modelData)
-                                    }
-                                }
+//                                    }
+//                                }
                             } else {
                                 self.modelData.append(model)
                             }
@@ -134,15 +134,15 @@ extension KMBatchProcessingTableViewPresenter: KMBatchProcessingTableViewPresent
                         if document != nil {
                             if (!document!.allowsCopying && !document!.allowsPrinting) {
                                 self.modelData.insert(model, at: index)
-                                KMPasswordInputWindow.openWindow(window: NSWindow.currentWindow(), type: .owner, url: URL(fileURLWithPath: model.filePath)) { [unowned self] result, password in
-                                    if (result == .success) {
-                                        model.password = password ?? ""
-                                        model.isLock = false
-                                    } else {
+//                                KMPasswordInputWindow.openWindow(window: NSWindow.currentWindow(), type: .owner, url: URL(fileURLWithPath: model.filePath)) { [unowned self] result, password in
+//                                    if (result == .success) {
+//                                        model.password = password ?? ""
+//                                        model.isLock = false
+//                                    } else {
                                         model.isLock = true
-                                    }
+//                                    }
                                     self.delegate?.showData(presenter: self, data: self.modelData)
-                                }
+//                                }
                             } else {
                                 self.modelData.insert(model, at: index)
                             }

+ 24 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -1055,6 +1055,12 @@
 		AD1D48522AFB8510007AC1F0 /* KMMergeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1D48512AFB8510007AC1F0 /* KMMergeTableViewCell.xib */; };
 		AD1D48532AFB8510007AC1F0 /* KMMergeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1D48512AFB8510007AC1F0 /* KMMergeTableViewCell.xib */; };
 		AD1D48542AFB8510007AC1F0 /* KMMergeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1D48512AFB8510007AC1F0 /* KMMergeTableViewCell.xib */; };
+		AD1F59882D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD1F59862D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift */; };
+		AD1F59892D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1F59872D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib */; };
+		AD1F598A2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD1F59862D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift */; };
+		AD1F598B2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1F59872D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib */; };
+		AD1F598C2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD1F59872D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib */; };
+		AD1F598D2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD1F59862D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift */; };
 		AD1FE8142BD7C98300AA4A9B /* KMPDFMultipleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD1FE7F12BD7C98300AA4A9B /* KMPDFMultipleManager.m */; };
 		AD1FE8152BD7C98300AA4A9B /* KMPDFMultipleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD1FE7F12BD7C98300AA4A9B /* KMPDFMultipleManager.m */; };
 		AD1FE8162BD7C98300AA4A9B /* KMPDFMultipleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD1FE7F12BD7C98300AA4A9B /* KMPDFMultipleManager.m */; };
@@ -5140,6 +5146,8 @@
 		AD1D483D2AFB81F4007AC1F0 /* KMMergeBlankView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMMergeBlankView.xib; sourceTree = "<group>"; };
 		AD1D484D2AFB8506007AC1F0 /* KMMergeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMergeTableViewCell.swift; sourceTree = "<group>"; };
 		AD1D48512AFB8510007AC1F0 /* KMMergeTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMMergeTableViewCell.xib; sourceTree = "<group>"; };
+		AD1F59862D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingPasswordAlertViewController.swift; sourceTree = "<group>"; };
+		AD1F59872D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchProcessingPasswordAlertViewController.xib; sourceTree = "<group>"; };
 		AD1FE7F12BD7C98300AA4A9B /* KMPDFMultipleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMPDFMultipleManager.m; sourceTree = "<group>"; };
 		AD1FE7F22BD7C98300AA4A9B /* KMPDFMultiplePrintWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMPDFMultiplePrintWindowController.m; sourceTree = "<group>"; };
 		AD1FE7F32BD7C98300AA4A9B /* KMPDFMultiplePrintWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMPDFMultiplePrintWindowController.xib; sourceTree = "<group>"; };
@@ -7981,6 +7989,15 @@
 			path = KMMergeBlankView;
 			sourceTree = "<group>";
 		};
+		AD1F59802D574147003009CD /* PasswordAlertView */ = {
+			isa = PBXGroup;
+			children = (
+				AD1F59862D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift */,
+				AD1F59872D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib */,
+			);
+			path = PasswordAlertView;
+			sourceTree = "<group>";
+		};
 		AD1FE7EF2BD7C98300AA4A9B /* PrintHelper */ = {
 			isa = PBXGroup;
 			children = (
@@ -8643,6 +8660,7 @@
 		AD8B59BB2D2B778D00150EA6 /* KMBatchProcessingView */ = {
 			isa = PBXGroup;
 			children = (
+				AD1F59802D574147003009CD /* PasswordAlertView */,
 				AD8B59BC2D2B778D00150EA6 /* Tableview */,
 				AD8B59D32D2B778D00150EA6 /* SelectedFiles */,
 				AD8B59D62D2B778D00150EA6 /* KMBatchProcessingView.swift */,
@@ -13201,6 +13219,7 @@
 				653647BC2CDCA5DE00CDB13E /* KMBatchOperateWindowController.xib in Resources */,
 				BBE788C92CBD2463008086E2 /* ListVC.xib in Resources */,
 				65FABB352C9AFB1F00AA92E5 /* KMSectionCellView.xib in Resources */,
+				AD1F598C2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */,
 				F3EF17922CD5FD4B0007D364 /* KMNLeftSideViewController.xib in Resources */,
 				9F8539E7294712D600DF644E /* KMChromiumTabContents.xib in Resources */,
 				AD8B59B82D2B777700150EA6 /* KMBatchCollectionView.xib in Resources */,
@@ -13664,6 +13683,7 @@
 				BB19A75B2CB7C724008204DC /* KMHistoryFileListItem.xib in Resources */,
 				AD01D7AB2D377D2600D5DF2D /* KMBatchImageToPDFView.xib in Resources */,
 				BBAC26A92AFE138800563A08 /* KMToolbarItemPopViewController.xib in Resources */,
+				AD1F59892D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */,
 				BBE788DF2CBD2464008086E2 /* TabsVC.xib in Resources */,
 				9F94747C29FA22700042F949 /* InfoPlist.strings in Resources */,
 				9F1FE4DF29406E4700E952CA /* .gclient in Resources */,
@@ -14250,6 +14270,7 @@
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
 				653647B82CDCA5DE00CDB13E /* KMBatchOperateBaseWindowController.xib in Resources */,
 				F325FD532D2B698500832097 /* KMAnnotationSectionCellView.xib in Resources */,
+				AD1F598B2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.xib in Resources */,
 				BB9599D12B3184440062D346 /* KMRedactSelectPagesWindowController.xib in Resources */,
 				BBE788832CBD2463008086E2 /* WCCompWindowController.xib in Resources */,
 				AD8B59BA2D2B777700150EA6 /* KMBatchCollectionView.xib in Resources */,
@@ -15013,6 +15034,7 @@
 				653647702CDC8C3700CDB13E /* KMNTableHeaderCellView.swift in Sources */,
 				BBBB6CDE2AD174080035AA66 /* CPDFInkAnnotation+PDFListView.swift in Sources */,
 				BBBB6CCA2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */,
+				AD1F598D2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */,
 				AD01D7A62D377D1900D5DF2D /* KMBatchImageToPDFView.swift in Sources */,
 				BB0A55102A302DB700B6E84B /* KMTextField.swift in Sources */,
 				AD8F06172999DB5900D93CBC /* KMPrintDrawPage.swift in Sources */,
@@ -16291,6 +16313,7 @@
 				BB78EAAB2B561F9700121691 /* KMFullScreenWindow.swift in Sources */,
 				AD199DF02B23121000D56FEE /* KMPrintPamphletView.swift in Sources */,
 				BB0A55192A3074F400B6E84B /* KMHoverView.swift in Sources */,
+				AD1F59882D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */,
 				9F1FE4C129406E4700E952CA /* NSWindow+CTThemed.m in Sources */,
 				BBE9D0A02AF0D10F002E83CE /* KMSlider.swift in Sources */,
 				653647EE2CDCA85400CDB13E /* KMImageToPDFMethod.swift in Sources */,
@@ -16873,6 +16896,7 @@
 				ADDEEA602AD39DC500EF675D /* KMSignatureManager.swift in Sources */,
 				AD8E48D02D1BB1650055D3E6 /* KMOCRSettingView.swift in Sources */,
 				651559212CCA6E3100C0F0D9 /* KMConvertExcelWindowController.swift in Sources */,
+				AD1F598A2D57427C003009CD /* KMBatchProcessingPasswordAlertViewController.swift in Sources */,
 				F30B22872CB8D9630041002E /* KMNQuickToolCollectionViewItem.swift in Sources */,
 				65D88ED42C85826A00DD06E0 /* KMRSAUtils.swift in Sources */,
 				89D2D30A295A83B500BFF5FE /* KMEditPDFTextPropertyViewController.swift in Sources */,