Flutter Document SDK by Nutrient
Add powerful PDF functionality to your Flutter apps with the Nutrient Flutter SDK. View, annotate, and edit PDFs seamlessly across Android, iOS, and Web platforms.
Requirements
- Flutter SDK (latest stable version)
- For Android:
- Android Studio (latest stable version)
- Android NDK
- Android Virtual Device or physical device
- For iOS:
- Xcode 16 or later
- iOS 16.0 or later
- For Web:
- Modern web browser with WebAssembly support
Installation
- Add the Nutrient Flutter SDK to your
pubspec.yaml
:
dependencies:
pspdfkit_flutter: any
- Run the following command:
flutter pub get
Platform Setup
Android Setup
- Update your Android configuration in
android/app/build.gradle
:
android {
compileSdkVersion 35
defaultConfig {
minSdkVersion 21
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:<version>'
}
- Update your theme in
android/app/src/main/res/values/styles.xml
:
- <style name="NormalTheme" parent="Theme.AppCompat.Light.NoActionBar">
+ <style name="NormalTheme" parent="PSPDFKit.Theme.Default">
- Update your main activity to use
FlutterAppCompatActivity
:
import io.flutter.embedding.android.FlutterAppCompatActivity
class MainActivity: FlutterAppCompatActivity() {
}
iOS Setup
Make sure to set the minimum iOS version to 16.0 in your ios/Podfile
:
platform :ios, '16.0'
Web Setup
The Nutrient Web SDK files are distributed as an archive that needs to be extracted manually:
-
Download Nutrient Web SDK. The download will start immediately and save a
.tar.gz
archive likePSPDFKit-Web-binary-<version>.tar.gz
to your computer. -
Once downloaded, extract the archive and copy the entire contents of its
dist
folder to your project'sweb/assets
folder. -
Verify your
assets
folder contains:pspdfkit.js
filepspdfkit-lib
directory with library assets
-
Add the Nutrient library to your
web/index.html
:
<script src="assets/pspdfkit.js"></script>
Note: Your server must have the Content-Type: application/wasm
MIME type configured for WebAssembly files.
Sample Document Setup
- Create a
PDFs
directory in your project root:
mkdir PDFs
-
Download our sample PDF document and save it as
Document.pdf
in thePDFs
directory. -
Add the assets directory to your
pubspec.yaml
:
flutter:
assets:
- PDFs/
Usage
Create a new file lib/main.dart
with the following content:
import 'package:flutter/material.dart';
import 'package:pspdfkit_flutter/pspdfkit_flutter.dart';
import 'dart:io';
import 'package:flutter/foundation.dart';
const String documentPath = 'PDFs/Document.pdf';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize the Nutrient SDK with your license key
await Pspdfkit.initialize(
androidLicenseKey: 'YOUR_ANDROID_LICENSE_KEY',
iosLicenseKey: 'YOUR_IOS_LICENSE_KEY',
webLicenseKey: 'YOUR_WEB_LICENSE_KEY',
);
runApp(const MaterialApp(
home: MyApp(),
));
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Future<String> extractAsset(BuildContext context, String assetPath) async {
if (kIsWeb) {
return assetPath;
}
final bytes = await DefaultAssetBundle.of(context).load(assetPath);
final list = bytes.buffer.asUint8List();
final tempDir = await Pspdfkit.getTemporaryDirectory();
final tempDocumentPath = '${tempDir.path}/$assetPath';
final file = File(tempDocumentPath);
await file.create(recursive: true);
file.writeAsBytesSync(list);
return file.path;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<String>(
future: extractAsset(context, documentPath),
builder: (context, snapshot) {
if (snapshot.hasData) {
/// PspdfkitWidget is a widget that displays a PDF document.
return PspdfkitWidget(
documentPath: snapshot.data!,
);
} else if (snapshot.hasError) {
return Center(
child: Text('${snapshot.error}'),
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
}),
);
}
}
Note: Replace 'YOUR_ANDROID_LICENSE_KEY'
, 'YOUR_IOS_LICENSE_KEY'
, and 'YOUR_WEB_LICENSE_KEY'
with your actual license keys. Do not pass any license keys if you want to run the SDK in demo mode, the SDK will run in demo mode with a watermark.
Learn More
Support
Visit our Support Center for help with the SDK.
License
This project is licensed under the Nutrient Commercial License. See LICENSE for details.
Libraries
- pspdfkit
- Copyright © 2018-2024 PSPDFKit GmbH. All rights reserved.
- pspdfkit_flutter
- Copyright © 2018-2024 PSPDFKit GmbH. All rights reserved.