// Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved. // // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. // This notice may not be removed from this file. import 'dart:math'; import 'package:compdfkit_flutter/configuration/cpdf_configuration.dart'; import 'package:compdfkit_flutter/widgets/cpdf_reader_widget.dart'; import 'package:compdfkit_flutter/widgets/cpdf_reader_widget_controller.dart'; import 'package:flutter/material.dart'; class CPDFReaderWidgetFunTestExample extends StatefulWidget { final String documentPath; const CPDFReaderWidgetFunTestExample({super.key, required this.documentPath}); @override State createState() => _CPDFReaderWidgetFunTestExampleState(); } class _CPDFReaderWidgetFunTestExampleState extends State { CPDFReaderWidgetController? _controller; bool canScale = true; bool pageSameWidth = true; bool isFixedScroll = false; @override Widget build(BuildContext context) { return Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( title: const Text('CPDFReaderWidget Example'), leading: IconButton( onPressed: () { _save(); Navigator.pop(context); }, icon: const Icon(Icons.arrow_back)), actions: null == _controller ? [] : [ PopupMenuButton(onSelected: (value) { handleClick(value, _controller!); }, itemBuilder: (context) { return actions .map((e) => PopupMenuItem(child: Text(e), value: e)) .toList(); }) ], ), body: CPDFReaderWidget( document: widget.documentPath, configuration: CPDFConfiguration(), onCreated: (controller) { setState(() { _controller = controller; }); }, )); } void _save() async { bool saveResult = await _controller!.save(); debugPrint('ComPDFKit-Flutter: saveResult:$saveResult'); } void handleClick(String value, CPDFReaderWidgetController _controller) async { switch (value) { case 'setScale': _controller.setScale(1.5); break; case 'getScale': double scaleValue = await _controller.getScale(); debugPrint('ComPDFKit:CPDFReaderWidget-getScale():$scaleValue'); break; case 'setCanScale': canScale = !canScale; await _controller.setCanScale(canScale); break; case 'setReadBgColor': await _controller.setReadBackgroundColor(Colors.white); break; case 'getReadBgColor': Color color = await _controller.getReadBackgroundColor(); debugPrint('ComPDFKit:getReadBgColor:${color.toString()}'); break; case 'setFormHighlight': bool isFormFieldHighlight = await _controller.isFormFieldHighlight(); debugPrint('ComPDFKit:isFormFieldHighlight:$isFormFieldHighlight'); _controller.setFormFieldHighlight(!isFormFieldHighlight); break; case 'setLinkHighlight': bool isLinkHighlight = await _controller.isLinkHighlight(); debugPrint('ComPDFKit:isLinkHighlight:$isLinkHighlight'); _controller.setLinkHighlight(!isLinkHighlight); break; case 'setVerticalMode': bool isVerticalMode = await _controller.isVerticalMode(); debugPrint('ComPDFKit:isVerticalMode:$isVerticalMode'); _controller.setVerticalMode(!isVerticalMode); break; case 'setPageSpacing': final Random random = Random(); int value = random.nextInt(50); debugPrint('ComPDFKit:setPageSpacing:$value'); _controller.setPageSpacing(value); break; case 'setContinueMode': bool isContinueMode = await _controller.isContinueMode(); debugPrint('ComPDFKit:isContinueMode:$isContinueMode'); _controller.setContinueMode(!isContinueMode); break; case 'setDoublePageMode': bool isDoublePageMode = await _controller.isDoublePageMode(); debugPrint('ComPDFKit:isDoublePageMode:$isDoublePageMode'); _controller.setDoublePageMode(!isDoublePageMode); break; case 'setCropMode': bool isCropMode = await _controller.isCropMode(); debugPrint('ComPDFKit:isCropMode:$isCropMode'); _controller.setCropMode(!isCropMode); break; case 'setDisplayPageIndex': int nextPageIndex = await _controller.getCurrentPageIndex() + 1; _controller.setDisplayPageIndex(nextPageIndex); break; case 'getCurrentPageIndex': debugPrint( 'ComPDFKit:getCurrentPageIndex:${await _controller.getCurrentPageIndex()}'); break; case 'setPageSameWidth': pageSameWidth = !pageSameWidth; _controller.setPageSameWidth(pageSameWidth); break; case 'isPageInScreen': bool isPageInScreen = await _controller.isPageInScreen(0); debugPrint('ComPDFKit:first page is in screen:$isPageInScreen'); break; case 'setCoverPageMode': bool isCoverPageMode = await _controller.isCoverPageMode(); debugPrint('ComPDFKit:isCoverPageMode:$isCoverPageMode'); _controller.setCoverPageMode(!isCoverPageMode); break; case 'setFixedScroll': isFixedScroll = !isFixedScroll; await _controller.setFixedScroll(isFixedScroll); break; case 'getPageSize': int currentPageIndex = await _controller.getCurrentPageIndex(); Size pageSizeNoZoom = await _controller.getPageSize(currentPageIndex); Size pageSizeZoom = await _controller.getPageSize(currentPageIndex, noZoom: false); debugPrint('ComPDFKit:pageSizeNoZoom:$pageSizeNoZoom'); debugPrint('ComPDFKit:pageSize:$pageSizeZoom'); break; } } } var actions = [ 'setScale', 'getScale', 'setCanScale', 'setReadBgColor', 'getReadBgColor', 'setFormHighlight', 'setLinkHighlight', 'setVerticalMode', 'setPageSpacing', 'setContinueMode', 'setDoublePageMode', 'setCropMode', 'setDisplayPageIndex', 'getCurrentPageIndex', 'setPageSameWidth', 'isPageInScreen', 'setFixedScroll', 'setCoverPageMode', 'getPageSize' ]; Color randomColor() { final Random random = Random(); return Color.fromARGB( 255, // Alpha value (fully opaque) random.nextInt(256), // Red value random.nextInt(256), // Green value random.nextInt(256), // Blue value ); }