|
@@ -29,7 +29,6 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
|
|
|
var pages:[Int] = []
|
|
|
var pathExtension = ""
|
|
|
var convertQueue = DispatchQueue.main
|
|
|
- var operateQueue = OperationQueue()
|
|
|
|
|
|
var semaphore:DispatchSemaphore? = DispatchSemaphore.init(value: 0)
|
|
|
var accessSemaphore:DispatchSemaphore? = DispatchSemaphore.init(value: 1)
|
|
@@ -96,8 +95,8 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
|
|
|
let url = URL.init(fileURLWithPath: self.srcPath, isDirectory: false)
|
|
|
let document = PDFDocument(url: url)
|
|
|
if document == nil {
|
|
|
- self.accessSemaphore?.signal()
|
|
|
self.didSuccess = -2;
|
|
|
+ self.accessSemaphore?.signal()
|
|
|
return
|
|
|
}
|
|
|
let pageCount = document!.pageCount
|
|
@@ -108,8 +107,7 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
|
|
|
}
|
|
|
|
|
|
if !useOldLib && NSArray(array: ["jpg", "JPG", "png", "PNG"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
+ autoreleasepool {
|
|
|
let cachePath = NSString(string: self.desPath).deletingPathExtension+".zip"
|
|
|
self.pdfConverter = CPDFConverterImg.init(url: url, password: nil)
|
|
|
if (nil == self.pdfConverter && nil != password) {
|
|
@@ -124,128 +122,111 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
|
|
|
}
|
|
|
self.pdfConverter?.convert(toFilePath: cachePath, pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
- }
|
|
|
}else if !useOldLib && NSArray(array: ["ppt", "PPT", "PPTX", "pptx"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterPPT.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterPPT.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertPPTOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterPPT.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterPPT.init(url: url, password: password as? String)
|
|
|
}
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertPPTOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["doc", "DOC", "docx", "DOCX"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterWord.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterWord.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertWordOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterWord.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterWord.init(url: url, password: password as? String)
|
|
|
}
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertWordOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["xls", "XLS", "xlsx", "XLSX"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterExcel.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterExcel.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertExcelOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterExcel.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterExcel.init(url: url, password: password as? String)
|
|
|
}
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertExcelOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["csv", "CSV"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterCsv.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterCsv.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertCsvOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterCsv.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterCsv.init(url: url, password: password as? String)
|
|
|
}
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertCsvOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["html", "HTML"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- let cachePath = NSString(string: self.desPath).deletingPathExtension+".zip"
|
|
|
- self.pdfConverter = CPDFConverterHtml.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterHtml.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertHtmlOptions()
|
|
|
- if ((tParams.value(forKey: "paneOptions") as? NSNumber) != nil) {
|
|
|
- (self.options as! CPDFConvertHtmlOptions).paneOptions = CPDFConvertHtmlPageAndNavigationPaneOptions(rawValue: (tParams.value(forKey: "paneOptions") as! NSNumber).intValue)!
|
|
|
- }
|
|
|
- self.pdfConverter?.convert(toFilePath: cachePath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ let cachePath = NSString(string: self.desPath).deletingPathExtension+".zip"
|
|
|
+ self.pdfConverter = CPDFConverterHtml.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterHtml.init(url: url, password: password as? String)
|
|
|
+ }
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertHtmlOptions()
|
|
|
+ if ((tParams.value(forKey: "paneOptions") as? NSNumber) != nil) {
|
|
|
+ (self.options as! CPDFConvertHtmlOptions).paneOptions = CPDFConvertHtmlPageAndNavigationPaneOptions(rawValue: (tParams.value(forKey: "paneOptions") as! NSNumber).intValue)!
|
|
|
}
|
|
|
+ self.pdfConverter?.convert(toFilePath: cachePath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["rtf", "RTF"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterRtf.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterRtf.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertRtfOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
- }
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterRtf.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterRtf.init(url: url, password: password as? String)
|
|
|
+ }
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertRtfOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else if !useOldLib && NSArray(array: ["txt", "TXT"]).contains(self.pathExtension) {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- self.pdfConverter = CPDFConverterTxt.init(url: url, password: nil)
|
|
|
- if (nil == self.pdfConverter && nil != password) {
|
|
|
- self.pdfConverter = CPDFConverterTxt.init(url: url, password: password as? String)
|
|
|
- }
|
|
|
- self.pdfConverter?.delegate = self
|
|
|
- self.options = CPDFConvertTxtOptions()
|
|
|
- self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
- pageIndexs: self.pages, options: self.options)
|
|
|
+ autoreleasepool {
|
|
|
+ self.pdfConverter = CPDFConverterTxt.init(url: url, password: nil)
|
|
|
+ if (nil == self.pdfConverter && nil != password) {
|
|
|
+ self.pdfConverter = CPDFConverterTxt.init(url: url, password: password as? String)
|
|
|
}
|
|
|
+ self.pdfConverter?.delegate = self
|
|
|
+ self.options = CPDFConvertTxtOptions()
|
|
|
+ self.pdfConverter?.convert(toFilePath: self.desPath,
|
|
|
+ pageIndexs: self.pages, options: self.options)
|
|
|
}
|
|
|
}else {
|
|
|
- self.operateQueue.addOperation {
|
|
|
- autoreleasepool {
|
|
|
- if self.fpConverter == nil {
|
|
|
- self.fpConverter = CPDFConverterFP.init()
|
|
|
- self.fpConverter?.setDelegate(self)
|
|
|
- }else {
|
|
|
- self.fpConverter?.stopConvertsionIfNeed()
|
|
|
- }
|
|
|
-
|
|
|
- var needMerge = NSArray(array: ["csv", "CSV"]).contains(self.pathExtension)
|
|
|
- let dpi = tParams.value(forKey: "KMPDFConvertOptionsKeyImageDPI")
|
|
|
- if (needMerge && tParams.value(forKey: "CPDFConvertOptionsKeyAllInOneSheet") != nil) {
|
|
|
- needMerge = (tParams.value(forKey: "CPDFConvertOptionsKeyAllInOneSheet") as! NSNumber).boolValue
|
|
|
- }
|
|
|
-
|
|
|
- self.fpConverter?.convertPDF(atPath: self.srcPath,
|
|
|
- pdfPassword: password as? String,
|
|
|
- pdfPageIndexs: self.pages,
|
|
|
- destDocType: self.pathExtension,
|
|
|
- destDocPath: self.desPath,
|
|
|
- moreOptions: [
|
|
|
- "KMPDFConvertOptionsKeyImageDPI" : (dpi as? String) ?? "72",
|
|
|
- "CPDFConvertOptionsKeyAllInOneSheet":NSNumber(booleanLiteral: needMerge)
|
|
|
- ])
|
|
|
- }
|
|
|
+ autoreleasepool {
|
|
|
+ if self.fpConverter == nil {
|
|
|
+ self.fpConverter = CPDFConverterFP.init()
|
|
|
+ self.fpConverter?.setDelegate(self)
|
|
|
+ }else {
|
|
|
+ self.fpConverter?.stopConvertsionIfNeed()
|
|
|
+ }
|
|
|
+
|
|
|
+ var needMerge = NSArray(array: ["csv", "CSV"]).contains(self.pathExtension)
|
|
|
+ let dpi = tParams.value(forKey: "KMPDFConvertOptionsKeyImageDPI")
|
|
|
+ if (needMerge && tParams.value(forKey: "CPDFConvertOptionsKeyAllInOneSheet") != nil) {
|
|
|
+ needMerge = (tParams.value(forKey: "CPDFConvertOptionsKeyAllInOneSheet") as! NSNumber).boolValue
|
|
|
+ }
|
|
|
+
|
|
|
+ self.fpConverter?.convertPDF(atPath: self.srcPath,
|
|
|
+ pdfPassword: password as? String,
|
|
|
+ pdfPageIndexs: self.pages,
|
|
|
+ destDocType: self.pathExtension,
|
|
|
+ destDocPath: self.desPath,
|
|
|
+ moreOptions: [
|
|
|
+ "KMPDFConvertOptionsKeyImageDPI" : (dpi as? String) ?? "72",
|
|
|
+ "CPDFConvertOptionsKeyAllInOneSheet":NSNumber(booleanLiteral: needMerge)
|
|
|
+ ])
|
|
|
}
|
|
|
}
|
|
|
}
|