Open-source Flutter PDF editor

A complete Flutter PDF editor, written entirely in Dart.

Add dart_pdf_editor to edit existing PDFs inside a Flutter app. The drop-in editor views, annotates, fills forms, signs, redacts, edits text, manages pages, and saves changes back to PDF. It uses one Dart engine on iOS, Android, macOS, Windows, Linux, and web, with no PDFium or platform views. Apache-2.0, on pub.dev.

# Add the editor to your Flutter app
flutter pub add dart_pdf_editor
import 'package:dart_pdf_editor/dart_pdf_editor.dart';

// A complete PDF editor: viewer, tools, panels, undo/redo, save.
PdfEditorView(
  bytes: pdfBytes,
  onSave: (bytes) => writeFile(bytes),
)

// Or a view-only reader.
PdfReader(bytes: pdfBytes)
Flutter PDF editor showing page thumbnails, annotation tools, a PDF page, and editing controls.
The same editor UI runs on all six Flutter platforms and saves edits into the PDF.

Features

The commercial-SDK feature set, open source.

Viewing, annotating, forms, signing, redaction, page management, text editing, and OCR. In other words, the things apps actually license a PDF SDK for.

PDF viewer

Zoom and pan with fit modes, deep-zoom detail rendering, text selection, full-text search, links, outlines, dark mode, and theming.

Annotations

Markup, pressure-sensitive ink, shapes, callouts, notes, stamps, and measurement tools, all with generated appearance streams. Select, move, resize, rotate, copy/paste, undo/redo.

Forms

Fill AcroForm text, checkbox, radio, and choice fields with regenerated appearances. You can also author fields: create, rename, retype, delete, flatten.

Digital signatures

Sign and validate up to PAdES B-LTA with RFC 3161 timestamps and long-term validation. Output validates in pyHanko, OpenSSL, and poppler.

Redaction

True redaction per the PDF spec: covered text and images are removed from the file bytes, not painted over.

Text editing

Rewrite existing page text in place with width-compensated metrics, and reflow whole paragraphs when the line count changes.

Pages

Reorder, delete, merge across documents, and split to new files, with drag-and-drop thumbnail UI included.

OCR

Pluggable engines add an invisible, selectable text layer to scans: on-device PP-OCR via ONNX, or any HTTP OCR service, including on Flutter web.

Robust parsing

Encrypted files (RC4/AES), broken real-world PDFs, CCITT/JBIG2/JPEG 2000 images, and ICC color, with conformance pinned against the Ghent suite and the PDF.js test corpus.

Performance

Pure Dart is not a compromise on speed.

On a real-world corpus of 49 files and 255 pages (CAD drawings, scans, reports, forms), the parse and content-stream interpreter runs about 1.9× faster than PDFium, the C++ engine Chrome uses. Full Flutter rasterization is currently about 2× slower end to end; the gap is image decoding and GPU raster, not the interpreter.

The benchmark harness diffs dart-pdf against PDFium file by file, so you can check the numbers yourself.

ms per page, lower is better 49 files · 255 pages
dart-pdf interpret (pure Dart)13.3 ms
PDFium (open + rasterize)24.9 ms
dart-pdf render (full Flutter raster)52.0 ms

Scale 2, PDFium via pypdfium2. Methodology and per-file results in the repo's benchmark/ directory.

Compare

How it compares to commercial PDF SDKs.

Nutrient (formerly PSPDFKit) and Syncfusion are mature, well-supported commercial products. The difference is architecture and licensing: dart-pdf is one open-source Dart engine on every platform Flutter ships to.

dart_pdf_editor Nutrient (PSPDFKit) Flutter Syncfusion Flutter PDF Viewer
License Apache-2.0, free and open source Commercial, contact sales Commercial or free community license
Flutter platforms iOS, Android, macOS, Windows, Linux, Web iOS, Android, Web iOS, Android, macOS, Windows, Web
Rendering engine Pure Dart, same engine everywhere Native engine per platform Native rendering; PDF.js on web
Annotations & forms Yes, authoring + filling Yes Yes
Digital signatures Sign + validate, PAdES up to B-LTA Yes Yes (via PDF library)
Source code Open, on GitHub Closed Source-available with license

Vendor capabilities summarized from their public documentation as of July 2026. Always check the vendors' current docs. No performance comparisons are made against commercial SDKs.

Packages

Strictly layered, use what you need.

The Flutter widgets sit on three pure-Dart packages that run on the VM, in CLIs and servers, and on the web. There is no Flutter dependency below the widget layer.