A document scanner plugin for flutter

Overview

document_scanner_flutter pub package

A document scanner + PDF generator plugin for flutter

Getting Started

Installing

document_scanner_flutter: ^0.2.3

Basic Usage

try {
    File scannedDoc = await DocumentScannerFlutter.launch();
    // `scannedDoc` will be the image file scanned from scanner
} on PlatformException {
    // 'Failed to get document path or operation cancelled!';
}

Or With Specific Source (Gallery / Camera)

try {
    File scannedDoc = await DocumentScannerFlutter.launch(source: ScannerFileSource.CAMERA); // Or ScannerFileSource.GALLERY
    // `scannedDoc` will be the image file scanned from scanner
} on PlatformException {
    // 'Failed to get document path or operation cancelled!';
}

New Features! ๐ŸŽŠ ๐Ÿฅณ ๐Ÿ˜Ž

PDF generation of scanned images

try {
    File scannedDoc = await DocumentScannerFlutter.launchForPdf(source: ScannerFileSource.CAMERA); // Or ScannerFileSource.GALLERY
    // `scannedDoc` will be the PDF file generated from scanner
} on PlatformException {
    // 'Failed to get document path or operation cancelled!';
}

Android Scanner labels customization

try {
    // Other Android Scanner labels customization 
    var androidLabelsConfigs = {
        ScannerConfigsAndroid.ANDROID_NEXT_BUTTON_TITLE : "Next Step",
        ScannerConfigsAndroid.ANDROID_SAVE_BUTTON_TITLE: "Save It",
        ScannerConfigsAndroid.ANDROID_ROTATE_LEFT_TITLE: "Turn it left",
        ScannerConfigsAndroid.ANDROID_ROTATE_RIGHT_TITLE: "Turn it right",
        ScannerConfigsAndroid.ANDROID_ORIGINAL_TITLE: "Original",
        ScannerConfigsAndroid.ANDROID_BMW_TITLE: "B & W"
    } 

    File scannedDoc = await DocumentScannerFlutter.launchForPdf(source: ScannerFileSource.CAMERA,androidConfigs: androidLabelsConfigs); 
    // `scannedDoc` will be the PDF file generated from scanner
} on PlatformException {
    // 'Failed to get document path or operation cancelled!';
}
Comments
  • Present the ImageScannerController modally to prevent invisible nav bar

    Present the ImageScannerController modally to prevent invisible nav bar

    This fixes an issue when presenting the ImageScannerController modally. The partial takeover has a transparent nav bar and therefore you can see the UINavigationController underneath and the UIBarButtonItems are not clearly visible.

    By presenting the view controllers with fullscreen modal presentation style, the nav bar is forced black and the text is legible

    Screenshot

    Before

    IMG_1831

    After

    IMG_1832 IMG_1833 IMG_1834

    opened by sjoness 3
  • Upgrade Dependencies Version

    Upgrade Dependencies Version

    Updated dependency versions to the latest version. photo_view crashed when trying to use the pdfx dependency in a project due to pointing to different versions of the same dependency

    opened by vicajilau 0
  • Displaying au blank page on DocumentScannerFlutter.launch with targetSdkVersion 33 on android 13

    Displaying au blank page on DocumentScannerFlutter.launch with targetSdkVersion 33 on android 13

    Hi,

    While testing my app on a physical pixel 6 running android 13 I came across the issue of a blank screen and no error logged or found while debugging.

    build.gradle : compileSdkVersion 33 targetSdkVersion 33

    Reverting to targetSdkVersion 32 fixes the issue

    can be reproduced on an android 13 simulator

    Doctor summary (to see all details, run flutter doctor -v): [โœ“] Flutter (Channel stable, 3.3.4, on macOS 12.6 21G115 darwin-arm, locale en-GB) [โœ“] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [โœ“] Xcode - develop for iOS and macOS (Xcode 14.0.1) [โœ“] Chrome - develop for the web [โœ“] Android Studio (version 2021.3) [โœ“] VS Code (version 1.72.1) [โœ“] Connected device (5 available) [โœ“] HTTP Host Availability

    Not a big issue but not great for the future

    Hope it helps keep this amazing plugin up to date

    opened by stephaneleonard 0
  • Crashes when image is selected from gallery (For image scan)

    Crashes when image is selected from gallery (For image scan)

    java.lang.RuntimeException: Canvas: trying to draw too large(143952004bytes) bitmap. E/AndroidRuntime(12150): at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:280) E/AndroidRuntime(12150): at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:88) E/AndroidRuntime(12150): at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:548) E/AndroidRuntime(12150): at android.widget.ImageView.onDraw(ImageView.java:1434) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21440) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20317) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20308) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21443) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20317) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20308) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20308) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20308) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20308) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21172) E/AndroidRuntime(12150): at android.view.ViewGroup.drawChild(ViewGroup.java:4388) E/AndroidRuntime(12150): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) E/AndroidRuntime(12150): at android.view.View.draw(View.java:21443) E/AndroidRuntime(12150): at com.android.internal.policy.DecorView.draw(DecorView.java:806) E/AndroidRuntime(12150): at android.view.View.updateDisplayListIfDirty(View.java:20317) E/AndroidRuntime(12150): at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575) E/AndroidRuntime(12150): at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581) E/AndroidRuntime(12150): at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654) E/AndroidRuntime(12150): at android.view.ViewRootImpl.draw(ViewRootImpl.java:3608) E/AndroidRuntime(12150): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3416) E/AndroidRuntime(12150): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2753) E/AndroidRuntime(12150): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1719) E/AndroidRuntime(12150): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7602) E/AndroidRuntime(12150): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029) E/AndroidRuntime(12150): at android.view.Choreographer.doCallbacks(Choreographer.java:852) E/AndroidRuntime(12150): at android.view.Choreographer.doFrame(Choreographer.java:787) E/AndroidRuntime(12150): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1014) E/AndroidRuntime(12150): at android.os.Handler.handleCallback(Handler.java:883) E/AndroidRuntime(12150): at android.os.Handler.dispatchMessage(Handler.java:100) E/AndroidRuntime(12150): at android.os.Looper.loop(Looper.java:214) E/AndroidRuntime(12150): at android.app.ActivityThread.main(ActivityThread.java:7403) E/AndroidRuntime(12150): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(12150): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E/AndroidRuntime(12150): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

    opened by ManjunathVMK 5
  • Not able to preview the document when PDf scan is completed by clicking on Done button getting below IllegalStateException

    Not able to preview the document when PDf scan is completed by clicking on Done button getting below IllegalStateException

    Called hasAlpha() on a recycle()'d bitmap! This is undefined behavior! I/System.out( 9253): Already closed W/System.err( 9253): java.lang.IllegalStateException: Already closed W/System.err( 9253): at android.graphics.pdf.PdfRenderer.throwIfClosed(PdfRenderer.java:270) W/System.err( 9253): at android.graphics.pdf.PdfRenderer.close(PdfRenderer.java:187) W/System.err( 9253): at pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin.getPage(FlutterPluginPdfViewerPlugin.java:206) W/System.err( 9253): at pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin.access$100(FlutterPluginPdfViewerPlugin.java:31) W/System.err( 9253): at pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin$1.run(FlutterPluginPdfViewerPlugin.java:84) W/System.err( 9253): at android.os.Handler.handleCallback(Handler.java:883) W/System.err( 9253): at android.os.Handler.dispatchMessage(Handler.java:100) W/System.err( 9253): at android.os.Looper.loop(Looper.java:214) W/System.err( 9253): at android.os.HandlerThread.run(HandlerThread.java:67) D/PdfViewerPlugin( 9253): Retrieving page failed. D/AndroidRuntime( 9253): Shutting down VM E/AndroidRuntime( 9253): FATAL EXCEPTION: main E/AndroidRuntime( 9253): Process: com.smartehr.medeva.prod, PID: 9253 E/AndroidRuntime( 9253): java.lang.IllegalStateException: Reply already submitted E/AndroidRuntime( 9253): at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:430) E/AndroidRuntime( 9253): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success(MethodChannel.java:267) E/AndroidRuntime( 9253): at pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin$1$2.run(FlutterPluginPdfViewerPlugin.java:92) E/AndroidRuntime( 9253): at android.os.Handler.handleCallback(Handler.java:883) E/AndroidRuntime( 9253): at android.os.Handler.dispatchMessage(Handler.java:100) E/AndroidRuntime( 9253): at android.os.Looper.loop(Looper.java:214) E/AndroidRuntime( 9253): at android.app.ActivityThread.main(ActivityThread.java:7403) E/AndroidRuntime( 9253): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 9253): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E/AndroidRuntime( 9253): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935) D/Bugsnag ( 9253): DeliveryDelegate#deliver() - event being stored/delivered by Client

    opened by ManjunathVMK 0
  • Document Scanner not working.

    Document Scanner not working.

    1. On single button click two instance of camera and Gallery are opening.

    2. After clicking of image it is not moving to image cropper screen. Also its show on log isDirectoryCreated=false, and onTruncateError

    opened by Biswajit-Paul-2021 0
