Browse Source

[批量] - 页眉页脚&bates

jiajie 1 year ago
parent
commit
b720b6e19e

+ 2 - 2
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateBaseWindowController.swift

@@ -77,10 +77,10 @@ class KMBatchOperateBaseWindowController: NSWindowController{
     func backgroundInterfaceSelectBackGround(background: KMBackgroundModel) {
         (self.contentViewController as! KMBatchOperateSplitViewController).backgroundInterfaceSelectBackground(background)
     }
-    func headerFooterInterfaceSelectHeaderFooter(headerFooter: KMHeaderFooterObject) {
+    func headerFooterInterfaceSelectHeaderFooter(headerFooter: KMHeaderFooterModel) {
         (self.contentViewController as! KMBatchOperateSplitViewController).headerFooterInterfaceSelectHeaderFooter(headerFooter)
     }
-    func batesInterfaceSelectBates(headerFooter: KMHeaderFooterObject) {
+    func batesInterfaceSelectBates(headerFooter: KMHeaderFooterModel) {
         (self.contentViewController as! KMBatchOperateSplitViewController).headerFooterInterfaceSelectHeaderFooter(headerFooter)
     }
     

+ 2 - 2
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateRightViewController.swift

@@ -197,13 +197,13 @@ class KMBatchOperateRightViewController: NSViewController{
         }
     }
     
-    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterObject) {
+    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterModel) {
         if self.currentType == .AddHeaderFooter {
             self.addHeaderFooterViewController?.headerFooterInterfaceSelectHeaderFooter(headerFooter: headerFooter)
         }
     }
     
-    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterObject) {
+    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterModel) {
         if self.currentType == .AddBates {
             self.addHeaderFooterViewController?.headerFooterInterfaceSelectHeaderFooter(headerFooter: headerFooter)
         }

+ 2 - 2
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateSplitViewController.swift

@@ -54,10 +54,10 @@ class KMBatchOperateSplitViewController: NSSplitViewController{
     func backgroundInterfaceSelectBackground(_ background: KMBackgroundModel) {
         self.rightPropertiesViewController?.backgroundInterfaceSelectBackground(background)
     }
-    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterObject) {
+    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterModel) {
         self.rightPropertiesViewController?.headerFooterInterfaceSelectHeaderFooter(headerFooter)
     }
-    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterObject) {
+    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterModel) {
         self.rightPropertiesViewController?.batesInterfaceSelectBates(headerFooter)
     }
 }

+ 7 - 7
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/Model/KMBatchAddHeaderFooterOperation.swift

@@ -12,11 +12,11 @@ let mainBundleIdentifier = Bundle.main.bundleIdentifier ?? ""
 let kTempSavePath = supportDirectory?.stringByAppendingPathComponent(mainBundleIdentifier)
 
 class KMBatchAddHeaderFooterOperation: KMBatchOperation{
-    var headerFooter: KMHeaderFooterObject?
+    var headerFooter: KMHeaderFooterModel?
     var pdfDocument: CPDFDocument?
     var password: String?
     
-    init(file: KMBatchOperateFile, headerFooter: KMHeaderFooterObject) {
+    init(file: KMBatchOperateFile, headerFooter: KMHeaderFooterModel) {
         super.init(file: file)
         self.headerFooter = headerFooter
         self.pdfDocument = CPDFDocument(url: URL(fileURLWithPath: file.filePath))
@@ -113,7 +113,7 @@ class KMBatchAddHeaderFooterOperation: KMBatchOperation{
             document.unlock(withPassword: password)
         }
         
-        let font = NSFont.boldSystemFont(ofSize: self.headerFooter?.fontSize ?? 16.0)
+        let font = NSFont.boldSystemFont(ofSize: self.headerFooter?.getTextFontSize() ?? 16)
         let style = NSMutableParagraphStyle()
         style.alignment = .center
         style.lineBreakMode = .byCharWrapping
@@ -160,8 +160,8 @@ class KMBatchAddHeaderFooterOperation: KMBatchOperation{
             for i in 0..<items.count {
                 let text = items[i]
                 bates.setText(text, at: UInt(Int(i)))
-                bates.setTextColor(self.headerFooter?.textColor, at: UInt(Int(i)))
-                bates.setFontSize(self.headerFooter?.fontSize ?? 16.0, at: UInt(Int(i)))
+                bates.setTextColor(self.headerFooter?.getTextColor(), at: UInt(Int(i)))
+                bates.setFontSize(self.headerFooter?.getTextFontSize() ?? 16.0, at: UInt(Int(i)))
             }
             
             bates.update()
@@ -204,8 +204,8 @@ class KMBatchAddHeaderFooterOperation: KMBatchOperation{
             for i in 0..<items.count {
                 let text = items[i]
                 headerFooterNew?.setText(text, at: UInt(i))
-                headerFooterNew?.setTextColor(self.headerFooter!.textColor, at: UInt(Int(i)))
-                headerFooterNew?.setFontSize(self.headerFooter!.fontSize, at: UInt(Int(i)))
+                headerFooterNew?.setTextColor(self.headerFooter!.getTextColor(), at: UInt(Int(i)))
+                headerFooterNew?.setFontSize(self.headerFooter!.getTextFontSize(), at: UInt(Int(i)))
             }
             
             headerFooterNew?.update()

+ 23 - 16
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/VC/KMBatchOperateAddHeaderFooterViewController.swift

@@ -29,7 +29,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
     
     @IBOutlet var lineView: NSView!
     var haveFiles = false
-    var currentObject: KMHeaderFooterObject?
+    var currentObject: KMHeaderFooterModel?
     
     override var interfaceStatus: KMBatchOperateInterfaceStatus?{
         set{
@@ -257,7 +257,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
     func reloadTable() {
         self.tableView.noteNumberOfRowsChanged()
         var count = 0
-        var array: [KMHeaderFooterObject] = []
+        var array: [KMHeaderFooterModel] = []
         if self.isBates {
             count = KMHeaderFooterManager.defaultManager.onlyBatesObjects.count
             array = KMHeaderFooterManager.defaultManager.onlyBatesObjects
@@ -305,13 +305,20 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
         }
         let windowController = KMHeaderFooterWindowController(windowNibName: "KMHeaderFooterWindowController")
         windowController.isBatch = isBatchOperation
+        windowController.type = .Add
         windowController.isBates = isBates
         windowController.pdfDocument = cdocument
         
         windowController.cancelAction = { [unowned self] controller in
             self.km_endSheet()
         }
-        
+        windowController.operateCallBack = { wController, model in
+            self.currentObject = model
+            self.loadData()
+            self.postNotification()
+            let set = NSIndexSet(index: 0)
+            self.tableView.selectRowIndexes(set as IndexSet, byExtendingSelection: false)
+        }
         self.km_beginSheet(windowC: windowController)
         
     }
@@ -344,15 +351,15 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
                 for fileURL in openPanel.urls {
                     self.choosePath = fileURL.path
                     if self.isBates {
-                        self.beginAddBates(obj as! KMHeaderFooterObject)
+                        self.beginAddBates(obj as! KMHeaderFooterModel)
                     } else {
-                        self.beginAddHeaderFooter(obj as! KMHeaderFooterObject)
+                        self.beginAddHeaderFooter(obj as! KMHeaderFooterModel)
                     }
                 }
             }
         }
     }
-    func beginAddBates(_ bates: KMHeaderFooterObject) {
+    func beginAddBates(_ bates: KMHeaderFooterModel) {
         hiddenWindowCloseButtonIfNeeded()
         successFilePathURLArray?.removeAll()
         for i in 0..<(files?.count ?? 0) {
@@ -371,7 +378,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
             interfaceStatus = .Processing
         }
     }
-    func beginAddHeaderFooter(_ headerFooter: KMHeaderFooterObject) {
+    func beginAddHeaderFooter(_ headerFooter: KMHeaderFooterModel) {
         hiddenWindowCloseButtonIfNeeded()
         successFilePathURLArray?.removeAll()
         for i in 0..<(files?.count ?? 0) {
@@ -390,7 +397,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
             interfaceStatus = .Processing
         }
     }
-    func modify(obj: KMHeaderFooterObject) {
+    func modify(obj: KMHeaderFooterModel) {
 //        let windowController = self.view.window?.windowController
 //        var filePath: String? = nil
 //        var password: String? = nil
@@ -410,7 +417,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
 //        }
 //        wc?.beginSheetModalForWindow(NSApp.keyWindow, completionHandler: nil)
     }
-    func delete(obj: KMHeaderFooterObject) {
+    func delete(obj: KMHeaderFooterModel) {
         KMHeaderFooterManager.defaultManager.removeHeaderFooter(obj)
         loadData()
         reloadTable()
@@ -426,14 +433,14 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
         }
         return true
     }
-    func headerFooterInterfaceSelectHeaderFooter(headerFooter: KMHeaderFooterObject) {
+    func headerFooterInterfaceSelectHeaderFooter(headerFooter: KMHeaderFooterModel) {
         self.tableView.reloadData()
         if let index = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects.index(of: headerFooter) {
             let indexSet = IndexSet(integer: index)
             self.tableView.selectRowIndexes(indexSet, byExtendingSelection: false)
         }
     }
-    func batesInterfaceSelectBates(headerFooter: KMHeaderFooterObject) {
+    func batesInterfaceSelectBates(headerFooter: KMHeaderFooterModel) {
         self.tableView.reloadData()
         if let index = KMHeaderFooterManager.defaultManager.onlyBatesObjects.index(of: headerFooter) {
             let indexSet = IndexSet(integer: index)
@@ -452,7 +459,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
         return count
     }
     func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
-        var obj: KMHeaderFooterObject? = nil
+        var obj: KMHeaderFooterModel? = nil
         if self.isBates {
             obj = KMHeaderFooterManager.defaultManager.onlyBatesObjects[row]
         } else {
@@ -495,9 +502,9 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
             self.currentObject = bates
             for i in 0..<(self.files?.count ?? 0) {
                 let file = self.files?[i]
-                file?.addBatesInfo.pageChoice = bates.pageChoice
+                file?.addBatesInfo.pageChoice = KMBatchOperatePageChoice(rawValue: bates.pageRangeType.rawValue) ?? .All
                 if file?.addBatesInfo.pageChoice == .Input {
-                    let arr = allPageNumbers(bates.pagesString)
+                    let arr = allPageNumbers(bates.pageRangeString)
                     let sortedArray: NSArray = file!.pagesArrayIntersect(with: arr) as NSArray
                     if sortedArray.count < 1 {
                         file?.addBatesInfo.pageChoice = .All
@@ -511,9 +518,9 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
             self.currentObject = headerFooter
             for i in 0..<(self.files?.count ?? 0) {
                 let file = self.files?[i]
-                file?.addHeaderFooterInfo.pageChoice = headerFooter.pageChoice
+                file?.addHeaderFooterInfo.pageChoice =  KMBatchOperatePageChoice(rawValue: headerFooter.pageRangeType.rawValue) ?? .All
                 if file?.addHeaderFooterInfo.pageChoice == .Input {
-                    let arr = allPageNumbers(headerFooter.pagesString)
+                    let arr = allPageNumbers(headerFooter.pageRangeString)
                     let sortedArray: NSArray = file!.pagesArrayIntersect(with: arr) as NSArray
                     if sortedArray.count < 1 {
                         file?.addHeaderFooterInfo.pageChoice = .All

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/View/KMHeaderFooterTableCellView.swift

@@ -78,7 +78,7 @@ class KMHeaderFooterTableCellView: NSTableCellView {
         var appendString = string
         return appendString
     }
-    func updateInterface(_ obj: KMHeaderFooterObject) { 
+    func updateInterface(_ obj: KMHeaderFooterModel) { 
         var arr = NSMutableArray()
         if obj.topLeftString.count > 0 {
             arr.add(appendBaseString(NSLocalizedString("Left Header Text", comment: ""), withString: appendBaseString(obj.topLeftString)))
@@ -116,7 +116,7 @@ class KMHeaderFooterTableCellView: NSTableCellView {
                 break
             }
         }
-        self.titleTextFiled.stringValue = obj.headerFooterID 
+        self.titleTextFiled.stringValue = obj.id
     }
     func appendBaseString(_ prefixString: String, withString suffixString: String) -> String {
         return "(prefixString): (suffixString)"

+ 24 - 24
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/WindowComtroller/KMHeaderFooterManagerWindowController.swift

@@ -7,7 +7,7 @@
 
 import Cocoa
 
-typealias HeaderFooterOperateCallBack = (_ obj: KMHeaderFooterObject) -> ()
+typealias HeaderFooterOperateCallBack = (_ obj: KMHeaderFooterModel) -> ()
 
 class KMHeaderFooterManagerWindowController: NSWindowController{
     var operateCallBack: HeaderFooterOperateCallBack?
@@ -21,18 +21,18 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
     var password: String = ""
     var type:KMBatchModifyTemplateType = .Add
     var pdfdocument: CPDFDocument?
-    lazy var headerFooterObj: KMHeaderFooterObject? = {
-        let obj = KMHeaderFooterObject()
+    lazy var headerFooterObj: KMHeaderFooterModel? = {
+        let obj = KMHeaderFooterModel()
         obj.isBates = self.isBates
         if self.isBates {
-            obj.headerFooterID = KMHeaderFooterManager.defaultManager.fetchBatesAvailableName()
+            obj.id = KMHeaderFooterManager.defaultManager.fetchBatesAvailableName()
         }else {
-            obj.headerFooterID = KMHeaderFooterManager.defaultManager.fetchHeaderFooterAvailableName()
+            obj.id = KMHeaderFooterManager.defaultManager.fetchHeaderFooterAvailableName()
         }
-        initialID = obj.headerFooterID
+        initialID = obj.id
         return obj
     }()
-    var originalHeaderFooterObj: KMHeaderFooterObject?
+    var originalHeaderFooterObj: KMHeaderFooterModel?
     lazy var dateFormatArray: Array<Any> = {
         let arr = KMHeaderFooterManager.defaultManager.dateFormatArray
         return arr
@@ -121,13 +121,13 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
         DistributedNotificationCenter.default().removeObserver(self)
     }
     
-    convenience init(baseFile:String, obj:KMHeaderFooterObject, password:String, type:KMBatchModifyTemplateType) {
+    convenience init(baseFile:String, obj:KMHeaderFooterModel, password:String, type:KMBatchModifyTemplateType) {
         self.init(windowNibName: "KMHeaderFooterManagerWindowController")
         self.filePath = baseFile
         self.password = password
         self.headerFooterObj = obj
         self.originalHeaderFooterObj = obj
-        self.initialID = obj.headerFooterID
+        self.initialID = obj.id
         self.type = type
         self.pdfdocument = CPDFDocument(url: URL(fileURLWithPath: self.filePath))
         if ((self.pdfdocument?.isLocked) != nil) {
@@ -172,7 +172,7 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
             // textView.layer?.borderColor = NSColor.gridColor.cgColor
         }
         
-        textColorWell.color = headerFooterObj?.textColor ?? .black
+        textColorWell.color = headerFooterObj?.getTextColor() ?? .black
         pdfView.document = pdfdocument
 //        pdfView. = headerFooterObj
         pdfView.autoScales = true
@@ -235,10 +235,10 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
         self.rightMarginTextField.stringValue = String(format: "%ld", self.headerFooterObj?.rightMargin ?? 0)
         self.topMargintextField.stringValue = String(format: "%ld", self.headerFooterObj?.topMargin ?? 0)
         self.bottomMarginTextField.stringValue = String(format: "%ld", self.headerFooterObj?.bottomMargin ?? 0)
-        self.leftMarginStepper.integerValue = self.headerFooterObj?.leftMargin ?? 0
-        self.rightMarginStepper.integerValue = self.headerFooterObj?.rightMargin ?? 0
-        self.topMarginStepper.integerValue = self.headerFooterObj?.topMargin ?? 0
-        self.bottomMarginStepper.integerValue = self.headerFooterObj?.bottomMargin ?? 0
+        self.leftMarginStepper.integerValue = Int(self.headerFooterObj?.leftMargin ?? 0)
+        self.rightMarginStepper.integerValue = Int(self.headerFooterObj?.rightMargin ?? 0)
+        self.topMarginStepper.integerValue = Int(self.headerFooterObj?.topMargin ?? 0)
+        self.bottomMarginStepper.integerValue = Int(self.headerFooterObj?.bottomMargin ?? 0)
 
         var fontSizeArray = NSMutableArray()
         for i in 0..<self.fontSizeCombobox.objectValues.count {
@@ -247,11 +247,11 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
         }
         self.fontSizeCombobox.removeAllItems()
         self.fontSizeCombobox.addItems(withObjectValues: fontSizeArray as! [Any])
-        let index = self.fontSizeCombobox.indexOfItem(withObjectValue: self.headerFooterObj?.fontSize ?? 0.0)
+        let index = self.fontSizeCombobox.indexOfItem(withObjectValue: self.headerFooterObj?.getTextFontSize() ?? 0.0)
         if (index == NSNotFound) {
             self.fontSizeCombobox.selectItem(at: index)
         } else {
-            self.fontSizeCombobox.integerValue = Int(self.headerFooterObj?.fontSize ?? 0)
+            self.fontSizeCombobox.integerValue = Int(self.headerFooterObj?.getTextFontSize() ?? 0)
         }
 
         self.dateFormateCombobox.removeAllItems()
@@ -293,20 +293,20 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
         if isContain3 {
             self.batesStartpageCombobox.selectItem(withObjectValue: obj3)
         }
-        if .All == self.headerFooterObj?.pageChoice {
+        if .all == self.headerFooterObj?.pageRangeType {
             self.pageRangeCombobox.isEditable = false
             self.pageRangeCombobox.selectItem(at: 0)
-        } else if .Odd == self.headerFooterObj?.pageChoice {
-            self.pageRangeCombobox.isEditable = false 
+        } else if .odd == self.headerFooterObj?.pageRangeType {
+            self.pageRangeCombobox.isEditable = false
             self.pageRangeCombobox.selectItem(at: 1)
-        } else if .Even == self.headerFooterObj?.pageChoice {
+        } else if .even == self.headerFooterObj?.pageRangeType {
             self.pageRangeCombobox.isEditable = false
             self.pageRangeCombobox.selectItem(at: 2)
-        } else if .Input == self.headerFooterObj?.pageChoice {
+        } else if .other == self.headerFooterObj?.pageRangeType {
             self.pageRangeCombobox.isEditable = true
             self.pageRangeCombobox.selectItem(at: 3)
-            self.pageRangeCombobox.stringValue = self.headerFooterObj?.pagesString ?? ""
-            let sting = self.headerFooterObj?.pagesString
+            self.pageRangeCombobox.stringValue = self.headerFooterObj?.pageRangeString ?? ""
+            let sting = self.headerFooterObj?.pageRangeString
             if sting?.count ?? 0 > 0 {
                 let array = sting?.components(separatedBy: ",") ?? []
                 var pagesString = ""
@@ -326,7 +326,7 @@ class KMHeaderFooterManagerWindowController: NSWindowController{
         self.bottomLeftTextView.string = self.headerFooterObj?.bottomLeftString ?? ""
         self.BottomCenterTextView.string = self.headerFooterObj?.bottomCenterString ?? ""
         self.bottomRightTextView.string = self.headerFooterObj?.bottomRightString ?? ""
-        self.templateNameTextField.stringValue = self.headerFooterObj?.headerFooterID ?? ""
+        self.templateNameTextField.stringValue = self.headerFooterObj?.id ?? ""
         if self.topLeftTextView.string.count <= 0 && self.topCenterTextView.string.count <= 0 && self.topRightTextView.string.count <= 0 && self.bottomLeftTextView.string.count <= 0 && self.BottomCenterTextView.string.count <= 0 && self.bottomRightTextView.string.count <= 0 {
             self.applyButton.isEnabled = false
         } else {

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/HeaderFooter/Tools/KMDataVersionManager.swift

@@ -19,7 +19,7 @@ class KMDataVersionManager: NSObject{
         return false
     }
     
-    class func refrshBatesData(bates: KMHeaderFooterObject?) -> KMHeaderFooterObject? {
+    class func refrshBatesData(bates: KMHeaderFooterModel?) -> KMHeaderFooterModel? {
         if bates == nil {
             return nil
         }
@@ -37,7 +37,7 @@ class KMDataVersionManager: NSObject{
         bates!.bottomRightString = KMDataVersionManager.newBateString(oldString: bates!.bottomRightString, bates: bates!, match: str)
         return bates
     }
-    class func newBateString(oldString: String, bates: KMHeaderFooterObject, match: String) -> String {
+    class func newBateString(oldString: String, bates: KMHeaderFooterModel, match: String) -> String {
         let regex = try! NSRegularExpression(pattern: match, options: []) 
         let results = regex.matches(in: oldString, options: [], range: NSRange(location: 0, length: oldString.count))
         var newString = oldString

+ 12 - 222
PDF Office/PDF Master/Class/PDFTools/HeaderFooter/Tools/KMHeaderFooterManager.swift

@@ -9,216 +9,6 @@ import Cocoa
 
 let kHeaderFooterInfoSaveKey = "kHeaderFooterInfoSaveKey"
 
-class KMHeaderFooterObject: NSObject, NSCopying, NSCoding{
-    var type: KMBatchHeaderFooterType = .HeaderFooter
-    var leftMargin: Int = 30
-    var rightMargin: Int = 30
-    var bottomMargin: Int = 30
-    var topMargin: Int = 30
-    var topLeftString: String = ""
-    var topCenterString: String = ""
-    var topRightString: String = ""
-    var bottomLeftString: String = ""
-    var bottomCenterString: String = ""
-    var bottomRightString: String = ""
-    var startString: String = "1"
-    var fontSize: CGFloat = 16.0
-    var textColor: NSColor = .black
-    var pagesString: String = ""
-    var isBates: Bool = false
-    var batesPrefixString: String = ""
-    var batesSuffixString: String = ""
-    var batesDigits: Int = 0
-    var hasHeader: Bool = false
-    var hasFooter: Bool = false
-    var cellHeight: CGFloat = 0.0{
-        willSet{
-            
-        }
-        didSet {
-            if cellHeight < 0.1 {
-                var baseHeight: CGFloat = 33.0 + 24.0
-                if self.topLeftString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                if topCenterString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                if topRightString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                if bottomLeftString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                if bottomCenterString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                if bottomRightString.count > 0 {
-                    baseHeight += 20.0
-                }
-                
-                baseHeight -= 4.0
-                cellHeight = baseHeight
-            }
-        }
-    }
-    var headerFooterID: String = ""
-    var pageChoice: KMBatchOperatePageChoice = .All
-    var dateFormatString: String = "m/d"
-    var pageFormatString: String = "1"
-    
-    override init() {
-        super.init()
-        self.topLeftString = ""
-        self.topCenterString = ""
-        self.topRightString = ""
-        self.bottomLeftString = ""
-        self.bottomCenterString = ""
-        self.bottomRightString = ""
-        self.startString = ""
-        self.pagesString = ""
-        self.batesPrefixString = ""
-        self.batesSuffixString = ""
-        self.headerFooterID = ""
-        self.fontSize = 16.0
-        self.dateFormatString = "m/d"
-        self.startString = "1"
-        self.pageFormatString = "1"
-        self.textColor = .black
-        self.leftMargin = 30
-        self.rightMargin = 30
-        self.topMargin = 30
-        self.bottomMargin = 30
-    }
-    
-    func copy(with zone: NSZone? = nil) -> Any {
-        var obj: KMHeaderFooterObject  = KMHeaderFooterObject()
-        obj.type = self.type
-        obj.leftMargin = self.leftMargin
-        obj.rightMargin = self.rightMargin
-        obj.bottomMargin = self.bottomMargin
-        obj.topMargin = self.topMargin
-        obj.topLeftString = self.topLeftString
-        obj.topCenterString = self.topCenterString
-        obj.topRightString = self.topRightString
-        obj.bottomLeftString = self.bottomLeftString
-        obj.bottomCenterString = self.bottomCenterString
-        obj.bottomRightString = self.bottomRightString
-        obj.startString = self.startString
-        obj.fontSize = self.fontSize
-        obj.textColor = self.textColor
-        obj.pagesString = self.pagesString
-        obj.isBates = self.isBates
-        obj.batesPrefixString = self.batesPrefixString
-        obj.batesSuffixString = self.batesSuffixString
-        obj.batesDigits = self.batesDigits
-        obj.headerFooterID = self.headerFooterID
-        obj.hasHeader = self.hasHeader
-        obj.hasFooter = self.hasFooter
-        obj.pageChoice = self.pageChoice
-        obj.pageFormatString = self.pageFormatString
-        obj.dateFormatString = self.dateFormatString
-        return obj;
-    }
-    
-    func encode(with coder: NSCoder) {
-        coder.encode(self.type.rawValue, forKey: "type")
-        coder.encode(self.leftMargin, forKey: "leftMargin")
-        coder.encode(self.rightMargin, forKey: "rightMargin")
-        coder.encode(self.bottomMargin, forKey: "bottomMargin")
-        coder.encode(self.topMargin, forKey: "topMargin")
-        
-        coder.encode(self.topLeftString, forKey: "topLeftString")
-        
-        coder.encode(self.topCenterString, forKey: "topCenterString")
-        coder.encode(self.topRightString, forKey: "topRightString")
-        coder.encode(self.bottomLeftString, forKey: "bottomLeftString")
-        coder.encode(self.bottomCenterString, forKey: "bottomCenterString")
-        coder.encode(self.bottomRightString, forKey: "bottomRightString")
-        coder.encode(self.startString, forKey: "startString")
-        coder.encode(self.fontSize, forKey: "fontSize")
-        coder.encode(self.textColor, forKey: "textColor")
-        
-        coder.encode(self.pagesString, forKey: "pagesString")
-        coder.encode(self.isBates, forKey: "isBates")
-        coder.encode(self.batesPrefixString, forKey: "batesPrefixString")
-        coder.encode(self.batesSuffixString, forKey: "batesSuffixString")
-        coder.encode(self.batesDigits, forKey: "batesDigits")
-        coder.encode(self.hasHeader, forKey: "hasHeader")
-        coder.encode(self.hasFooter, forKey: "hasFooter")
-        coder.encode(self.cellHeight, forKey: "cellHeight")
-        coder.encode(self.headerFooterID, forKey: "headerFooterID")
-        coder.encode(self.pageChoice, forKey: "pageChoice")
-        coder.encode(self.dateFormatString, forKey: "dateFormatString")
-        coder.encode(self.pageFormatString, forKey: "pageFormatString")
-    }
-    
-    required init?(coder: NSCoder) {
-        type = KMBatchHeaderFooterType(rawValue: coder.decodeInteger(forKey: "type")) ?? .HeaderFooter
-        leftMargin = coder.decodeInteger(forKey: "leftMargin")
-        rightMargin = coder.decodeInteger(forKey: "rightMargin")
-        bottomMargin = coder.decodeInteger(forKey: "bottomMargin")
-        topMargin = coder.decodeInteger(forKey: "topMargin")
-        topLeftString = coder.decodeObject(forKey: "topLeftString") as! String
-        topCenterString = coder.decodeObject(forKey: "topCenterString") as! String
-        topRightString = coder.decodeObject(forKey: "topRightString") as! String
-        
-        bottomLeftString = coder.decodeObject(forKey: "bottomLeftString") as! String
-        bottomCenterString = coder.decodeObject(forKey: "bottomCenterString") as! String
-        bottomRightString = coder.decodeObject(forKey: "bottomCenterString") as! String
-        startString = coder.decodeObject(forKey: "startString") as! String
-        fontSize = CGFloat(coder.decodeFloat(forKey: "fontSize"))
-        textColor = coder.decodeObject(forKey: "textColor") as! NSColor
-        pagesString = coder.decodeObject(forKey: "pagesString") as! String
-        isBates = coder.decodeBool(forKey: "isBates")
-        batesPrefixString = coder.decodeObject(forKey: "batesPrefixString") as! String
-        batesSuffixString = coder.decodeObject(forKey: "batesSuffixString") as! String
-        batesDigits = coder.decodeInteger(forKey: "batesDigits")
-        hasHeader = coder.decodeBool(forKey: "hasHeader")
-        hasFooter = coder.decodeBool(forKey: "hasFooter")
-        cellHeight = CGFloat(coder.decodeFloat(forKey: "cellHeight"))
-        headerFooterID = coder.decodeObject(forKey: "headerFooterID") as! String
-        pageChoice = KMBatchOperatePageChoice(rawValue: coder.decodeInteger(forKey: "pageChoice")) ?? .All
-        dateFormatString = coder.decodeObject(forKey: "dateFormatString") as! String
-        pageFormatString =  coder.decodeObject(forKey: "pageFormatString") as! String
-    }
-    
-    func copyData(dataObj: KMHeaderFooterObject) {
-        type = dataObj.type
-        leftMargin = dataObj.leftMargin
-        rightMargin = dataObj.rightMargin
-        bottomMargin = dataObj.bottomMargin
-        topMargin = dataObj.topMargin
-        topLeftString = dataObj.topLeftString
-        topCenterString = dataObj.topCenterString
-        topRightString = dataObj.topRightString
-        bottomLeftString = dataObj.bottomLeftString
-        bottomCenterString = dataObj.bottomCenterString
-        bottomRightString = dataObj.bottomRightString
-        startString = dataObj.startString
-        fontSize = dataObj.fontSize
-        textColor = dataObj.textColor
-        pagesString = dataObj.pagesString
-        isBates = dataObj.isBates
-        batesPrefixString = dataObj.batesPrefixString
-        batesSuffixString = dataObj.batesSuffixString
-        batesDigits = dataObj.batesDigits
-        hasHeader = dataObj.hasHeader
-        hasFooter = dataObj.hasFooter
-        cellHeight = dataObj.cellHeight
-        headerFooterID = dataObj.headerFooterID
-        pageChoice = dataObj.pageChoice
-        dateFormatString = dataObj.dateFormatString
-        pageFormatString = dataObj.pageFormatString
-    }
-}
-
-
 class KMHeaderFooterManager: NSObject, NSCoding{
     
     
@@ -243,12 +33,12 @@ class KMHeaderFooterManager: NSObject, NSCoding{
     }
     
     required init?(coder: NSCoder) {
-        self.headFooterObjects = coder.decodeObject(forKey: "headFooterObjects") as? [KMHeaderFooterObject]
+        self.headFooterObjects = coder.decodeObject(forKey: "headFooterObjects") as? [KMHeaderFooterModel]
     }
     
     var datas: Array<KMHeaderFooterModel> = []
     
-    var headFooterObjects: [KMHeaderFooterObject]?
+    var headFooterObjects: [KMHeaderFooterModel]?
     
     lazy var dateFormatArray: Array = {
         let arr = [
@@ -279,8 +69,8 @@ class KMHeaderFooterManager: NSObject, NSCoding{
         return arr
     }()
     
-    lazy var onlyBatesObjects: [KMHeaderFooterObject] = {
-        var arr: [KMHeaderFooterObject] = Array<KMHeaderFooterObject>()
+    lazy var onlyBatesObjects: [KMHeaderFooterModel] = {
+        var arr: [KMHeaderFooterModel] = Array<KMHeaderFooterModel>()
         for i in 0..<(headFooterObjects?.count ?? 0) {
             let obj = headFooterObjects?[i]
             if KMDataVersionManager.updateBatesData() {
@@ -294,8 +84,8 @@ class KMHeaderFooterManager: NSObject, NSCoding{
         }
         return arr
     }()
-    lazy var onlyHeaderFooterObjects: [KMHeaderFooterObject] = {
-        var arr: [KMHeaderFooterObject] = Array<KMHeaderFooterObject>()
+    lazy var onlyHeaderFooterObjects: [KMHeaderFooterModel] = {
+        var arr: [KMHeaderFooterModel] = Array<KMHeaderFooterModel>()
         for i in 0..<(headFooterObjects?.count ?? 0) {
             let obj = headFooterObjects?[i]
             
@@ -337,7 +127,7 @@ class KMHeaderFooterManager: NSObject, NSCoding{
     
     func fetchBatesAvailableName() -> String {
         var availableIndex = 0
-        let nameArray = converArrType(arr: onlyBatesObjects, keyString: "headerFooterID")
+        let nameArray = converArrType(arr: onlyBatesObjects, keyString: "id")
         for i in 0..<nameArray.count {
             let string = nameArray[i]
             if string.hasPrefix("Bates") {
@@ -352,7 +142,7 @@ class KMHeaderFooterManager: NSObject, NSCoding{
     
     func fetchHeaderFooterAvailableName() -> String {
         var availableIndex = 0
-        let nameArray = converArrType(arr: onlyHeaderFooterObjects, keyString: "headerFooterID")
+        let nameArray = converArrType(arr: onlyHeaderFooterObjects, keyString: "id")
         for i in 0..<nameArray.count {
             let string = nameArray[i]
             if string.hasPrefix("HeaderFooter") {
@@ -365,10 +155,10 @@ class KMHeaderFooterManager: NSObject, NSCoding{
         return  String(format: "HeaderFooter%ld", availableIndex)
     }
     
-    func converArrType(arr: Array<KMHeaderFooterObject>, keyString: String) -> [String] {
-        var newArr = NSMutableArray()
+    func converArrType(arr: Array<KMHeaderFooterModel>, keyString: String) -> [String] {
+        let newArr = NSMutableArray()
         for item in arr {
-            newArr.add(item.headerFooterID)
+            newArr.add(item.id)
         }
         return newArr as! [String]
     }
@@ -510,7 +300,7 @@ class KMHeaderFooterManager: NSObject, NSCoding{
         
         return result
     }
-    func removeHeaderFooter(_ obj: KMHeaderFooterObject) {
+    func removeHeaderFooter(_ obj: KMHeaderFooterModel) {
         self.headFooterObjects?.removeObject(obj) 
         self.store()
     }