|
@@ -62,16 +62,16 @@ class KMBatchManager: NSObject {
|
|
|
self.securityExport(data: data, outputFolderPath: outputFolderPath)
|
|
|
break
|
|
|
case .watermark:
|
|
|
-
|
|
|
+ self.waterMarkApplay(data: data, outputFolderPath: outputFolderPath)
|
|
|
break
|
|
|
case .background:
|
|
|
self.backgroundApplay(data: data, outputFolderPath: outputFolderPath)
|
|
|
break
|
|
|
case .headerAndFooter:
|
|
|
-
|
|
|
+ self.headAndFooterApplay(data: data, outputFolderPath: outputFolderPath)
|
|
|
break
|
|
|
case .batesNumber:
|
|
|
-
|
|
|
+ self.batesApplay(data: data, outputFolderPath: outputFolderPath)
|
|
|
break
|
|
|
case .batchRemove:
|
|
|
self.removeApplay(data: data, outputFolderPath: outputFolderPath)
|
|
@@ -448,11 +448,11 @@ extension KMBatchManager {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- if let background = document?.background(), let model = data.backgroundModel {
|
|
|
+ if let background = document?.background(), let model = data.backgroundModel, let document = document {
|
|
|
KMBackgroundManager.defaultManager.updateBackground(background, withModel: model)
|
|
|
|
|
|
- var pages = Array(0..<Int(document!.pageCount))
|
|
|
- let pageIndexString = pages.isEmpty ? "" : pages.map { "\($0)" }.joined(separator: ",")
|
|
|
+ let pageIndexString = self.fetchValidPageIndexString(document, model: item)
|
|
|
+
|
|
|
background.pageString = pageIndexString
|
|
|
background.update()
|
|
|
|
|
@@ -480,11 +480,58 @@ extension KMBatchManager {
|
|
|
|
|
|
//MARK: 页眉页脚
|
|
|
func headAndFooterApplay(data: KMBatchSettingItemViewModel, outputFolderPath: String) {
|
|
|
-
|
|
|
+ if let data = data as? KMBatchHeaderAndFooterModel {
|
|
|
+ self.headAndFooterFile(outputFolderPath: outputFolderPath, data: data, filesData: self.batchFilesData)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- func headAndFooterFile(outputFolderPath: String, data: KMBatchSettingItemViewModel, filesData: [KMBatchProcessingTableViewModel]?) {
|
|
|
+ func headAndFooterFile(outputFolderPath: String, data: KMBatchHeaderAndFooterModel, filesData: [KMBatchProcessingTableViewModel]) {
|
|
|
+ if filesData.count != 0 {
|
|
|
+ for i in 0..<filesData.count {
|
|
|
+ let item = filesData[i]
|
|
|
+ var fileName = item.filePath.deletingPathExtension.lastPathComponent
|
|
|
+ if ((fileName.isEmpty)) {
|
|
|
+ fileName = NSLocalizedString("Untitled", comment: "")
|
|
|
+ }
|
|
|
+
|
|
|
+ let path = outputFolderPath + "/" + fileName + ".pdf"
|
|
|
+ let document = CPDFDocument.init(url: URL(fileURLWithPath: item.filePath))
|
|
|
|
|
|
+ if (document?.allowsPrinting == false || document?.allowsCopying == false) {
|
|
|
+ let alert = NSAlert()
|
|
|
+ alert.alertStyle = .critical
|
|
|
+ alert.messageText = "此文档不允许修改"
|
|
|
+ alert.runModal()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if let headerFooter = document?.headerFooter(), let model = data.headerFooterModel, let document = document {
|
|
|
+ let pageString = self.fetchValidPageIndexString(document, model: item)
|
|
|
+ KMHeaderFooterManager.defaultManager.updateCPDFHeaderFooter(headerFooter, withModel: model, Int(document.pageCount))
|
|
|
+ headerFooter.pageString = pageString
|
|
|
+ headerFooter.update()
|
|
|
+ }
|
|
|
+
|
|
|
+ if (FileManager.default.fileExists(atPath: path)) {
|
|
|
+ try?FileManager.default.removeItem(atPath: path)
|
|
|
+ }
|
|
|
+
|
|
|
+ let result = document?.write(to: URL(fileURLWithPath: path)) ?? false
|
|
|
+ if (result) {
|
|
|
+ KMPrint("removeFile成功")
|
|
|
+ self.itemSuccess(item: item)
|
|
|
+ } else {
|
|
|
+ KMPrint("removeFile失败")
|
|
|
+ self.itemFailure(item: item, error: nil)
|
|
|
+ }
|
|
|
+ if i == filesData.count - 1 {
|
|
|
+ self.batchSuccess()
|
|
|
+ }
|
|
|
+ NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: path)])
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//MARK: 贝茨码
|
|
@@ -701,6 +748,25 @@ extension KMBatchManager {
|
|
|
|
|
|
//MARK: private
|
|
|
extension KMBatchManager {
|
|
|
+ func fetchValidPageIndexString(_ document: CPDFDocument, model: KMBatchProcessingTableViewModel) -> String? {
|
|
|
+ if model.pageRange == .all {
|
|
|
+ let pages = Array(0..<Int(document.pageCount))
|
|
|
+ let pageIndexString = pages.isEmpty ? "" : pages.map { "\($0)" }.joined(separator: ",")
|
|
|
+
|
|
|
+ return pageIndexString
|
|
|
+ } else {
|
|
|
+ let data = KMOCRModel()
|
|
|
+ data.pageRangeType = model.pageRange
|
|
|
+ data.pageRangeString = model.pageRangeString
|
|
|
+
|
|
|
+ let pages:[Int] = KMOCRManager.fetchPageIndex(document: document, model: data)
|
|
|
+ let pageIndexString = pages.isEmpty ? "" : pages.map { "\($0)" }.joined(separator: ",")
|
|
|
+
|
|
|
+ return pageIndexString
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
func fetchDocument(filePath: String, model: KMBatchProcessingTableViewModel) -> CPDFDocument {
|
|
|
var document = CPDFDocument(url: URL(fileURLWithPath: filePath))
|
|
|
|