Need help with flutter_pdfview?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Global Rank
#417,037
Topics of expertise
shadow
elevati...
image-s...
image-g...
carouse...
react-c...
Dart
Location
Mongolia
107 Stars 61 Forks MIT License 135 Commits 30 Opened issues

Description

PDF view for Flutter

Services available

Free trial
!
?

Need anything else?

Contributors list

# 417,037
CSS
Dart
Shell
elevati...
8 commits
# 391,973
Flutter
Dart
flutter...
Shell
5 commits
# 156,550
Objecti...
Dart
Shell
3 commits
# 304,745
Dart
Flutter
hashcod...
CSS
2 commits
# 256,055
wallet
Swift
Dart
Shell
2 commits
# 441,839
Dart
Shell
Kotlin
1 commit
# 129,103
oauth2
C#
openid-...
.NET
1 commit
# 484,803
Gradle
gradle-...
Kotlin
Dart
1 commit
# 756,752
Dart
Objecti...
Shell
1 commit
# 90,197
PHP
Dart
Symfony
linecha...
1 commit
# 302,930
HTML
Symfony
Shell
Dart
1 commit

flutter_pdfview

Native PDF View for iOS and Android

xscode Latest compatibility result for Stable channel Latest compatibility result for Beta channel Latest compatibility result for Dev channel

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
...
io.flutter.embedded_views_preview

...

4. Import it

Now in your Dart code, you can use:

import 'package:flutter_pdfview/flutter_pdfview.dart';

Options

| Name | Android | iOS | Default | | :-------------------- | :-----: | :-: | :---------------: | | defaultPage | ✅ | ✅ |

0
| | onViewCreated | ✅ | ✅ |
null
| | onRender | ✅ | ✅ |
null
| | onPageChanged | ✅ | ✅ |
null
| | onError | ✅ | ✅ |
null
| | onPageError | ✅ | ❌ |
null
| | onLinkHandle | ✅ | ✅ |
null
| | gestureRecognizers | ✅ | ✅ |
null
| | filePath | ✅ | ✅ | | | pdfData | ✅ | ✅ | | | fitPolicy | ✅ | ❌ |
FitPolicy.WIDTH
| | enableSwipe | ✅ | ✅ |
true
| | swipeHorizontal | ✅ | ✅ |
false
| | password | ✅ | ✅ |
null
| | nightMode | ✅ | ❌ |
false
| | password | ✅ | ✅ |
null
| | autoSpacing | ✅ | ✅ |
true
| | pageFling | ✅ | ✅ |
true
| | pageSnap | ✅ | ❌ |
true
| | preventLinkNavigation | ✅ | ✅ |
false
|

Controller Options

| Name | Description | Parameters | Return | | :------------- | :------------------: | :--------: | :------------: | | getPageCount | Get total page count | - |

Future
| | getCurrentPage | Get current page | - |
Future
| | setPage | Go to/Set page |
int page
|
Future
|

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

Support

Buy Me A Coffee

Donate with PayPal button

Developer

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.