Bläddra i källkod

转档-转图片,调整UI和调式转图片功能

tangchao 1 år sedan
förälder
incheckning
09dae3f8e0

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

@@ -695,32 +695,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "22756FA1-2E30-4915-8094-A4AE69967E1D"
+            uuid = "96FF0BAE-03A6-4564-8E5E-6AE8AA30BDE4"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFTools/Convert/Controller/KMConvertWordWindowController.swift"
+            filePath = "PDF Master/Class/PDFTools/Convert/Common/KMPDFConvert.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "33"
-            endingLineNumber = "33"
-            landmarkName = "windowDidLoad()"
+            startingLineNumber = "75"
+            endingLineNumber = "75"
+            landmarkName = "pathExtension(_:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "CEAB6BB6-1EDA-4C13-8BB9-BF9E6CCAD87E"
+            uuid = "38CA5288-0CE3-425B-A3B4-32F079D6203B"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFTools/Convert/Controller/KMConvertWordWindowController.swift"
+            filePath = "PDF Master/Class/PDFTools/Convert/Common/KMPDFConvert.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "36"
-            endingLineNumber = "36"
-            landmarkName = "windowDidLoad()"
+            startingLineNumber = "518"
+            endingLineNumber = "518"
+            landmarkName = "startConvert()"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 23 - 25
PDF Office/PDF Master/Class/PDFTools/Convert/Common/KMPDFConvert.swift

@@ -118,17 +118,21 @@ class KMPDFConvert: Operation {
             return
         }
         
-        var pathExtension = KMPDFConvert.pathExtension(self.convertType, self.isExtractTable)
+        let pathExtension = KMPDFConvert.pathExtension(self.convertType, self.isExtractTable)
         var fileName = outputFileName
         var path = outputFolderPath
         
         
         if convertType == .jpeg || convertType == .jpg || convertType == .png || convertType == .gif || convertType == .tga || convertType == .bmp || convertType == .jp2 || convertType == .tiff {
-            path.append("/")
-            path.append(fileName)
-//            let folderPath = getUniqueFilePath(filePath: path)
-            try?FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: false)
-            outputFilePath = path
+            if (self.convertType == .jpeg || self.convertType == .png) {
+                self.outputFilePath = "\(path)/\(fileName).zip"
+            } else {
+                path.append("/")
+                path.append(fileName)
+    //            let folderPath = getUniqueFilePath(filePath: path)
+                try?FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: false)
+                outputFilePath = path
+            }
         } else {
             if !pathExtension.isEmpty {
                 fileName.append(".")
@@ -338,28 +342,22 @@ class KMPDFConvertImage: KMPDFConvert {
             self.convertSuccessful(isSuccessful: false, errorInfo: nil)
             return
         }
-        //        if (convertType == .jpeg || convertType == .png) {
-        //            converter = CPDFConverterImg(url: URL(fileURLWithPath: filePath), password: nil)
-        //            converter.delegate = self
-        //            let options = CPDFConvertImgOptions()
-        //            if (convertType == .jpeg) {
-        //                options.type = .JPEG
-        //            } else if (convertType == .png) {
-        //                options.type = .PNG
-        //            }
-                    
-        //            converter.convert(toFilePath: outputFilePath, pageIndexs: pages, options: options)
-        //            return
-        //        }
+        
+        if (self.convertType == .jpeg || self.convertType == .png) {
+            converter = CPDFConverterImg(url: URL(fileURLWithPath: filePath), password: self.password)
+            converter.delegate = self
+            let options = CPDFConvertImgOptions()
+            options.type = self.imageType
+            options.imageDpi = Int32(self.imageDpi)
+            options.isContainAnnotations = true
+            
+            converter.convert(toFilePath: outputFilePath, pageIndexs: pages, options: options)
+            return
+        }
                 
         self.fpPDFConverter = CPDFConverterFP()
         self.fpPDFConverter.setDelegate(self)
-        var dpi: Int = 0
-        if self.options != nil {
-            dpi = self.options[KMPDFConvertOptionsKeyImageDPI] as! Int
-        }
-        let options: [String : Any] = [CPDFConvertOptionsKey.imageDPI.rawValue : dpi,
-                                     CPDFConvertOptionsKey.allInOneSheet.rawValue : self.isAllInOneSheet]
+        let options: [String : Any] = [CPDFConvertOptionsKey.imageDPI.rawValue : self.imageDpi]
         self.fpPDFConverter.convertPDF(atPath: self.filePath, pdfPassword: self.password, pdfPageIndexs: self.pages, destDocType: self.pathExtension, destDocPath: self.outputFilePath, moreOptions: options)
     }
 }

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/Controller/KMConvertBaseWindowController.swift

