ソースを参照

【fix】【内容编辑】选中图片,导出为PDF格式,导出的文档打不开

tangchao 6 ヶ月 前
コミット
6176fc0378

+ 33 - 3
PDF Office/PDF Master/Class/PDFTools/EditPDF/Tools/KMEditPDfHanddler.swift

@@ -1198,6 +1198,25 @@ extension KMEditPDfHanddler {
             return
         }
         if areas.count == 1 {
+            if KMTools.isPDFType(format) {
+                guard let image = areas.first!.thumbnailImage else {
+                    NSSound.beep()
+                    return
+                }
+                let pdfdocument = CPDFDocument()
+                pdfdocument?.km_insert(image: image, at: 0)
+                let savePanel = NSSavePanel()
+                savePanel.allowedFileTypes = ["pdf"]
+                savePanel.beginSheetModal(for: self.viewC!.view.window!) { response in
+                    if (response != .OK) {
+                        return
+                    }
+                    if let data = pdfdocument?.write(to: savePanel.url!), data {
+                        NSWorkspace.shared.selectFile(savePanel.url?.path, inFileViewerRootedAtPath: "");
+                    }
+                }
+                return
+            }
             let panel = NSSavePanel()
             panel.nameFieldStringValue = "\(NSLocalizedString("Untitled", comment: "")).\(format)"
             panel.isExtensionHidden = true
@@ -1240,9 +1259,20 @@ extension KMEditPDfHanddler {
                         outPath = outPath.stringByAppendingPathComponent(documentFileName)
                         outPath = outPath + "_page\(pageIndex+1)_\(j+1)"
                         outPath = outPath.stringByAppendingPathExtension(format)
-                        let result = self.listView?.extractImage(with: areas[j], toImagePath: outPath) ?? false
-                        if result {
-                            saveURLs.append(URL(fileURLWithPath: outPath))
+                        if KMTools.isPDFType(format) {
+                            if let image = areas[j].thumbnailImage {
+                                let pdfdocument = CPDFDocument()
+                                pdfdocument?.km_insert(image: image, at: 0)
+                                let suc = pdfdocument?.write(toFile: outPath) ?? false
+                                if suc {
+                                    saveURLs.append(URL(fileURLWithPath: outPath))
+                                }
+                            }
+                        } else {
+                            let result = self.listView?.extractImage(with: areas[j], toImagePath: outPath) ?? false
+                            if result {
+                                saveURLs.append(URL(fileURLWithPath: outPath))
+                            }
                         }
                     }
                     NSWorkspace.shared.activateFileViewerSelecting(saveURLs)

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

@@ -1806,7 +1806,7 @@ extension KMMainViewController {
                 let pdfdocument = CPDFDocument()
                 let signatureImagePath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first?.stringByAppendingPathComponent("signatureImage.png")
                 if NSData(data: data!).write(to: URL(fileURLWithPath: signatureImagePath!), atomically: true) {
-                    pdfdocument?.insertPage(image.size, withImage: signatureImagePath, at: 0)
+                    pdfdocument?.km_insertPage(image.size, withImage: signatureImagePath!, at: 0)
                     let savePanel = NSSavePanel()
                     savePanel.allowedFileTypes = ["pdf"]
                     savePanel.beginSheetModal(for: self.view.window!) { response in