pspdfkit_flutter 3.0.1 pspdfkit_flutter: ^3.0.1 copied to clipboard
A Flutter plugin providing a feature-rich PDF viewing and editing experience to your users with the powerful PSPDFKit PDF SDK.
PSPDFKit Flutter #
PSPDFKit for Flutter is available at pub.dev and GitHub.
If you are new to Flutter, make sure to check our Flutter blog posts:
- How I Got Started With Flutter.
- Getting Started with PSPDFKit Flutter.
- Opening a PDF in Flutter.
- How to Bridge Native iOS Code to Flutter.
- How to Customize Our Flutter PDF SDK for Android.
- Advances in Hybrid Technologies.
- How We Maintain Our Public Flutter Project Using a Private Monorepo.
For our quick-start guides, check out our website.
Platform specific README exists for Android and iOS.
Setup #
Integration into a New Flutter App #
Android #
Requirements
- The latest stable version of Flutter
- The latest stable version of Android Studio
- The Android NDK
- An Android Virtual Device or a hardware device
Getting Started
-
Create a Flutter project called
pspdfkit_demo
with theflutter
CLI:flutter create --org com.example.pspdfkit_demo pspdfkit_demo
-
In the terminal app, change the location of the current working directory to your project:
cd pspdfkit_demo
-
Open the project’s Gradle build file,
android/build.gradle
:open android/build.gradle
-
Modify the Kotlin version inside the
buildscript
section:buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.5.31' repositories { google() mavenCentral() } ...
-
Open the app’s Gradle build file,
android/app/build.gradle
:open android/app/build.gradle
-
Modify the minimum SDK version, and enable
multidex
. All this is done inside theandroid
section:android { defaultConfig { - minSdkVersion 16 + minSdkVersion 21 ... + multiDexEnabled true } }
-
Open
pubspec.yaml
:open pubspec.yaml
-
Add the PSPDFKit dependency in
pubspec.yaml
:dependencies: flutter: sdk: flutter + pspdfkit_flutter: any
-
From the terminal app, run the following command to get all the packages:
flutter pub get
-
Then run the command below to upgrade the dependencies:
flutter pub upgrade
-
Open
lib/main.dart
and replace the entire content with the contents of demo_project_main.dart.txt. This simple example will load a PDF document from local device filesystem. -
Add the PDF document you want to display in your project’s
assets
directory.-
First create a
PDFs
directory:mkdir PDFs
-
Move a sample document into the newly created
PDFs
directory, and rename it asDocument.pdf
:cp ~/Downloads/PSPDFKit.pdf PDFs/Document.pdf
-
-
Specify the
assets
directory inpubspec.yaml
:# The following section is specific to Flutter. flutter: + assets: + - PDFs/ ...
-
Start your Android emulator, or connect a device.
-
Run the app with:
flutter run
iOS #
Requirements
- The latest stable version of Flutter
- The latest stable version of Xcode
- The latest stable version of CocoaPods
Getting Started
-
Create a Flutter project called
pspdfkit_demo
with theflutter
CLI:flutter create --org com.example.pspdfkit_demo pspdfkit_demo
-
In the terminal app, change the location of the current working directory to your project:
cd pspdfkit_demo
-
Open
Runner.xcworkspace
from theios
folder in Xcode:open ios/Runner.xcworkspace
-
Make sure the
iOS Deployment Target
is set to 13.0 or higher. -
Change "View controller-based status bar appearance" to YES in
Info.plist
. -
Add the PSPDFKit dependency in
pubspec.yaml
:dependencies: flutter: sdk: flutter + pspdfkit_flutter:
-
From the terminal app, run the following command to get all the packages:
flutter pub get
-
Then run the command below to upgrade the dependencies:
flutter pub upgrade
-
Open your project’s Podfile in a text editor:
open ios/Podfile
-
Update the platform to iOS 13 and add the PSPDFKit Podspec:
-# platform :ios, '9.0' + platform :ios, '13.0' ... target 'Runner' do use_frameworks! use_modular_headers!` flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + pod 'PSPDFKit', podspec:'https://customers.pspdfkit.com/pspdfkit-ios/latest.podspec' end
-
Open
lib/main.dart
and replace the entire content with the contents of demo_project_main.dart.txt. This simple example will load a PDF document from local device filesystem. -
Add the PDF document you want to display in your project’s
assets
directory.-
First create a
PDFs
directory:mkdir PDFs
-
Move a sample document into the newly created
PDFs
directory, and rename it asDocument.pdf
:cp ~/Downloads/PSPDFKit.pdf PDFs/Document.pdf
-
-
Specify the
assets
directory inpubspec.yaml
:# The following section is specific to Flutter. flutter: + assets: + - PDFs/ ...
-
Run
flutter emulators --launch apple_ios_simulator
to launch the iOS Simulator. -
Run the app with:
flutter run
Example App #
To see PSPDFKit Flutter in action check out our Flutter example app.
Showing a PDF document inside your Flutter app is as simple as this:
```dart
Pspdfkit.present('file:///path/to/Document.pdf');
```
Upgrading to a Full PSPDFKit License Key #
PSPDFKit is a commercial product and requires the purchase of a license key when used in production. By default, this library will initialize in demo mode, placing a watermark on each PDF and limiting usage to 60 minutes.
To purchase a license for production use, please reach out to us via https://pspdfkit.com/sales/form/.
To initialize PSPDFKit using a license key, call either of the following before using any other PSPDFKit APIs or features:
To set the license key for both Android and iOS, use:
await Pspdfkit.setLicenseKeys("YOUR_FLUTTER_ANDROID_LICENSE_KEY_GOES_HERE", "YOUR_FLUTTER_IOS_LICENSE_KEY_GOES_HERE");
To set the license key for the currently running platform, use:
await Pspdfkit.setLicenseKey("YOUR_FLUTTER_LICENSE_KEY_GOES_HERE");
Migrating from Version 1.10.3 #
Q: I updated the Flutter library and I am getting the following error:
lib/main.dart:8:8: Error: Error when reading '../../.pub-cache/git/pspdfkit-flutter-b6241555b1ee3e816a0dce65145991c1a4477d94/lib/pspdfkit.dart': No such file or directory
import 'package:pspdfkit_flutter/pspdfkit.dart';
^
lib/main.dart:37:7: Error: The getter 'Pspdfkit' isn't defined for the class '_MyAppState'.
- '_MyAppState' is from 'package:myapp/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'Pspdfkit'.
Pspdfkit.present(tempDocumentPath);
^^^^^^^^
lib/main.dart:58:32: Error: The getter 'Pspdfkit' isn't defined for the class '_MyAppState'.
- '_MyAppState' is from 'package:myapp/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'Pspdfkit'.
frameworkVersion = await Pspdfkit.frameworkVersion;
^^^^^^^^
lib/main.dart:73:5: Error: The getter 'Pspdfkit' isn't defined for the class '_MyAppState'.
- '_MyAppState' is from 'package:myapp/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'Pspdfkit'.
Pspdfkit.setLicenseKey("YOUR_LICENSE_KEY_GOES_HERE");
^^^^^^^^
FAILURE: Build failed with an exception.
A: If you were using version 1.10.3 or earlier, you will need to update the imports in your Dart files like so:
-import 'package:pspdfkit_flutter/pspdfkit.dart';
+import 'package:pspdfkit_flutter/src/main.dart';
Troubleshooting #
Flutter Updates #
To update Flutter to the latest version, all you have to do is run flutter upgrade
.
Flutter Configuration Problems #
Among the tools provided by Flutter, there is flutter doctor
, a very handy program that checks your system configuration for you and provides step-by-step actions to take in case of problems.
The verbose mode of flutter doctor is even more helpful; it prints out extensive information about the nature of an issue and how to fix it. To run the verbose mode, all you have to do is type flutter doctor -d
.
CocoaPods Conflicts With Asdf #
If asdf is installed in your machine it might create problems when running Cocoapods, and Flutter will erroneously suggest to install CocoaPods via brew with brew install cocoapods
. This won't work because for this specific configuration CocoaPods needs to be installed via RubyGems. To fix this configuration issue just type gem install cocoapods && pod setup
.