@@ -111,7 +111,7 @@ class KMConvertBaseWindowController: KMBaseWindowController {
         
         let view = self.initSettingView()
         view?.frame = self.rightScrollView.bounds
-        view?.autoresizingMask = [.width, .height]
+//        view?.autoresizingMask = [.width, .height]
         self.settingView = view
         self.rightScrollView.documentView = view
 

+ 10 - 42
PDF Office/PDF Master/Class/PDFTools/Convert/Controller/KMConvertBaseWindowController.xib

@@ -457,47 +457,21 @@
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="BdL-XS-WcI">
-                    <rect key="frame" x="0.0" y="142" width="276" height="100"/>
+                    <rect key="frame" x="0.0" y="162" width="276" height="80"/>
                     <view key="contentView" id="hsK-Lh-UaS">
-                        <rect key="frame" x="0.0" y="0.0" width="276" height="100"/>
+                        <rect key="frame" x="0.0" y="0.0" width="276" height="80"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ezu-db-Vdi">
-                                <rect key="frame" x="14" y="85" width="35" height="15"/>
+                                <rect key="frame" x="14" y="65" width="35" height="15"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="50D-1S-EUR">
                                     <font key="font" metaFont="cellTitle"/>
                                     <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                     <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 </textFieldCell>
                             </textField>
-                            <comboBox hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="A3v-M6-Ruh">
-                                <rect key="frame" x="24" y="50" width="215" height="25"/>
-                                <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="KT9-cv-uGO">
-                                    <font key="font" metaFont="system"/>
-                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    <objectValues>
-                                        <string>Item 1</string>
-                                        <string>Item 2</string>
-                                        <string>Item 3</string>
-                                    </objectValues>
-                                </comboBoxCell>
-                            </comboBox>
-                            <comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yhD-91-oLg">
-                                <rect key="frame" x="24" y="13" width="215" height="25"/>
-                                <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="TKk-wg-Ocx">
-                                    <font key="font" metaFont="system"/>
-                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    <objectValues>
-                                        <string>Item 1</string>
-                                        <string>Item 2</string>
-                                        <string>Item 3</string>
-                                    </objectValues>
-                                </comboBoxCell>
-                            </comboBox>
                             <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="bdw-IP-gzr">
-                                <rect key="frame" x="16" y="43" width="244" height="32"/>
+                                <rect key="frame" x="16" y="23" width="244" height="32"/>
                                 <view key="contentView" id="8Ci-rA-CBy">
                                     <rect key="frame" x="0.0" y="0.0" width="244" height="32"/>
                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -505,28 +479,23 @@
                                 <constraints>
                                     <constraint firstAttribute="height" constant="32" id="xlm-kX-JOU"/>
                                 </constraints>
+                                <color key="fillColor" name="findHighlightColor" catalog="System" colorSpace="catalog"/>
                             </box>
                         </subviews>
                         <constraints>
-                            <constraint firstAttribute="trailing" secondItem="A3v-M6-Ruh" secondAttribute="trailing" constant="40" id="31F-UX-aqY"/>
-                            <constraint firstItem="A3v-M6-Ruh" firstAttribute="leading" secondItem="hsK-Lh-UaS" secondAttribute="leading" constant="24" id="51i-wJ-nZa"/>
-                            <constraint firstAttribute="trailing" secondItem="yhD-91-oLg" secondAttribute="trailing" constant="40" id="G7L-iz-IK7"/>
-                            <constraint firstItem="A3v-M6-Ruh" firstAttribute="top" secondItem="Ezu-db-Vdi" secondAttribute="bottom" constant="12" id="T99-Fr-nzb"/>
                             <constraint firstItem="bdw-IP-gzr" firstAttribute="top" secondItem="Ezu-db-Vdi" secondAttribute="bottom" constant="10" id="UwL-fe-Pil"/>
-                            <constraint firstItem="yhD-91-oLg" firstAttribute="top" secondItem="A3v-M6-Ruh" secondAttribute="bottom" constant="18" id="YcY-EX-VwX"/>
                             <constraint firstAttribute="trailing" secondItem="bdw-IP-gzr" secondAttribute="trailing" constant="16" id="bdK-TR-zR3"/>
                             <constraint firstItem="Ezu-db-Vdi" firstAttribute="top" secondItem="hsK-Lh-UaS" secondAttribute="top" id="dgf-xq-ZM4"/>
                             <constraint firstItem="Ezu-db-Vdi" firstAttribute="leading" secondItem="hsK-Lh-UaS" secondAttribute="leading" constant="16" id="f8g-fA-jqu"/>
                             <constraint firstItem="bdw-IP-gzr" firstAttribute="leading" secondItem="hsK-Lh-UaS" secondAttribute="leading" constant="16" id="ijL-4N-obl"/>
-                            <constraint firstItem="yhD-91-oLg" firstAttribute="leading" secondItem="hsK-Lh-UaS" secondAttribute="leading" constant="24" id="whZ-Le-nko"/>
                         </constraints>
                     </view>
                     <constraints>
-                        <constraint firstAttribute="height" constant="100" id="v6N-X0-w3C"/>
+                        <constraint firstAttribute="height" constant="80" id="v6N-X0-w3C"/>
                     </constraints>
                 </box>
                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Qeu-kB-TgR">
-                    <rect key="frame" x="0.0" y="54" width="276" height="80"/>
+                    <rect key="frame" x="0.0" y="82" width="276" height="80"/>
                     <view key="contentView" id="bks-fY-FWr">
                         <rect key="frame" x="0.0" y="0.0" width="276" height="80"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -548,6 +517,7 @@
                                 <constraints>
                                     <constraint firstAttribute="height" constant="32" id="kKM-aX-poc"/>
                                 </constraints>
+                                <color key="fillColor" name="findHighlightColor" catalog="System" colorSpace="catalog"/>
                             </box>
                         </subviews>
                         <constraints>
@@ -563,7 +533,7 @@
                     </constraints>
                 </box>
                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="X3f-Tt-Yj7">
-                    <rect key="frame" x="0.0" y="-6" width="276" height="60"/>
+                    <rect key="frame" x="0.0" y="22" width="276" height="60"/>
                     <view key="contentView" id="saE-C0-GVL">
                         <rect key="frame" x="0.0" y="0.0" width="276" height="60"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -582,7 +552,7 @@
                 <constraint firstAttribute="trailing" secondItem="BdL-XS-WcI" secondAttribute="trailing" id="Jbj-Xq-LTH"/>
                 <constraint firstItem="X3f-Tt-Yj7" firstAttribute="leading" secondItem="Aiu-IG-eq4" secondAttribute="leading" id="b6X-uh-fIb"/>
                 <constraint firstItem="Qeu-kB-TgR" firstAttribute="bottom" secondItem="X3f-Tt-Yj7" secondAttribute="top" id="jxx-4U-yGY"/>
-                <constraint firstItem="Qeu-kB-TgR" firstAttribute="top" secondItem="BdL-XS-WcI" secondAttribute="bottom" constant="8" id="zM9-ld-wvj"/>
+                <constraint firstItem="Qeu-kB-TgR" firstAttribute="top" secondItem="BdL-XS-WcI" secondAttribute="bottom" id="zM9-ld-wvj"/>
             </constraints>
             <connections>
                 <outlet property="dpiSelectBox" destination="gLw-Yq-V5x" id="WJd-eG-HHe"/>
@@ -590,9 +560,7 @@
                 <outlet property="dpiTitleLabel" destination="F2Q-wA-eBY" id="OEm-6a-ANu"/>
                 <outlet property="fileTypeTitleLabel" destination="Ezu-db-Vdi" id="BKC-bU-Xeh"/>
                 <outlet property="formatBox" destination="bdw-IP-gzr" id="g0c-Lu-e1t"/>
-                <outlet property="formatComboBox" destination="A3v-M6-Ruh" id="m2a-Q7-jo7"/>
                 <outlet property="pageRangeBox" destination="X3f-Tt-Yj7" id="S9g-R8-qtP"/>
-                <outlet property="resolutionComboBox" destination="yhD-91-oLg" id="Akf-kc-ues"/>
                 <outlet property="topBoxHeightConst" destination="v6N-X0-w3C" id="dp2-Io-elP"/>
             </connections>
             <point key="canvasLocation" x="118" y="839.5"/>

+ 21 - 3
PDF Office/PDF Master/Class/PDFTools/Convert/Controller/KMConvertImageWindowController.swift

@@ -5,8 +5,6 @@
 //  Created by tangchao on 2022/12/6.
 //
 
-import Cocoa
-
 class KMConvertImageWindowController: KMConvertBaseWindowController {
     
     override func initDefaultValue() {
@@ -23,6 +21,14 @@ class KMConvertImageWindowController: KMConvertBaseWindowController {
         return KMPDFConvertImage()
     }
     
+    override var fileExtension: String {
+        let settingView: KMConvertImageSettingView = self.settingView as! KMConvertImageSettingView
+        if (settingView.selectedFormatIndex == 0 || settingView.selectedFormatIndex == 2) {
+            return "zip"
+        }
+        return super.fileExtension
+    }
+    
     override func convertModelAppendParams(convert: KMPDFConvert) {
         let settingView: KMConvertImageSettingView = self.settingView as! KMConvertImageSettingView
         
@@ -62,6 +68,18 @@ class KMConvertImageWindowController: KMConvertBaseWindowController {
         } else {
             dpi = 150
         }
-        convert.options = [KMPDFConvertOptionsKeyImageDPI : dpi, KMPDFConvertOptionsKeyImageWithAnnotation : true]
+        
+        if let _convert = convert as? KMPDFConvertImage {
+            if (convert.convertType == .jpeg) {
+                _convert.imageType = .JPEG
+                _convert.imageDpi = dpi
+                
+            } else if (convert.convertType == .png) {
+                _convert.imageType = .PNG
+                _convert.imageDpi = dpi
+            } else {
+                _convert.imageDpi = 150
+            }
+        }
     }
 }

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertCSVSettingView.swift

@@ -52,7 +52,7 @@ class KMConvertCSVSettingView: KMConvertSettingView {
         pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
         pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
         pageRangeBox.contentView = pageRangeItemView
-        self.pageRangeItemView = pageRangeItemView
+//        self.pageRangeItemView = pageRangeItemView
         pageRangeItemView?.isTextDidEndCallback = true
         pageRangeItemView?.pageCount = self.pageCount
         

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertExcelSettingView.swift

@@ -112,7 +112,7 @@ class KMConvertExcelSettingView: KMConvertSettingView {
         pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
         pageRangeBox.contentView = pageRangeItemView
         pageRangeItemView?.isTextDidEndCallback = true
-        self.pageRangeItemView = pageRangeItemView
+//        self.pageRangeItemView = pageRangeItemView
         pageRangeItemView?.pageCount = self.pageCount
         
         pageRangeItemView?.itemClick = { [unowned self] index, _ in

+ 28 - 48
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertImageSettingView.swift

@@ -7,12 +7,8 @@
 
 class KMConvertImageSettingView: KMConvertSettingView {
     @IBOutlet weak var fileTypeTitleLabel: NSTextField!
-    @IBOutlet weak var formatComboBox: NSComboBox!
-    @IBOutlet weak var resolutionComboBox: NSComboBox!
-    
     @IBOutlet weak var formatBox: NSBox!
     @IBOutlet weak var pageRangeBox: NSBox!
-    @IBOutlet weak var topBoxHeightConst: NSLayoutConstraint!
     
     @IBOutlet weak var dpiTitleLabel: NSTextField!
     @IBOutlet weak var dpiSelectBox: NSBox!
@@ -23,17 +19,14 @@ class KMConvertImageSettingView: KMConvertSettingView {
     var selectedFormatIndex = 0
     var selectedResolutionIndex = 3
     
-    override func awakeFromNib() {
-        super.awakeFromNib()
-        
-        self.fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "")
-        self.fileTypeTitleLabel.textColor = NSColor(hex: "#616469")
-        self.fileTypeTitleLabel.font = .SFProTextSemibold(12)
+    override func initSubViews() {
+        super.initSubViews()
         
         self.formartView = KMDesignSelect.init(withType: .Combox)
-        self.formatBox.fillColor = .clear
         self.formatBox.contentView = self.formartView!.view
         
+        self.formartView = KMDesignSelect.init(withType: .Combox)
+        self.formatBox.contentView = self.formartView!.view
         self.formartView?.removeAllItems()
         self.formartView?.addItems(withObjectValues: ["JPEG","JPG","PNG","GIF","TIFF","TGA","BMP","JPEG-2000"])
         self.formartView?.selectItem(at: 0)
@@ -41,10 +34,6 @@ class KMConvertImageSettingView: KMConvertSettingView {
         self.formartView?.delete = self
         self.formartView?.updateUI()
         
-        self.dpiTitleLabel.stringValue = NSLocalizedString("Resolution", comment: "")
-        self.dpiTitleLabel.textColor = NSColor(hex: "#616469")
-        self.dpiTitleLabel.font = .SFProTextBold(12)
-        
         self.dpiVC = KMDesignSelect(withType: .Combox)
         self.dpiSelectBox.contentView = self.dpiVC?.view
         self.dpiVC?.removeAllItems()
@@ -52,44 +41,29 @@ class KMConvertImageSettingView: KMConvertSettingView {
         self.dpiVC?.selectItem(at: self.selectedResolutionIndex)
         self.dpiVC?.delete = self
         self.dpiVC?.updateUI()
+    }
+    
+    override func initDefaultVlaue() {
+        self.formatBox.fillColor = .clear
         
-        self.topBoxHeightConst.constant = 80
-        self.resolutionComboBox.isHidden = true
+        self.fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "")
+        self.fileTypeTitleLabel.textColor = NSColor(hex: "#616469")
+        self.fileTypeTitleLabel.font = .SFProTextSemibold(12)
+        
+        self.formatBox.fillColor = .clear
+        
+        self.dpiTitleLabel.stringValue = NSLocalizedString("Resolution", comment: "")
+        self.dpiTitleLabel.textColor = NSColor(hex: "#616469")
+        self.dpiTitleLabel.font = .SFProTextBold(12)
     }
     
     override func viewDidMoveToWindow() {
         super.viewDidMoveToWindow()
         
-        if (self.pageRangeItemView == nil) {
-            let viwe = KMConvertPageRangeSettingItemView.createFromNib()
-            self.pageRangeBox.contentView = viwe
-            self.pageRangeItemView = viwe
-            
-            viwe?.itemClick = { [unowned self] index, _ in
-                pageRangeSelectedIndex = index
-                
-                guard let callback = self.pageRangeDidChange else {
-                    return
-                }
-                
-                callback(KMPageRange(rawValue: index)!)
-            }
-            
-            viwe?.textDidEndEditingCallback = { [unowned self] textString in
-                let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
-                if (pageRange != .custom) {
-                    return
-                }
-                
-                guard let callback = pageRangeDidInputFinishCallback else {
-                    return
-                }
-                
-                callback(textString)
-            }
+        if let view = self.pageRangeItemView, view.superview == nil {
+            self.pageRangeBox.contentView = view
         }
 
-        self.pageRangeItemView?.isTextDidEndCallback = true
         self.pageRangeItemView?.pageCount = self.pageCount
     }
     
@@ -104,10 +78,16 @@ class KMConvertImageSettingView: KMConvertSettingView {
 extension KMConvertImageSettingView: KMSelectPopButtonDelegate {    
     func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
         if (obj.isEqual(to: self.formartView)) {
-            if formartView!.indexOfSelectedItem < 0 {
-                selectedFormatIndex = 0
+            guard let index = self.formartView?.indexOfSelectedItem, index >= 0 else {
+                self.selectedFormatIndex = 0
+                return
+            }
+            self.selectedFormatIndex = index
+            
+            if (index == 0 || index == 2) { // JPEG & PNG
+                self.dpiVC?.enabled = true
             } else {
-                selectedFormatIndex = formartView!.indexOfSelectedItem
+                self.dpiVC?.enabled = false
             }
         } else if (obj.isEqual(to: self.dpiVC)) {
             if let index = self.dpiVC?.indexOfSelectedItem {

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertPPTsSettingView.swift

@@ -49,7 +49,7 @@ class KMConvertPPTsSettingView: KMConvertSettingView {
 //            pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
 //            pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
             pageRangeBox.contentView = view
-            self.pageRangeItemView = view
+//            self.pageRangeItemView = view
 //            view?.isTextDidEndCallback = true
 //            view?.pageCount = self.pageCount
             

+ 37 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertSettingView.swift

@@ -57,7 +57,43 @@ class KMConvertSettingView: KMConvertBaseView {
     var lanugageDidSelected: KMValueDidChangeBlock?
     
     var ocrItemView: KMConvertOCRSettingItemView?
-    var pageRangeItemView: KMConvertPageRangeSettingItemView?
+    private var _pageRangeItemView: KMConvertPageRangeSettingItemView?
+    var pageRangeItemView: KMConvertPageRangeSettingItemView? {
+        get {
+            if let view = self._pageRangeItemView {
+                return view
+            }
+            
+            let viwe = KMConvertPageRangeSettingItemView.createFromNib()
+            self._pageRangeItemView = viwe
+            viwe?.isTextDidEndCallback = true
+            
+            viwe?.itemClick = { [unowned self] index, _ in
+                self.pageRangeSelectedIndex = index
+                
+                guard let callback = self.pageRangeDidChange else {
+                    return
+                }
+                
+                callback(KMPageRange(rawValue: index)!)
+            }
+            
+            viwe?.textDidEndEditingCallback = { [unowned self] textString in
+                let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
+                if (pageRange != .custom) {
+                    return
+                }
+                
+                guard let callback = self.pageRangeDidInputFinishCallback else {
+                    return
+                }
+                
+                callback(textString)
+            }
+            
+            return self._pageRangeItemView
+        }
+    }
     
     var pageCount = 0 {
         didSet {

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertWordSettingView.swift

@@ -76,7 +76,7 @@ class KMConvertWordSettingView: KMConvertSettingView {
         if (self.pageRangeItemView == nil) {
             let view = KMConvertPageRangeSettingItemView.createFromNib()
             self.pageRangeBox.contentView = view
-            self.pageRangeItemView = view
+//            self.pageRangeItemView = view
             
             view?.itemClick = { [unowned self] index, _ in
                 self.pageRangeSelectedIndex = index