Owner
Ishaq Hassan
Flutter <3
Ishaq Hassan
bq Scanner : An QR Code and Barcode Scanner and Generator.

bq Scanner A Barcode Scanner. A QR Code Scanner. A Barcode Generator. A QR Code Generator. Visit bq Scanner at https://ritikpatle.github.io/bqscanner/

Ritik Patle 4 Jun 5, 2022
๐Ÿ›  Flutter QR code scanner plugin.

Language: English | ไธญๆ–‡็ฎ€ไฝ“ QR Code Scanner A Flutter plugin ?? to scanning. Ready for Android ?? github Permission๏ผš <uses-permission android:name="andro

Sword 349 Dec 20, 2022
Barcode scanner plugin for flutter. Supports barcode scanning for Android and iOS

flutter_barcode_scanner A plugin for Flutter apps that adds barcode scanning support on both Android and iOS. Try example Just clone or download the r

Amol Gangadhare 325 Jan 6, 2023
A QR code/ barcode scanner made using Flutter.

QR Scanner A Flutter based QR/Bar code scanner app with dark mode and material design. Scan QR codes. Scan barcodes. Show result in a popup. Clicking

Hash Studios 10 Nov 15, 2022
Animated_qr_code_scanner - QR Code Scanner for Flutter with animated targetting box

