NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3231 most downloaded on pub.dev
PDF content interpreter, device interface, font engine, shadings, ICC color, and text extraction - render pages to any device. Pure Dart, web-ready.
Last release 3 days ago
05 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 42 of 43 stable releases
Nothing withdrawn
no release was ever pulled
3 months old
43 releases · first in 2026
One column per month.
Add DartPDF 7.0.0 AppStream release notes
Add DartPDF 7.0.0 AppStream release notes
ocrSpansNotIn to skip OCR spans already covered by page text.Describe 6.0.0 in Linux release metadata
Release DartPDF 6.0.0
Describe 6.0.0 in Linux release metadata
Co-authored-by: dart-pdf release automation probe actions@github.com
PdfStreamingCommandWriter for native workers to record directly to
the existing v11 wire format, avoiding an intermediate command graph.PdfImageDecodeCache.maxTransientEntryBytes for worker memory policy.Bump the app to 5.1.1+41 and the lockstep package suite to 5.1.1 (dart_pdf_cli 0.2.2, dart_pdf_editor_flutter_gpu 0.4.2, dart_pdf_printing 0.2.2), wit
Bump the app to 5.1.1+41 and the lockstep package suite to 5.1.1
(dart_pdf_cli 0.2.2, dart_pdf_editor_flutter_gpu 0.4.2, dart_pdf_printing
0.2.2), with every runtime inter-package constraint at ^.
This is a patch release: no public API breaks since 5.1.0, and one addition
integrators may see:
Write the 5.1.1 changelog sections from the one commit since app-v5.1.0,
the ink afterimage fix (#986): quick back-to-back ink commits each hid the
previous one on screen until the page re-rendered, because the editing
overlay kept only the latest commit as its afterimage. Commits now
accumulate and retire per page once the raster and annotation layer are
current. The other packages carry a version-bump entry. Dev dependency
ranges (<6.0.0) already admit 5.1.1.
Store notes cover the ink fix and note that 5.1.1 includes 5.1.0's
improvements, written platform-neutral per release-notes/README.md, across
20 iOS locales, 21 Play changelogs (41.txt) and both Linux metainfo copies.
The forms guide now says it applies to 5.1.1.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Bump the app to 5.1.0+40 and the lockstep package suite to 5.1.0 (dart_pdf_cli 0.2.1, dart_pdf_editor_flutter_gpu 0.4.1, dart_pdf_printing 0.2.1), wit
Bump the app to 5.1.0+40 and the lockstep package suite to 5.1.0
(dart_pdf_cli 0.2.1, dart_pdf_editor_flutter_gpu 0.4.1, dart_pdf_printing
0.2.1), with every runtime inter-package constraint at ^.
This is a minor release: no public API breaks since 5.0.0, with two things
integrators should know:
Write the 5.1.0 changelog sections from the commit bodies since
app-v5.0.0: the P-521 order fix, faster ECDSA, tolerant zlib inflate on
the web, the object-cache key and its side map, T-table AES, web SHA-2,
JPEG 2000, in-place updates on recovered documents, rollbackTo and
openAppended(password:) in pdf_cos; the page-loss fix under a short /Count,
linear page loops, reusable signature crypto cores and onFields in
pdf_document; the flagged masked-image output change, codec v10/v11,
cached luminosity masks, the revision-stable colour context, ICC, colorant
buffer and text-extraction speedups in pdf_graphics; trackpad signatures,
annotation previews, touch row menus, the moved-stamp white box, the web
worker fixes and in-place revisions in dart_pdf_editor; the new overprint
and ICC fixtures. Dev dependency ranges (<6.0.0) already admit 5.1.0.
Store notes cover trackpad signatures, annotation previews, touch row
menus, the moved-stamp fix, the page-loss fix, P-521 signatures and the
speedups, written platform-neutral per release-notes/README.md, across 20
iOS locales, 21 Play changelogs (40.txt) and both Linux metainfo copies.
The forms guide now says it applies to 5.1.0.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
deserializeCommands and
deserializePageText now throw FormatException on a buffer from another
format version instead of misreading it (the worker hosts already fall
back to local rendering).PdfImageDecodeCache at native
resolution, so a mask shared across pages, thumbnails and deep-zoom patches
decodes once. The cache key separates them from ordinary DeviceGray decodes.PdfColorContext across revisions while the document's OutputIntent
profile streams are unchanged. Every edit used to re-inflate and re-parse the
profile, and the stale contexts filled the image-overprint substitute memo,
so after a few edits image overprint silently stopped and 11 of the 54 Ghent
files drifted from their first rendering.deviceCmyk/deviceGray.m l c v y h re, painting, q Q cm w,
text positioning and state) straight from the content cursor on an int
opcode: the content walk takes 0.66-0.75x on vector-dense pages.Roll the Unreleased sections over with Breaking changes subsections and migration notes, and write the ones the batch never got: AF* scripts, comb/Max…
Bump the app to 5.0.0+39 and the lockstep package suite to 5.0.0
(dart_pdf_cli 0.2.0, dart_pdf_editor_flutter_gpu 0.4.0, dart_pdf_printing
0.2.0 - their dependency majors moved under types they expose). This is a
major release because public behaviour and API changed incompatibly since
4.5.0:
Roll the Unreleased sections over with Breaking changes subsections and
migration notes, and write the ones the batch never got: AF* scripts,
comb/MaxLen/password fields, XFA detection, encrypted signing and tab
order in pdf_document; openAppended in pdf_cos; the /ImageMask box filter,
justified-text reflow spaces and multi-select field context in
pdf_graphics; the form-layer, secret-store, Tab navigation and
thumbnail drag-out work in dart_pdf_editor; multi-select values in the
CLI; the print range and copies fixes in dart_pdf_printing; the new
fixtures. Dev dependency ranges on workspace packages now admit <6.0.0 so
the workspace resolves and publishing still accepts the hosted 4.5.0.
Store notes cover form calculations and checks, Tab and multi-select,
password fields kept out of the file, field creation, signing encrypted
PDFs, revocation checks with EU/Adobe trust lists, and Calibri via
Carlito, across 20 iOS locales, 21 Play changelogs, and both Linux
metainfo copies. The forms guide now says it applies to 5.0.0.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
reflowPage
trimmed that space and then found no geometric gap, so a justified page
read as one run-on word. A drawn space now settles it, and geometry is only
consulted when neither side drew one.PdfFieldContext gains values, every selected option of a multi-select
list box (value stays the first selection), serialized in toJson and
listed in the document-context text.Bump the app to 4.5.0+38 and the lockstep package suite to 4.5.0 (dart_pdf_cli 0.1.8, dart_pdf_editor_flutter_gpu 0.3.4, dart_pdf_printing 0.1.1). Not
Bump the app to 4.5.0+38 and the lockstep package suite to 4.5.0
(dart_pdf_cli 0.1.8, dart_pdf_editor_flutter_gpu 0.3.4, dart_pdf_printing
0.1.1). Nothing public was removed or changed incompatibly since 4.4.0 -
showPdfShellViewOptionsSheet lost its reflow/pageGrid parameters, but it is
not exported - so this is a minor release.
Roll the Unreleased sections over and write the ones the 4.4.0..HEAD batch
never got: WinAnsi widths and the DocMDP P=1 signing refusal in pdf_document,
CJK selection metrics in pdf_graphics, selection continuity, the stroked-text
floor, stem darkening and the page-grid State fix in dart_pdf_editor.
Store notes cover What's new, the Linux antialiasing fix, exported pages
opening in a tab, the view-mode picker, metric-compatible standard-14
substitutes, and selection and stroked-text fixes, across 20 iOS locales,
21 Play changelogs, and both Linux metainfo copies.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
A is 611 against the roman's
722), so their text measures and selects where it is drawn. Helvetica's
oblique advances are its upright ones and keep sharing a table.descent and ascent on PdfExtractedRun, giving lines that contain
CJK characters a full-em ascent instead of the fixed -0.25..0.75em band.
The worker codec and the disk text cache persist the new metrics (format
versions bumped, so older cached entries are re-extracted).Storeflight and release-app.yml both created the release for an app-v tag. Storeflight pushes that tag, so its own delivery and the workflow the tag s
Storeflight and release-app.yml both created the release for an app-v tag.
Storeflight pushes that tag, so its own delivery and the workflow the tag
starts were racing to own the same release, and would have attached two sets
of assets for the same platforms under different names.
Storeflight wins, with one exception it cannot cover. A release artifact
there is a single path per platform, and Linux ships two user-facing files -
the portable tarball and the AppImage. Dropping either is not an option:
publish-flatpak.yml downloads dartpdf-linux-x64.tar.gz from the release by
name and verifies its digest, so the Flatpak publisher fails a step later
without it.
So release-app.yml stops creating a release and contributes only the two
Linux assets. It waits for Storeflight's release rather than creating one,
because publishing the tag is what starts it and it can arrive first;
creating one there would be the same race with the roles reversed. It also
asserts the tarball is present under the name the Flatpak publisher looks
for, so a rename fails here rather than ten minutes downstream. The job now
needs only the Linux build, since waiting on the other six delayed that input
for no benefit.
publish-flatpak.yml waits for the asset for the same reason: two workflows
started by one tag have no ordering between them, and an asset still
uploading is not a missing build.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01RNNTEpKG3vAEwMYMvghdvx
RecordedText, a text-only snapshot a device can retain while it records
a page, so selection and search reuse that walk instead of interpreting the
content stream a second time. Extraction applies the existing separator, bidi
and geometry logic to the snapshot.Add 4.3.0 Linux release metadata
Add 4.3.0 Linux release metadata
Release pdf_graphics 4.2.0
Release pdf_graphics 4.2.0
dart_pdf_editor 4.2.0. No public
rendering or colour API changes since 4.1.0.Release pdf_graphics 4.1.0
Release pdf_graphics 4.1.0
Release pdf_graphics 4.0.0
Release pdf_graphics 4.0.0
PdfOverprintCompositor.image now requires the image
transform, source dimensions, and a spatial resolver. Custom compositor
callers must pass those values so one image can be resolved against several
colourant backdrops.PdfColorContext, PdfRenderingIntent, spatial overprint and
transparency-group device interfaces, plus intent-aware colour-space and ICC
conversion APIs.Release pdf_graphics 3.8.0
Release pdf_graphics 3.8.0
ShapeStripCache.viewportCulls diagnostics for measuring the saved
work.Move the Adobe glyph-name tables to pdf_document, where the content editor needs the same code -> glyph name -> Unicode chain. src/fonts/encodings.dar
pdf_document, where the content editor
needs the same code -> glyph name -> Unicode chain. src/fonts/encodings.dart
is now a re-export, so the font engine's imports and the public API are
unchanged.Carry nonstroking and stroking alpha on PdfTextRun through interpretation, translation, and render-command serialization so text annotation opacity is
PdfTextRun through interpretation,
translation, and render-command serialization so text annotation opacity is
preserved by every renderer.Decode JBIG2 and JPEG 2000 data through image mask and soft-mask paths so scanned MRC pages retain their text, background, and transparency layers.
Add compact path traversal and replay primitives used by retained and tiled renderers, including exact clip-stack preservation and bounded region repl
Add exact per-character pen offsets to PdfTextRun and PdfExtractedRun. Selection, search highlights, and hit testing now follow proportional glyph wid
PdfTextRun and
PdfExtractedRun. Selection, search highlights, and hit testing now follow
proportional glyph widths instead of interpolating evenly across a run
(#647, #648).Lockstep patch release to align the dart-pdf package suite at 3.3.1. No public pdf_graphics API changes since 3.3.0.
pdf_graphics API changes since 3.3.0.Lockstep minor release to align the dart-pdf package suite at 3.3.0. No public pdf_graphics API changes since 3.2.0.
pdf_graphics API changes since 3.2.0.Render third-party FreeText annotations without appearance streams more faithfully: callout text uses the inset text box, long lines wrap, quadding is
Lockstep patch release to align the dart-pdf package suite at 3.1.1. No public pdf_graphics API changes since 3.1.0.
pdf_graphics API changes since 3.1.0.Render overprint (/OP, /op, /OPM, §8.6.7) faithfully, as the subtractive colorant operation it is. State parses into the graphics state and is deliver
/OP, /op, /OPM, §8.6.7) faithfully, as the
subtractive colorant operation it is. State parses into the graphics state
and is delivered via PdfDevice.setOverprint, and the interpreter composites
an overprinting draw in a real CMYK/spot colorant buffer
(PdfOverprintCompositor) before any device sees it, so a DeviceCMYK
backdrop and a spot backdrop of the same RGB colour — indistinguishable to
any RGB compositor — now overprint differently. New public
PdfColorants/PdfInkColorants and PdfColorSpace.inkColorants; new
PdfInterpreter(resolveOverprint:). The buffer is built only for pages whose
ExtGStates declare overprint, and declines over content it cannot read
(images, shadings, transparency groups, translucent paint, ICC/RGB colour),
where CanvasPdfDevice's darken stand-in still applies. Ghent GWG030 now
grades all twelve of its patches as passing, and the DeviceN overprint
patches GWG190/191/192 pass both vector cases (#502).gs and Q, so overprint switched on inside a form
XObject, a tiling-pattern cell or a soft-mask group leaked out and darkened
everything drawn afterwards (#502).drawAnnotations gains a forPrint flag; screen behaviour
unchanged), fallback appearance synthesis for annotations without an /AP
(Polygon/PolyLine, Link borders, FreeText via /DA, non-text button widgets),
the Type 3 d1 colour lock (§9.6.5), and image /SMask /Matte un-preblend
(§11.6.5.3), which removes soft-mask edge fringing.Lockstep major release (a breaking change in dart_pdf_editor moves the whole suite to 3.0.0). pdf_graphics's own public API is unchanged.
Lockstep major release (a breaking change in dart_pdf_editor moves the whole
suite to 3.0.0). pdf_graphics's own public API is unchanged.
/OP, /op, /OPM) into the graphics state and
deliver it via PdfDevice.setOverprint; CanvasPdfDevice approximates
overprint with a darken (per-channel min) composite for the common
neutral-ink-over-colour case — a no-op over white, so pages that set the flags
defensively over the page background are unaffected (#502).Paint sub-pixel strokes as solid hairlines instead of fading them: a stroke narrower than a device pixel now draws at full opacity at hairline width,
/Indexed palette when the base is a JPEG2000 image (#431), and
decode /Indexed images over a /Separation or /DeviceN base (#430).PdfShading.toRadialConeMesh). A radial whose circles are not nested (an
r0=0 focal outside the r1 circle) cannot be expressed as a Skia two-point
conical gradient - the far disk maps to the swapped side of the
parametrisation, so an /Extend=false end dropped the disk interior and left
only a crescent. toGradient now returns null for those and the interpreter
paints the mesh; nested and concentric radials still use the device gradient
(#387).Major version bump for the 2.0.0 package suite (breaking change in dart_pdf_editor; the graphics API is source-compatible with 1.4.7).
dart_pdf_editor; the graphics API is source-compatible with 1.4.7).PdfColorSpace module so colour-space resolution is unified
across the fill/stroke and image-decode paths (internal refactor, #310).Resolve the Separation/DeviceN tint transform once per distinct sample tuple (memoised, cap-bounded) instead of once per pixel, and stop decoding a no
Keep Arabic tashkil and other zero-advance marks with their base glyph when reconstructing page text, so extraction and selection follow logical order
PdfPageText.findAll
queries, so right-to-left text copied out of a page can be pasted back into
search and still match.Preserve logical word order while reconstructing Arabic and other right-to-left text, including multi-word lines and mixed-direction content.
Version bump to keep the dart-pdf package suite aligned at 1.4.4. No graphics API changes since 1.4.3.
Add geometry-free sparse-strip replay profiling so renderers can detect painter-order fragmentation before path flattening and atlas generation.
Version bump to keep the dart-pdf package suite aligned at 1.4.2. No graphics API changes since 1.4.1.
Add retained raster scenes and sparse strip plans for fast deep-zoom replay of dense vector, text, and image pages.
Version bump to keep the dart-pdf package suite aligned at 1.4.0. Rendering changes in this cycle support the editor's color-processing, cloud polygon
Version bump to keep the dart-pdf package suite aligned at 1.3.2. No graphics API changes since 1.3.1.
Interpreter color-space handling now uses a shared resolved color-space path for fill and stroke colors, keeping calibrated, ICC, Indexed, Separation,
sc/SC resolution consistent.Nothing published for this version
Version bump to keep the dart-pdf package suite aligned at 1.2.3. No graphics or interpreter changes since 1.2.2.
The interpreter now checks for cancellation while walking a page's content so a render can be preempted mid-interpretation - used by the viewer's back
Add a package example for pub.dev scoring.
Search and text-extraction plumbing used by the standalone app's OCR and responsive viewer updates.
Performance: a substantially faster interpreter: font-info caching, inlined path building, text-show memoization, a shared content-stream parse, and s
PdfRenderCommand +
RecordingDevice) captures a page's draw operations so interpretation
can run off the UI thread. This is the pure-Dart foundation for the editor's
background-isolate and Web Worker render backends.PdfReflowPage now exposes items: text blocks and images
interleaved in reading order (PdfReflowItem/PdfReflowImage, with the
blocks/images/text getters unchanged). The extractor records placed
images with their page-space bounds and folds each into the read where it
sits, drops decorative rules and tiny icons, and de-duplicates repeated
watermarks. Bullet and numbered list items are split into their own
blocks (PdfReflowBlock.isListItem) instead of folding into the prose.First stable release. Changes since 0.1.0:
First stable release. Changes since 0.1.0:
post-table glyph-name lookup when there is no usable cmap;
custom /Encoding and ZapfDingbats glyph resolution; vertical writing
mode (Identity-V / WMode 1) for Type 0 fonts; and CJK CMap support for
non-embedded Adobe-Japan1 and legacy GBK fonts./K true); optional content
groups (OCG) with visibility expressions for correct layer handling./Mask stencils, and JBIG2 pattern
dictionaries with halftone regions.PdfDocumentContext.of(document) gathers a document's
text, form fields, and annotations into a clean, serializable shape for a
host-supplied language model, and PdfDocumentActionSink describes the
editing actions an agent can drive. A thin adapter over the existing
extraction/editing surface. The model and transport are host-provided.Content-stream interpreter covering the full operator set: paths, clipping, transparency groups, soft masks, blend modes, optional content, type 0-4 f
Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →