main.dart 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. ///
  2. /// Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
  3. ///
  4. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  5. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  6. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  7. /// This notice may not be removed from this file.
  8. ///
  9. import 'dart:io';
  10. import 'package:compdfkit_flutter/compdfkit.dart';
  11. import 'package:compdfkit_flutter/cpdf_configuration.dart';
  12. import 'package:flutter/material.dart';
  13. const String _documentPath = 'pdfs/PDF_Document.pdf';
  14. void main() {
  15. runApp(const MyApp());
  16. }
  17. class MyApp extends StatefulWidget {
  18. const MyApp({super.key});
  19. @override
  20. State<MyApp> createState() => _MyAppState();
  21. }
  22. class _MyAppState extends State<MyApp> {
  23. @override
  24. void initState() {
  25. super.initState();
  26. _init();
  27. }
  28. void _init() async {
  29. // online license auth
  30. // Please replace it with your ComPDFKit license
  31. // ComPDFKit.initialize(androidOnlineLicense: 'IVTAsbJCW0X45qIy5cTEuzxZzKpYIpJe6WPY7uCPIiI=',iosOnlineLicense: 'lkw3Gr0HuD5pV1/+DVRSxp7qBlvK+Izo3mOKyAEHXz4=');
  32. // offline license auth
  33. ComPDFKit.init(
  34. '77/0LbrlNGNUEKWCmu4/iG3ZlSv4+47zdgsGOxDX3vGx64O2BtvxJyDzgqNvAmqU8eM0G0ALjeYHtV3vrL7mNtev5BHDGmg2ye3WigSqpN8y0gOPPutXKAQyW9vM+cC81ws4sjcXt2vphQXKjRGeVnQodoe+0FbKzffywJ2DORo32GO9qJ51qIKGmXhokKOuQIDJ2eDgQDkIwUChC+yVz088AjTSDSYOe0UobLHOpkP6Ou4qbkx6pKJ+WexOqFxIb90cAQVVa02NpLJdSu8VPIDJNzuwds1y2RLVD6lgBj8Zez+CGDL4JzeYnYhQhlOZNLXJQ4ZqkN/eHcvgIlpzL2u0lH1oY17eVN2TRW5amzqOuoo5orgnAvMGFLdEwMLlC+K5dn2h1bB4RjP9ZTqgoNaGtyKiQ+FhqHLgPV+faNMUdCBlrq4FNafN5ZoZwbHn4fzUh88DO0481O/H5F0zHak/PQJR7Gu1OfN94Q2uALpL4t3i0S76cdEeJ6wRw44AH0PQikF7jWqqmAB1bqcqsgePNE97RigZwYiDA0p2AGWxhBg2+pgZD9EPOOjdtWPXK9LTAop75OQ9whjDWL1y0LTP/JhOPQIOghNPepj3VtjzSVrUbTBFktXeDGlz0NH9TnbvjZoxJRlcNN1+9x100WEfF4A2XbJZEjcpxV9tk1r9UpDZNXkuRC5cqSCOndk3WcAQjbXfQ4Bb9zwxbcvORsTU9lFmAbRS4KFSnCfN/gMqYb0QzhAKt6Wube1sAVkj4n7AvEss/0SdC9zk5m0/E/c0dDshJ3XKSLU/PaI1wbf/SnQhn+gZICJWg9lWCAi16kSStNvD+Tlg8iXYGXcUT967Gjfe/7Au1tVEU3oE60OBrEnSCSSJJt3MWbr/52CRpTtQ6bC+eZK0ijaRGZnS60G4A4sqfUpH3dRQ0juEnz0zrfyaQi4TKGCC1SzT5YPtsIEy4Stbdh3CCWoYV8SehrEkB58JHrolHhy5cVPV2RRYE30JXG5sJOlwb6wuhHVLlanJ7OE5ewEJCtZIHMkJ/rlfinOunS0G9GL2IMBwsyfOB1Cxl+yXx4V3li2ymawe');
  35. }
  36. @override
  37. Widget build(BuildContext context) {
  38. return MaterialApp(
  39. home: Scaffold(
  40. body: SafeArea(
  41. child: Center(
  42. child: ElevatedButton(
  43. onPressed: () async {
  44. showDocument(context);
  45. },
  46. child: const Text('Open Document')),
  47. ))),
  48. );
  49. }
  50. void showDocument(BuildContext context) async {
  51. final bytes = await DefaultAssetBundle.of(context).load(_documentPath);
  52. final list = bytes.buffer.asUint8List();
  53. final tempDir = await ComPDFKit.getTemporaryDirectory();
  54. var pdfsDir = Directory('${tempDir.path}/pdfs');
  55. pdfsDir.createSync(recursive: true);
  56. final tempDocumentPath = '${tempDir.path}/$_documentPath';
  57. final file = File(tempDocumentPath);
  58. if (!file.existsSync()) {
  59. file.create(recursive: true);
  60. file.writeAsBytesSync(list);
  61. }
  62. var configuration = CPDFConfiguration();
  63. // How to disable functionality:
  64. // setting the default display mode when opening
  65. // configuration.modeConfig = const ModeConfig(initialViewMode: CPreviewMode.digitalSignatures);
  66. // top toolbar configuration:
  67. // android:
  68. // configuration.toolbarConfig = const ToolbarConfig(androidAvailableActions: [
  69. // ToolbarAction.thumbnail, ToolbarAction.bota,
  70. // ToolbarAction.search, ToolbarAction.menu
  71. // ],
  72. // availableMenus: [
  73. // ToolbarMenuAction.viewSettings, ToolbarMenuAction.documentInfo, ToolbarMenuAction.security,
  74. // ]);
  75. // iOS:
  76. // configuration.toolbarConfig = const ToolbarConfig(iosLeftBarAvailableActions: [
  77. // ToolbarAction.back, ToolbarAction.thumbnail
  78. // ],
  79. // iosRightBarAvailableActions: [
  80. // ToolbarAction.bota, ToolbarAction.search, ToolbarAction.menu
  81. // ],
  82. // availableMenus: [
  83. // ToolbarMenuAction.viewSettings, ToolbarMenuAction.documentInfo, ToolbarMenuAction.security,
  84. // ]);
  85. // readerview configuration
  86. // configuration.readerViewConfig = const ReaderViewConfig(linkHighlight: true, formFieldHighlight: true);
  87. ComPDFKit.openDocument(tempDocumentPath,
  88. password: '', configuration: configuration);
  89. }
  90. }