cpdf_converter.dart 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /// cpdf_converter.dart
  2. ///
  3. /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  4. ///
  5. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  6. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  7. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  8. /// This notice may not be removed from this file.
  9. import 'dart:collection';
  10. import 'package:flutter/services.dart';
  11. import 'package:kmpdfkit_conversion_flutter/models/task_result.dart';
  12. import 'models/task_status.dart';
  13. import 'models/convert_type.dart';
  14. import 'models/options/options.dart';
  15. import 'package:path/path.dart' as p;
  16. typedef TaskResultCallback = Function(TaskResult result);
  17. class CPDFConverter {
  18. static const EventChannel _channel =
  19. EventChannel('com.compdfkit.conversion.flutter.convert');
  20. static const MethodChannel _sdkGlobalChannel =
  21. MethodChannel('com.compdfkit.conversion.flutter.convert.sdk.info');
  22. static const _methodChannel =
  23. MethodChannel('com.compdfkit.conversion.flutter.convert.method');
  24. static Future<String> init(String key, String secret) async {
  25. String request = await _sdkGlobalChannel
  26. .invokeMethod('conversion_init', {"key": key, "secret": secret});
  27. return request;
  28. }
  29. ///get conversion sdk version info
  30. static Future<String> getSDKBuildTag() async {
  31. var sdkBuildTag = await _sdkGlobalChannel.invokeMethod('sdk_build_tag');
  32. return sdkBuildTag;
  33. }
  34. static Future<String> getSDKVersion() async {
  35. var sdkVersion = await _sdkGlobalChannel.invokeMethod('sdk_version');
  36. return sdkVersion;
  37. }
  38. static Future<String> getOutputPath() async {
  39. var outPutPath =
  40. await _sdkGlobalChannel.invokeMethod('request_convert_output_path');
  41. return outPutPath;
  42. }
  43. /// Submit the conversion task
  44. /// taskId : unique value
  45. /// filePath : PDF file path
  46. /// password : pdf file password
  47. /// convertType : Converted format type
  48. static convert(
  49. {required String taskId,
  50. required String filePath,
  51. String password = "",
  52. required ConvertType convertType,
  53. required String outputPath,
  54. required Options options,
  55. required TaskResultCallback callback}) {
  56. HashMap<String, dynamic> map = HashMap();
  57. map['convertType'] = convertType.name;
  58. map['filePath'] = filePath;
  59. map['taskId'] = taskId;
  60. map['outputDir'] = outputPath;
  61. map['fileName'] = p.basenameWithoutExtension(filePath);
  62. map["password"] = password;
  63. map.addAll(options.map);
  64. _channel.receiveBroadcastStream(map).listen((event) {
  65. Map<dynamic, dynamic> result = event;
  66. int statusCode = result['status'];
  67. int progress = result['progress'];
  68. String? outputPath = result['outputPath'];
  69. String taskId = result['taskId'];
  70. callback(TaskResult(
  71. taskId, getConvertStatusByCode(statusCode), progress, outputPath));
  72. });
  73. }
  74. static void cancelTask() {
  75. _methodChannel.invokeMethod('cancel_task');
  76. }
  77. }