uc_pdfview

Base on Flutter PDF view for iOS and Android. onError throw "Password required or incorrect password." for password protected PDF on both Android and IOS. See example for more details.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  uc_pdfview: ^0.0.1

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Setup

iOS

Opt-in to the embedded views preview by adding a boolean property to the app's Info.plist file with the key io.flutter.embedded_views_preview and the value YES.

# Info.plist
...
<key>io.flutter.embedded_views_preview</key>
<true/>
...

4. Import it

Now in your Dart code, you can use:

import 'package:flutter_pdfview/flutter_pdfview.dart';

Options

NameAndroidiOSDefault
defaultPage0
onViewCreatednull
onRendernull
onPageChangednull
onErrornull
onPageErrornull
onLinkHandlenull
gestureRecognizersnull
filePath
pdfData
fitPolicyFitPolicy.WIDTH
enableSwipetrue
swipeHorizontalfalse
passwordnull
nightModefalse
passwordnull
autoSpacingtrue
pageFlingtrue
pageSnaptrue
preventLinkNavigationfalse

Controller Options

NameDescriptionParametersReturn
getPageCountGet total page count-Future<int>
getCurrentPageGet current page-Future<int>
setPageGo to/Set pageint pageFuture<bool>

Example

UCPDFView(
  filePath: path,
  enableSwipe: true,
  swipeHorizontal: true,
  autoSpacing: false,
  pageFling: false,
  onRender: (_pages) {
    setState(() {
      pages = _pages;
      isReady = true;
    });
  },
  onError: (error) {
    print(error.toString());
        if(error.toString().contains("Password required or incorrect password.")) {
          // Show your Password Dialog supported both Android and IOS
       }
  },
  onPageError: (page, error) {
    print('$page: ${error.toString()}');
  },
  onViewCreated: (PDFViewController pdfViewController) {
    _controller.complete(pdfViewController);
  },
  onPageChanged: (int page, int total) {
    print('page change: $page/$total');
  },
),

For production usage

If you use proguard, you should include this line.

-keep class com.shockwave.**

Dependencies

Android

AndroidPdfViewer

iOS (only support> 11.0)

PDFKit

Future plans

  • Password Dialog for password protected PDF.
  • Improve documentation.
  • Improve performance on zooming, page changing.
  • PDF Download option.

Libraries

pdf_view
uc_pdfview