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.

Requirements

  • Flutter 3.47 or later (Dart 3.13 or later)
  • iOS 15 or later
  • macOS 12 or later

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.