PDF view for Flutter

  PDF

flutter_pdfview

Native PDF View for iOS and Android

Use this package as a library

1. Depend on it

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

dependencies:
  flutter_pdfview: ^1.0.4

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
defaultPagewhite_check_markwhite_check_mark0
onViewCreatedwhite_check_markwhite_check_marknull
onRenderwhite_check_markwhite_check_marknull
onPageChangedwhite_check_markwhite_check_marknull
onErrorwhite_check_markwhite_check_marknull
onPageErrorwhite_check_markxnull
onLinkHandlewhite_check_markwhite_check_marknull
gestureRecognizerswhite_check_markwhite_check_marknull
filePathwhite_check_markwhite_check_mark
pdfDatawhite_check_markwhite_check_mark
fitPolicywhite_check_markxFitPolicy.WIDTH
enableSwipewhite_check_markwhite_check_marktrue
swipeHorizontalwhite_check_markwhite_check_markfalse
passwordwhite_check_markwhite_check_marknull
nightModewhite_check_markxfalse
passwordwhite_check_markwhite_check_marknull
autoSpacingwhite_check_markwhite_check_marktrue
pageFlingwhite_check_markwhite_check_marktrue
pageSnapwhite_check_markxtrue
preventLinkNavigationwhite_check_markwhite_check_markfalse

Controller Options

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

Example

PDFView(
  filePath: path,
  enableSwipe: true,
  swipeHorizontal: true,
  autoSpacing: false,
  pageFling: false,
  onRender: (_pages) {
    setState(() {
      pages = _pages;
      isReady = true;
    });
  },
  onError: (error) {
    print(error.toString());
  },
  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

  • Replace barteksc/AndroidPdfViewer with MuPDF or Android Native PDF Renderer.
  • Improve documentation
  • Support other platforms such as MacOS, Windows, Linux and Web
  • Add search functionality
  • Improve performance on zooming, page changing
  • Improve image quality
  • Write more test

Download flutter pdfview package souce code on GitHub

https://github.com/endigo/flutter_pdfview