binSaed / flutter_cached_pdfview

Enhanced PDF view for Flutter.
https://pub.dev/packages/flutter_cached_pdfview
MIT License
117 stars 67 forks source link
android cache cached-pdfview dart flutter flutter-cached-pdfview flutter-pdf ios pdf pdfview

flutter_cached_pdfview

Awesome Flutter

Pub Version GitHub repo size issues-raw license last-commit stars Dart CI


A package to show Native PDF View for iOS and Android, support Open from a different resource like Path, Asset or Url and Cache it. ### Support = [**[ Android , IOS and _WEB_(soon) ](#video)**]; * Open Pdf From Path(local file) * Open Pdf From Asset * Open Pdf From URl and Cache it * Display horizontally or vertically * Drag and zoom * Double tap for zoom * Support password protected pdf * Jump to a specific page in the pdf --- ### 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`. iOS (only support> 11.0) you need to add this line in your ios/Podfile `platform :ios, '11.0'` ready-made in the [Example](https://github.com/AbdOoSaed/flutter_cached_pdfview/tree/master/example) ### Import it Now in your Dart code, you can use: ``` import 'package:flutter_cached_pdfview/flutter_cached_pdfview.dart'; ``` ## Options | Name | Android | iOS | Default | | :-------------------- | :-----: | :-: | :---------------: | | defaultPage | ✅ | ✅ | `0` | | onViewCreated | ✅ | ✅ | `null` | | onRender | ✅ | ✅ | `null` | | onPageChanged | ✅ | ✅ | `null` | | onError | ✅ | ✅ | `null` | | onPageError | ✅ | ❌ | `null` | | onLinkHandle | ✅ | ✅ | `null` | | gestureRecognizers | ✅ | ✅ | `null` | | filePath | ✅ | ✅ | | | fitPolicy | ✅ | ❌ | `FitPolicy.WIDTH` | | enableSwipe | ✅ | ✅ | `true` | | swipeHorizontal | ✅ | ✅ | `false` | | password | ✅ | ✅ | `null` | | nightMode | ✅ | ❌ | `false` | | 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](https://github.com/AbdOoSaed/flutter_cached_pdfview/tree/master/example) #### from Asset ```dart PDF( enableSwipe: true, swipeHorizontal: true, autoSpacing: false, pageFling: false, onError: (error) { print(error.toString()); }, onPageError: (page, error) { print('$page: ${error.toString()}'); }, onPageChanged: (int page, int total) { print('page change: $page/$total'); }, ).fromAsset('assets/pdf/file-example.pdf'), ``` #### cached From Url ```dart PDF( swipeHorizontal: true, ).cachedFromUrl('http://africau.edu/images/default/sample.pdf'), ``` #### with placeholder until pdfFile download and errorWidget if there are problem ```dart PDF().cachedFromUrl( 'http://africau.edu/images/default/sample.pdf', placeholder: (progress) => Center(child: Text('$progress %')), errorWidget: (error) => Center(child: Text(error.toString())), ) ``` # For production usage If you use proguard, you should include this line [ready-made in the [Example](https://github.com/AbdOoSaed/flutter_cached_pdfview/tree/master/example)]. ``` -keep class com.shockwave.** ``` # Dependencies ### Flutter [flutter_pdfview](https://pub.dev/packages/flutter_pdfview) [flutter_cache_manager](https://pub.dev/packages/flutter_cache_manager) ### Android (only support >= api 20) [AndroidPdfViewer](https://github.com/barteksc/AndroidPdfViewer) ### iOS (only support> 11.0) [PDFKit](https://developer.apple.com/documentation/pdfkit)

# Video ![IOS](https://user-images.githubusercontent.com/33700292/84393190-913c2380-abfb-11ea-9e4e-1f1bd1fe2305.gif) ![WEB](https://user-images.githubusercontent.com/33700292/86278983-8ca2d380-bbd9-11ea-8861-7780fe9eee03.gif) # Support

Buy Me A Coffee

Donate with PayPal button
buy me a coffee by PayPal

### Developer - [Abdelrahman Saed](https://github.com/binSaed)