cpdf_reader_widget_example_fun_test.dart 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. // Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
  2. //
  3. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  4. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  5. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  6. // This notice may not be removed from this file.
  7. import 'dart:math';
  8. import 'package:compdfkit_flutter/configuration/cpdf_configuration.dart';
  9. import 'package:compdfkit_flutter/widgets/cpdf_reader_widget.dart';
  10. import 'package:compdfkit_flutter/widgets/cpdf_reader_widget_controller.dart';
  11. import 'package:flutter/material.dart';
  12. class CPDFReaderWidgetFunTestExample extends StatefulWidget {
  13. final String documentPath;
  14. const CPDFReaderWidgetFunTestExample({super.key, required this.documentPath});
  15. @override
  16. State<CPDFReaderWidgetFunTestExample> createState() =>
  17. _CPDFReaderWidgetFunTestExampleState();
  18. }
  19. class _CPDFReaderWidgetFunTestExampleState
  20. extends State<CPDFReaderWidgetFunTestExample> {
  21. CPDFReaderWidgetController? _controller;
  22. bool canScale = true;
  23. bool pageSameWidth = true;
  24. bool isFixedScroll = false;
  25. @override
  26. Widget build(BuildContext context) {
  27. return Scaffold(
  28. resizeToAvoidBottomInset: false,
  29. appBar: AppBar(
  30. title: const Text('CPDFReaderWidget Example'),
  31. leading: IconButton(
  32. onPressed: () {
  33. _save();
  34. Navigator.pop(context);
  35. },
  36. icon: const Icon(Icons.arrow_back)),
  37. actions: null == _controller
  38. ? []
  39. : [
  40. PopupMenuButton(onSelected: (value) {
  41. handleClick(value, _controller!);
  42. }, itemBuilder: (context) {
  43. return actions
  44. .map((e) => PopupMenuItem(child: Text(e), value: e))
  45. .toList();
  46. })
  47. ],
  48. ),
  49. body: CPDFReaderWidget(
  50. document: widget.documentPath,
  51. configuration: CPDFConfiguration(),
  52. onCreated: (controller) {
  53. setState(() {
  54. _controller = controller;
  55. });
  56. },
  57. ));
  58. }
  59. void _save() async {
  60. bool saveResult = await _controller!.save();
  61. debugPrint('ComPDFKit-Flutter: saveResult:$saveResult');
  62. }
  63. void handleClick(String value, CPDFReaderWidgetController _controller) async {
  64. switch (value) {
  65. case 'setScale':
  66. _controller.setScale(1.5);
  67. break;
  68. case 'getScale':
  69. double scaleValue = await _controller.getScale();
  70. debugPrint('ComPDFKit:CPDFReaderWidget-getScale():$scaleValue');
  71. break;
  72. case 'setCanScale':
  73. canScale = !canScale;
  74. await _controller.setCanScale(canScale);
  75. break;
  76. case 'setReadBgColor':
  77. await _controller.setReadBackgroundColor(Colors.white);
  78. break;
  79. case 'getReadBgColor':
  80. Color color = await _controller.getReadBackgroundColor();
  81. debugPrint('ComPDFKit:getReadBgColor:${color.toString()}');
  82. break;
  83. case 'setFormHighlight':
  84. bool isFormFieldHighlight = await _controller.isFormFieldHighlight();
  85. debugPrint('ComPDFKit:isFormFieldHighlight:$isFormFieldHighlight');
  86. _controller.setFormFieldHighlight(!isFormFieldHighlight);
  87. break;
  88. case 'setLinkHighlight':
  89. bool isLinkHighlight = await _controller.isLinkHighlight();
  90. debugPrint('ComPDFKit:isLinkHighlight:$isLinkHighlight');
  91. _controller.setLinkHighlight(!isLinkHighlight);
  92. break;
  93. case 'setVerticalMode':
  94. bool isVerticalMode = await _controller.isVerticalMode();
  95. debugPrint('ComPDFKit:isVerticalMode:$isVerticalMode');
  96. _controller.setVerticalMode(!isVerticalMode);
  97. break;
  98. case 'setPageSpacing':
  99. final Random random = Random();
  100. int value = random.nextInt(50);
  101. debugPrint('ComPDFKit:setPageSpacing:$value');
  102. _controller.setPageSpacing(value);
  103. break;
  104. case 'setContinueMode':
  105. bool isContinueMode = await _controller.isContinueMode();
  106. debugPrint('ComPDFKit:isContinueMode:$isContinueMode');
  107. _controller.setContinueMode(!isContinueMode);
  108. break;
  109. case 'setDoublePageMode':
  110. bool isDoublePageMode = await _controller.isDoublePageMode();
  111. debugPrint('ComPDFKit:isDoublePageMode:$isDoublePageMode');
  112. _controller.setDoublePageMode(!isDoublePageMode);
  113. break;
  114. case 'setCropMode':
  115. bool isCropMode = await _controller.isCropMode();
  116. debugPrint('ComPDFKit:isCropMode:$isCropMode');
  117. _controller.setCropMode(!isCropMode);
  118. break;
  119. case 'setDisplayPageIndex':
  120. int nextPageIndex = await _controller.getCurrentPageIndex() + 1;
  121. _controller.setDisplayPageIndex(nextPageIndex);
  122. break;
  123. case 'getCurrentPageIndex':
  124. debugPrint(
  125. 'ComPDFKit:getCurrentPageIndex:${await _controller.getCurrentPageIndex()}');
  126. break;
  127. case 'setPageSameWidth':
  128. pageSameWidth = !pageSameWidth;
  129. _controller.setPageSameWidth(pageSameWidth);
  130. break;
  131. case 'isPageInScreen':
  132. bool isPageInScreen = await _controller.isPageInScreen(0);
  133. debugPrint('ComPDFKit:first page is in screen:$isPageInScreen');
  134. break;
  135. case 'setCoverPageMode':
  136. bool isCoverPageMode = await _controller.isCoverPageMode();
  137. debugPrint('ComPDFKit:isCoverPageMode:$isCoverPageMode');
  138. _controller.setCoverPageMode(!isCoverPageMode);
  139. break;
  140. case 'setFixedScroll':
  141. isFixedScroll = !isFixedScroll;
  142. await _controller.setFixedScroll(isFixedScroll);
  143. break;
  144. case 'getPageSize':
  145. int currentPageIndex = await _controller.getCurrentPageIndex();
  146. Size pageSizeNoZoom = await _controller.getPageSize(currentPageIndex);
  147. Size pageSizeZoom = await _controller.getPageSize(currentPageIndex, noZoom: false);
  148. debugPrint('ComPDFKit:pageSizeNoZoom:$pageSizeNoZoom');
  149. debugPrint('ComPDFKit:pageSize:$pageSizeZoom');
  150. break;
  151. }
  152. }
  153. }
  154. var actions = [
  155. 'setScale',
  156. 'getScale',
  157. 'setCanScale',
  158. 'setReadBgColor',
  159. 'getReadBgColor',
  160. 'setFormHighlight',
  161. 'setLinkHighlight',
  162. 'setVerticalMode',
  163. 'setPageSpacing',
  164. 'setContinueMode',
  165. 'setDoublePageMode',
  166. 'setCropMode',
  167. 'setDisplayPageIndex',
  168. 'getCurrentPageIndex',
  169. 'setPageSameWidth',
  170. 'isPageInScreen',
  171. 'setFixedScroll',
  172. 'setCoverPageMode',
  173. 'getPageSize'
  174. ];
  175. Color randomColor() {
  176. final Random random = Random();
  177. return Color.fromARGB(
  178. 255, // Alpha value (fully opaque)
  179. random.nextInt(256), // Red value
  180. random.nextInt(256), // Green value
  181. random.nextInt(256), // Blue value
  182. );
  183. }