Browse Source

【APPCenter】Crash编号:16(excel转PDF KMConvertPDFManager)

liujiajie 10 months ago
parent
commit
7b9e3e290c

+ 1 - 0
PDF Office/PDF Master/Class/Common/OC/Batch/KMOCTool.h

@@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 +(NSData*)convertStringsToPDFWithString:(NSArray *)strings;
 +(CGRect)localCropRectForWindow:(CGWindowID)wNumber withBounds:(CGRect)bounds;
 +(NSAttributedString *)transformAttr:(NSAttributedString *)astring withString:(NSString *)str;
++(NSDictionary *)convertExcelToPdfFilePath:(NSString *)filePath savePath:(NSString *)savePath;
 @end
 
 NS_ASSUME_NONNULL_END

+ 20 - 0
PDF Office/PDF Master/Class/Common/OC/Batch/KMOCTool.m

@@ -262,4 +262,24 @@ static NSData *convertStringsToPDF(NSArray<NSAttributedString *> *strings)
     return pdfData;
 }
 
++ (NSDictionary *)convertExcelToPdfFilePath:(NSString *)filePath savePath:(NSString *)savePath{
+    NSString *  convertString = [NSString stringWithFormat:@"set filePath to\"%@\"\n",filePath];
+    convertString = [convertString stringByAppendingFormat:@"set savePath to \"%@\"\n",savePath];
+    convertString = [convertString stringByAppendingFormat:@"set tFile to (POSIX path of filePath) as POSIX file\n"];
+    
+    convertString = [convertString stringByAppendingFormat:@"tell application \"Microsoft Excel\"\n"];
+    convertString = [convertString stringByAppendingFormat:@"set isRun to running\n"];
+    convertString = [convertString stringByAppendingFormat:@"set wkbk1 to open workbook workbook file name tFile\n"];
+    convertString = [convertString stringByAppendingFormat:@"alias savePath\n"];
+    convertString = [convertString stringByAppendingFormat:@"save workbook as wkbk1 filename savePath file format PDF file format with overwrite\n"];
+    convertString = [convertString stringByAppendingFormat:@"close wkbk1 saving no\n"];
+    convertString = [convertString stringByAppendingFormat:@"if not isRun then quit\n"];
+    convertString = [convertString stringByAppendingFormat:@"end tell\n"];
+    
+    NSDictionary * dic = nil;
+    NSAppleScript *docScript = [[NSAppleScript alloc] initWithSource:convertString];
+    [docScript executeAndReturnError:&dic];
+    return dic;
+}
+
 @end

+ 3 - 3
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -624,9 +624,9 @@ extension KMHomeViewController {
             try?FileManager.default.createDirectory(atPath: savePath!.deletingLastPathComponent as String, withIntermediateDirectories: true, attributes: nil)
         }
         
-        if (!FileManager.default.fileExists(atPath: savePath! as String)) {
-            FileManager.default.createFile(atPath: savePath! as String, contents: nil)
-        }
+//        if (!FileManager.default.fileExists(atPath: savePath! as String)) {
+//            FileManager.default.createFile(atPath: savePath! as String, contents: nil)
+//        }
 
         if savePath == nil {
             return

+ 2 - 16
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/Common/KMConvertPDFManager.swift

@@ -275,23 +275,9 @@ class KMConvertPDFManager: NSObject {
     
     class func convertExcelPath(_ filePath: String, savePath: String, completionHandler: @escaping ((Bool, NSDictionary?) -> Void)) {
         DispatchQueue.global().async {
-            var convertString = String(format: "set filePath to\"%@\"\n", filePath)
-            convertString = convertString.appendingFormat("set savePath to \"%@\"\n", savePath)
-            convertString.append("set tFile to (POSIX path of filePath) as POSIX file\n")
-            convertString.append("tell application \"Microsoft Excel\"\n")
-            convertString.append("set isRun to running\n")
-            convertString.append("set wkbk1 to open workbook workbook file name tFile\n")
-            convertString.append("alias savePath\n")
-            convertString.append("save workbook as wkbk1 filename savePath file format PDF file format with overwrite\n")
-            convertString.append("close wkbk1 saving no\n")
-            convertString.append("if not isRun then quit\n")
-            convertString.append("end tell\n")
-
-            let dic: AutoreleasingUnsafeMutablePointer<NSDictionary?>? = nil
-            let docScript = NSAppleScript(source: convertString)
-            docScript?.executeAndReturnError(dic)
+            let dic = KMOCTool.convertExcel(toPdfFilePath: filePath, savePath: savePath)
             DispatchQueue.main.async {
-                completionHandler(true, dic?.pointee)
+                completionHandler(true, dic as NSDictionary)
             }
         }
     }