Native PDF View for iOS and Android
Add this to your package's pubspec.yaml file:
dependencies:
flutter_pdfview: 1.4.4
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.
Now in your Dart code, you can use:
import 'package:flutter_pdfview/flutter_pdfview.dart';
| Name | Android | iOS | Default |
|---|---|---|---|
| defaultPage | ✅ | ✅ | 0 |
| onViewCreated | ✅ | ✅ | null |
| onRender | ✅ | ✅ | null |
| onPageChanged | ✅ | ✅ | null |
| onLoadComplete | ✅ | ✅ | null |
| onDraw | ✅ | ✅ | null |
| onError | ✅ | ✅ | null |
| onPageError | ✅ | ❌ | null |
| onLinkHandle | ✅ | ✅ | null |
| gestureRecognizers | ✅ | ✅ | null |
| filePath | ✅ | ✅ | |
| pdfData | ✅ | ✅ | |
| fitPolicy | ✅ | ❌ | FitPolicy.WIDTH |
| enableSwipe | ✅ | ✅ | true |
| swipeHorizontal | ✅ | ✅ | false |
| password | ✅ | ✅ | null |
| nightMode | ✅ | ❌ | false |
| autoSpacing | ✅ | ✅ | true |
| pageFling | ✅ | ✅ | true |
| pageSnap | ✅ | ❌ | true |
| preventLinkNavigation | ✅ | ✅ | false |
| backgroundColor | ✅ | ✅ | null |
| Name | Description | Parameters | Return |
|---|---|---|---|
| getPageCount | Get total page count | - | Future<int> |
| getCurrentPage | Get current page | - | Future<int> |
| setPage | Go to/Set page | int page |
Future<bool> |
| getCurrentPageSize | Return the width and height of the loaded page | - | Future<Size> |
| getScreenshot | Create a PNG of the contents of the PDFView and save to fileName | String fileName |
Future<String> |
| getPosition | Get the position of the top left of the PDF with respect to the origin (top left of PDFView) | - | Future<Offset> |
| getScale | Get the PDF zoom value, for zooming | - | Future<double> |
| setPosition | Set the position of the top left of the PDF with respect to the origin (top left of PDFView) | Offset position |
Future<bool> |
| setScale | Set the PDF zoom value, for zooming | double scale |
Future<bool> |
| setZoomLimits | Set the minimum, maximum and mid bounds of the zoom limits | double minZoom, double midZoom, double maxZoom |
- |
| reload | Reload the PDF document in the PDFView | - | Future<bool> |
PDFView(
filePath: path,
enableSwipe: true,
swipeHorizontal: true,
autoSpacing: false,
pageFling: false,
backgroundColor: Colors.grey,
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');
},
onLoadComplete: (int? pages) {
print('# of pages: $pages');
},
onDraw: () {
print('onDraw');
},
),- 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
