123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- //
- // ConvertUtil.swift
- // Runner
- //
- // Created by Xiaolong Liu on 2023/2/27.
- //
- import Foundation
- import ComPDFKit_Conversion
- class ConvertUtil : NSObject, CPDFConverterDelegate{
-
- let params_convert_type = "convertType";
- let params_file_path = "filePath";
- let params_file_name = "file_name";
- let params_data_tag = "dataTag";
- let params_contain_images = "containImages";
- let params_contain_annotations = "containAnnotations";
- let params_worksheet_options = "workSheetOptions";
- let params_content_options = "contentOptions";
- let params_image_dpi = "imageDpi";
- let params_image_page_options = "imagePageOptions";
- let params_merge_csv = "mergeCSV";
- let params_html_page_options = "htmlPageOptions";
-
-
- var result: ((Int, Int, String?) -> Void)?
-
- func getConvertOptions(withArguments arguments: Any?) -> CPDFConvertOptions {
- let convertData = arguments as! [String: String];
- let isContainImages = Bool(convertData[params_contain_images] ?? "true") ?? true
- let isContainAnnotation = Bool(convertData[params_contain_annotations] ?? "true") ?? true;
- let filePath = convertData[params_file_path];
- let fileName = convertData[params_file_name];
- let convertType = convertData[params_convert_type];
- let workSheetOptions = convertData[params_worksheet_options];
- let contentOptions = convertData[params_content_options];
- let imageDpi = convertData[params_image_dpi] ?? "300";
- let imagePageOptions = convertData[params_image_page_options];
- let mergeCSV = Bool(convertData[params_merge_csv] ?? "false") ?? false;
- let htmlPageOptions = convertData[params_html_page_options];
- print("convertType:\(convertType)")
- print("isContainImages:\(isContainImages)")
- print("isContainAnnotations:\(isContainAnnotation)")
-
-
- switch convertType!.uppercased() {
- case ConvertType.PPT.rawValue:
- let pptOptions = CPDFConvertPPTOptions()
- pptOptions.isContainImages = isContainImages
- pptOptions.isContainAnnotations = isContainAnnotation
- return pptOptions
- case ConvertType.WORD.rawValue:
- let wordOptions = CPDFConvertWordOptions()
- wordOptions.isContainImages = isContainImages
- wordOptions.isContainAnnotations = isContainAnnotation
- return wordOptions
- case ConvertType.EXCEL.rawValue:
- let excelOptions = CPDFConvertExcelOptions()
- excelOptions.isContainImages = isContainImages
- excelOptions.isContainAnnotations = isContainAnnotation
-
- switch workSheetOptions {
- case "ForEachTable":
- excelOptions.worksheetOptions = CPDFConvertExcelWorksheetOptions.forEachTable
- case "ForEachPage":
- excelOptions.worksheetOptions = CPDFConvertExcelWorksheetOptions.forEachPage
- default :
- excelOptions.worksheetOptions = CPDFConvertExcelWorksheetOptions.forTheDocument
- }
-
- switch contentOptions {
- case "OnlyText":
- excelOptions.contentOptions = CPDFConvertExcelContentOptions.onlyText
- case "OnlyTable":
- excelOptions.contentOptions = CPDFConvertExcelContentOptions.onlyTable
- default :
- excelOptions.contentOptions = CPDFConvertExcelContentOptions.allContent
- }
- return excelOptions
-
- case ConvertType.TXT.rawValue:
- return CPDFConvertTxtOptions()
-
- case ConvertType.IMAGE.rawValue:
- let imageOptions = CPDFConvertImgOptions()
-
- imageOptions.imageDpi = Int32(imageDpi) ?? 300
- imageOptions.isContainAnnotations = isContainAnnotation
- switch imagePageOptions {
- case "JPEG":
- imageOptions.type = CPDFConvertImgType.JPEG
- case "PNG":
- imageOptions.type = CPDFConvertImgType.PNG
- default:
- imageOptions.type = CPDFConvertImgType.PNG
- }
- return imageOptions
-
- case ConvertType.CSV.rawValue:
- let csvOptions = CPDFConvertCsvOptions()
- csvOptions.isMergeCSV = mergeCSV
- return csvOptions
-
- case ConvertType.RTF.rawValue:
- let rtfOptions = CPDFConvertRtfOptions()
- rtfOptions.isContainImages = isContainImages
- rtfOptions.isContainAnnotations = isContainAnnotation
- return rtfOptions
-
- case ConvertType.HTML.rawValue:
- let htmlOptions = CPDFConvertHtmlOptions()
- htmlOptions.isContainImages = isContainImages
- htmlOptions.isContainAnnotations = isContainAnnotation
- return htmlOptions
- default:
- return CPDFConvertOptions()
-
- }
-
- }
-
-
-
-
- func convert(options :CPDFConvertOptions, filePath:String, convertType : String, onProgress : @escaping (_ progress : Int, _ status : Int, _ outputPath : String?) -> Void) {
-
- result = onProgress
-
- let outPutPath = NSHomeDirectory() + "/Documents/ConversionDemo"
-
- let fileURL = URL(string: filePath)
- print(convertType)
-
- let pdfConvert : CPDFConverter?
- switch convertType.uppercased() {
- case ConvertType.PPT.rawValue:
- pdfConvert = CPDFConverterPPT(url: fileURL, password: "")
- print("to ppt")
- //
- case ConvertType.WORD.rawValue:
- pdfConvert = CPDFConverterWord(url: fileURL, password: "")
- print("to word")
- case ConvertType.EXCEL.rawValue:
- pdfConvert = CPDFConverterExcel(url: fileURL, password: "")
-
- case ConvertType.TXT.rawValue:
- pdfConvert = CPDFConverterTxt(url: fileURL, password: "")
-
- case ConvertType.IMAGE.rawValue:
- pdfConvert = CPDFConverterImg(url: fileURL, password: "")
-
- case ConvertType.CSV.rawValue:
- pdfConvert = CPDFConverterCsv(url: fileURL, password: "")
-
- case ConvertType.RTF.rawValue:
- pdfConvert = CPDFConverterRtf(url: fileURL, password: "")
-
- case ConvertType.HTML.rawValue:
- pdfConvert = CPDFConverterHtml(url: fileURL, password: "")
-
- default:
- pdfConvert = CPDFConverter()
- }
- // print(pdfConvert)
- pdfConvert?.convert(toFilePath: outPutPath, pageIndexs: [Int](), options: options)
- pdfConvert?.delegate = self
- }
-
- func converter(_ converter: CPDFConverter!, didStartConvert error: Error!) {
-
- }
-
- func converter(_ converter: CPDFConverter!, pageIndex index: UInt, pageCount count: UInt) {
-
- let progress = Double(index) / Double(count)
- result?(Int(progress*100), 1, nil)
- }
-
- func converter(_ converter: CPDFConverter!, didEndConvert error: Error!) {
-
- }
-
-
-
- }
|