Animated QR Code Scanner A QR code scanner Widget that currently works on Android only (feel free to make pull request on iOS implementation) by nativ

Kiat Stanley 72 Dec 11, 2022
FlutterQRcode - Flutter QR Code Scanner app for a specific type of QR using GetX State Management Architecture

qrcode A new Flutter QR Scanner Project for Data Entry using GetX state manageme

null 8 Dec 11, 2022
QR-Scanner - Flutter App To Scan QR Code

QR-Scanner App To Scan QR Code QR-Scanner.mp4 Features: Scan QR Codes Scan 2D Ba

null 7 Nov 2, 2022
A full screen mobile scanner for scanning QR Code and Bar Code.

Flutter QR Bar Scanner A Full Screen Scanner for Scanning QR code and Barcode using Google's Mobile Vision API Reading & Scanning QR/Bar codes using F

Lutfor Rahman 31 Oct 5, 2022
Log4Shell Scanner For Dart

Log4j Log4Shell Scanner Dart (l4ss_dart) Log4ShellScanner Dart I love Dart. I ha

null 0 Dec 18, 2021
Custom Camera, Barcode Scanner etc

in_app_camera A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Faizan Darwesh 0 Dec 30, 2021
QRCode Generator and QR Scanner

QRCode Scanner Flutter App Functionality : Generate QR code from text Share QR Code Scan QR Code using camera and get text result This project is a st

null 2 Sep 27, 2022
This is just the simplyfied Flutter Plugin use for one of the popular flutter plugin for social media login.

social_media_logins Flutter Plugin to login via Social Media Accounts. Available Social Media Logins: Facebook Google Apple Getting Started To use thi

Reymark Esponilla 3 Aug 24, 2022
Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.

Flutter permission_handler plugin The Flutter permission_handler plugin is build following the federated plugin architecture. A detailed explanation o

Baseflow 1.7k Dec 31, 2022
Unloc customizations of the Permission plugin for Flutter. This plugin provides an API to request and check permissions.

Flutter Permission handler Plugin A permissions plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check perm

Unloc 1 Nov 26, 2020
Klutter plugin makes it possible to write a Flutter plugin for both Android and iOS using Kotlin only.

The Klutter Framework makes it possible to write a Flutter plugin for both Android and iOS using Kotlin Multiplatform. Instead of writing platform spe

Gillian 33 Dec 18, 2022
A Flutter step_tracker plugin is collect information from user and display progress through a sequence of steps. this plugin also have privilege for fully customization from user side. like flipkart, amazon, myntra, meesho.

step_tracker plugin A Flutter step_tracker plugin is collect information from user and display progress through a sequence of steps. this plugin also

Roshan nahak 5 Oct 21, 2022
Boris Gautier 1 Jan 31, 2022
A Side Menu plugin for flutter and compatible with liquid ui for flutter

Liquid Shrink Side Menu A Side Menu plugin for flutter and compatible with liquid ui Side Menu Types There are 8 configuration of Liquid shrink side m

Raj Singh 18 Nov 24, 2022