pdfium_flutter
Flutter FFI plugin for PDFium integration on native Flutter platforms. It supports Android, iOS, Windows, macOS, and Linux.
This package is part of the pdfrx project.
Overview
This package provides:
- PDFium deployment support for native Flutter platforms
- PDFium XCFramework integration for iOS and macOS through CocoaPods or Swift Package Manager
- Utilities for loading PDFium at runtime
- Low-level PDFium FFI bindings
Platform Support
| Platform | Support | Architectures | Notes |
|---|---|---|---|
| Android | ✅ | ARM64, ARMv7, x86, x86_64 | Build-time native asset packaging |
| iOS | ✅ | ARM64, Simulator | XCFramework via CocoaPods/SwiftPM |
| macOS | ✅ | ARM64, x86_64 | XCFramework via CocoaPods/SwiftPM |
| Windows | ✅ | x64, ARM64 | Build-time native asset packaging |
| Linux | ✅ | x64, ARM64, ARM, x86 | Build-time native asset packaging |
| Web | ❌ | N/A | FFI is not available for Web |
Usage
This package is primarily intended to be used as a dependency by higher-level packages like pdfrx. For Flutter projects that need direct PDFium access, prefer importing pdfium_flutter rather than the lower-level Dart package because this package includes the Flutter deployment layer.
import 'package:pdfium_flutter/pdfium_flutter.dart';
// Get PDFium bindings
final pdfium = pdfiumBindings;
// Or load with custom path
final customPdfium = getPdfium(modulePath: '/custom/path/to/pdfium.so');
Native Libraries
Android/Windows/Linux
PDFium binaries are downloaded and bundled at build time using Dart native assets. On Linux, pdfium_dart resolves the shared library from the Flutter app's shared library directory relative to the executable.
iOS/macOS
PDFium XCFramework is downloaded using CocoaPods/SwiftPM install from espresso3389/pdfium-xcframework. pdfium_dart detects Flutter on iOS/macOS and uses the PDFium symbols from the XCFramework instead of loading its own libpdfium.dylib native asset.
The native-assets link hooks coordinate this behavior at build time so the Flutter app links the XCFramework once and does not also bundle the native asset dylib from pdfium_dart.
The packaged Darwin XCFramework uses PDFium chromium/7811, build 20260502-190206.
Implementation note: pdfium_flutter re-exports the lower-level pdfium_dart bindings. Flutter apps should normally import pdfium_flutter so all native platform packaging is included.
Libraries
- pdfium_flutter
- Flutter FFI plugin for loading PDFium native libraries.