cpdf_converter.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /// convert_sdk_info_flutter.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 'package:kmpdfkit_conversion_flutter/util/string_extensions.dart';
  13. import 'models/convert_status.dart';
  14. import 'models/convert_type.dart';
  15. import 'models/options/options.dart';
  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. static convert(
  44. {required String taskId,
  45. required String filePath,
  46. required ConvertType convertType,
  47. required Options options,
  48. required TaskResultCallback callback}) {
  49. HashMap<String, dynamic> map = HashMap();
  50. map['convertType'] = convertType.name;
  51. map['filePath'] = filePath;
  52. map['taskId'] = taskId;
  53. map.addAll(options.map);
  54. _channel.receiveBroadcastStream(map).listen((event) {
  55. Map<dynamic, dynamic> result = event;
  56. int statusCode = result['status'];
  57. int progress = result['progress'];
  58. String? outputPath = result['outputPath'];
  59. String taskId = result['taskId'];
  60. callback(TaskResult(
  61. taskId, getConvertStatusByCode(statusCode), progress, outputPath));
  62. });
  63. }
  64. static void cancelTask() {
  65. _methodChannel.invokeMethod('cancel_task');
  66. }
  67. }