PackageTrack
Sign in Get early access

pdf_graphics

PDF content interpreter, device interface, font engine, shadings, ICC color, and text extraction - render pages to any device. Pure Dart, web-ready.

3.8.0 8.3K downloads/mo #3174 most downloaded on pub.dev ben-milanko/dart-pdf

What this package is like to depend on

Last release today

23 Aug 2026

Ships on a steady schedule

a new release about every 9 days

Nearly every release is documented

notes for 31 of 32 stable releases

Nothing withdrawn

no release was ever pulled

2 months old

32 releases · first in 2026

32 releases in the last 12 months

see the full history below

Release timeline

32 releases · Jun 2026 to Aug 2026
Release Pre-release

Releases

latest 32
  1. 3.8.0 23 Aug 2026
    Release notes

    Release pdf_graphics 3.8.0

    Open source →
    Release notes
    • Cull retained CAD shapes outside the active raster strip before painting, with ShapeStripCache.viewportCulls diagnostics for measuring the saved work.
    • Reduce retained-scene and image-strip overhead while scrolling and deep zooming image-heavy engineering drawings.
    Open source →
  2. 3.7.0 19 Aug 2026
    Release notes
    • Move the Adobe glyph-name tables to 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.
    Open source →
  3. 3.6.0 15 Aug 2026
    Release notes
    • Carry nonstroking and stroking alpha on PdfTextRun through interpretation, translation, and render-command serialization so text annotation opacity is preserved by every renderer.
    Open source →
  4. 3.5.1 14 Aug 2026
    Release notes
    • Decode JBIG2 and JPEG 2000 data through image mask and soft-mask paths so scanned MRC pages retain their text, background, and transparency layers.
    Open source →
  5. 3.5.0 13 Aug 2026
    Release notes
    • Add compact path traversal and replay primitives used by retained and tiled renderers, including exact clip-stack preservation and bounded region replay.
    • Add batched text-device delivery and richer render-command serialization so worker and retained-scene renderers can reduce per-command overhead without changing page geometry.
    • Improve display-resolution image decoding, downsampling, masks, and decoded image reuse for large scan and CAD workloads.
    Open source →
  6. 3.4.0 09 Aug 2026
    Release notes
    • Add exact per-character pen offsets to PdfTextRun and PdfExtractedRun. Selection, search highlights, and hit testing now follow proportional glyph widths instead of interpolating evenly across a run (#647, #648).
    • Carry those offsets through render-command and text-cache serialization so worker rendering and cached extraction preserve identical text geometry.
    Open source →
  7. 3.3.1 02 Aug 2026
    Release notes
    • Lockstep patch release to align the dart-pdf package suite at 3.3.1. No public pdf_graphics API changes since 3.3.0.
    Open source →
  8. 3.3.0 02 Aug 2026
    Release notes
    • Lockstep minor release to align the dart-pdf package suite at 3.3.0. No public pdf_graphics API changes since 3.2.0.
    Open source →
  9. 3.2.0 29 Jul 2026
    Release notes
    • Render third-party FreeText annotations without appearance streams more faithfully: callout text uses the inset text box, long lines wrap, quadding is honored, and semantic fill, border, and leader-line styling is painted from the annotation dictionary (#621).
    Open source →
  10. 3.1.1 26 Jul 2026
    Release notes
    • Lockstep patch release to align the dart-pdf package suite at 3.1.1. No public pdf_graphics API changes since 3.1.0.
    Open source →
  11. 3.1.0 26 Jul 2026
    Release notes
    • Render overprint (/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).
    • Images overprint correctly inside the colorant buffer too: sampled images report their per-sample colorant readings instead of a flattened RGB, so an image over a tinted backdrop knocks out and survives the same way vector paint does (#604).
    • Re-synchronise the overprint state before every fill and stroke: it was delivered only from 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).
    • Fill four silently-missing fidelity gaps (#546): print-vs-screen annotation visibility (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.
    • Restore the blend mode on form/appearance exits: a non-Normal blend set inside a form XObject or annotation appearance no longer leaks into the surrounding content (#462).
    • Stop word spacing ballooning substituted table digits (#567).
    • Recording/painting performance: a resumable page-content walk lets an interrupted incremental record continue instead of restarting (#530); tiling-pattern cells and Type 3 glyphs are recorded once and replayed per occurrence (#524, #535); parsed colorspaces, shadings, and functions are cached per document (#534); sRGB-equivalent ICC profiles bypass the colour transform (#531); Coons/tensor mesh patches subdivide adaptively (#536); colour conversion during record serialization is memoized and a page's image decodes are reused across its records (#451).
    Open source →
  12. 3.0.0 23 Jul 2026
    Release notes

    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.

    • Parse overprint state (/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).
    • Composite a transparency-group form XObject drawn under a non-Normal blend mode into its own layer so the group blends onto the backdrop as a single object (§11.6.6); previously the outer blend mode leaked and an opaque group could paint as a solid box over the page (#505).
    • Approximate the Multiply blend mode as alpha when printing so highlights are not printed as opaque blocks (#461).
    • Cache parsed content operators for form XObjects, annotation appearances, and soft masks instead of re-tokenising them on every paint (#471).
    Open source →
  13. 2.1.0 21 Jul 2026
    Release notes
    • 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, matching Acrobat and pdf.js, so CAD linework stays legible when zoomed out (#426).
    • Honour the /Indexed palette when the base is a JPEG2000 image (#431), and decode /Indexed images over a /Separation or /DeviceN base (#430).
    • Render non-nested radial shadings as a Gouraud cone mesh (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).
    • Render ZapfDingbats ornament glyphs (codes 0x80-0x8D) instead of tofu (#386), and map Symbol's built-in encoding along with the Greek and math glyph names (#390).
    • Evaluate every input of a type 0 (sampled) function; multi-input samples previously read only the first (#409).
    • Cache parsed ICC profiles per document rather than re-parsing per image or colour-space use (#399).
    • Lead the content-operator switch with the path group, the hottest operators in a typical page (#401).
    • Keep incremental aggregates in the reflow line-banding loop instead of recomputing them per candidate line (#407).
    Open source →
  14. 2.0.0 19 Jul 2026
    Release notes
    • 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).
    • Invert CMY when decoding YCCK/Adobe-inverted JPEGs so CMYK photos embedded as DCTDecode render with correct colour, matching pdf.js (#370).
    • Support vector printing on Windows and Linux: the page is streamed to the OS print system as vector content rather than a rasterised bitmap (#303).
    • Extract a shared PdfColorSpace module so colour-space resolution is unified across the fill/stroke and image-decode paths (internal refactor, #310).
    Open source →
  15. 1.4.7 16 Jul 2026
    Release notes
    • Resolve the Separation/DeviceN tint transform once per distinct sample tuple (memoised, cap-bounded) instead of once per pixel, and stop decoding a non-JPEG image base twice under a DCTDecode /SMask — cutting a 62-page print export's worst DeviceN image from 23.7 s to 98 ms with bit-identical output across the corpus (#282).
    Open source →
  16. 1.4.6 15 Jul 2026
    Release notes
    • Keep Arabic tashkil and other zero-advance marks with their base glyph when reconstructing page text, so extraction and selection follow logical order even when the content stream paints each mark as its own positioned run.
    • Ignore Unicode BiDi formatting controls in literal PdfPageText.findAll queries, so right-to-left text copied out of a page can be pasted back into search and still match.
    • Decode scaled and region CCITT and 1-bit gray images straight into the display raster, skipping the native-size RGBA expansion that large scans previously paid for.
    Open source →
  17. 1.4.5 14 Jul 2026
    Release notes
    • Preserve logical word order while reconstructing Arabic and other right-to-left text, including multi-word lines and mixed-direction content.
    Open source →
  18. 1.4.4 13 Jul 2026
    Release notes
    • Version bump to keep the dart-pdf package suite aligned at 1.4.4. No graphics API changes since 1.4.3.
    Open source →
  19. 1.4.3 13 Jul 2026
    Release notes
    • Add geometry-free sparse-strip replay profiling so renderers can detect painter-order fragmentation before path flattening and atlas generation.
    Open source →
  20. 1.4.2 12 Jul 2026
    Release notes
    • Version bump to keep the dart-pdf package suite aligned at 1.4.2. No graphics API changes since 1.4.1.
    Open source →
  21. 1.4.1 12 Jul 2026
    Release notes
    • Add retained raster scenes and sparse strip plans for fast deep-zoom replay of dense vector, text, and image pages.
    • Re-sharpen all image types under deep zoom and stream dense content through recording paths to reduce latency and memory pressure.
    • Add reusable raster geometry, strip binning, curve flattening, and stroke contour primitives used by native-isolate and Web Worker rendering.
    Open source →
  22. 1.4.0 07 Jul 2026
    Release notes
    • 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, and large-document interaction improvements.
    Open source →
  23. 1.3.2 05 Jul 2026
    Release notes
    • Version bump to keep the dart-pdf package suite aligned at 1.3.2. No graphics API changes since 1.3.1.
    Open source →
  24. 1.3.1 02 Jul 2026
    Release notes
    • Interpreter color-space handling now uses a shared resolved color-space path for fill and stroke colors, keeping calibrated, ICC, Indexed, Separation, and single-colorant DeviceN sc/SC resolution consistent.
    Open source →
  25. 1.3.0 27 Jun 2026

    Nothing published for this version

  26. 1.2.3 20 Jun 2026
    Release notes
    • Version bump to keep the dart-pdf package suite aligned at 1.2.3. No graphics or interpreter changes since 1.2.2.
    Open source →
  27. 1.2.2 17 Jun 2026
    Release notes
    • 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 background render worker to drop superseded jobs on fast scrolls.
    Open source →
  28. 1.2.1 15 Jun 2026
    Release notes
    • Add a package example for pub.dev scoring.
    Open source →
  29. 1.2.0 15 Jun 2026
    Release notes
    • Search and text-extraction plumbing used by the standalone app's OCR and responsive viewer updates.
    • Version bump to keep the dart-pdf package suite aligned at 1.2.0.
    Open source →
  30. 1.1.0 14 Jun 2026
    Release notes
    • Performance: a substantially faster interpreter: font-info caching, inlined path building, text-show memoization, a shared content-stream parse, and scan-only image collection. dart-pdf now renders faster than PDFium across the benchmark corpus.
    • Background rendering: a record/replay split (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.
    • Reflow: 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.
    • Fonts: CJK CMap decoders for EUC-JP, GBK, Big5, and UHC charsets, so more non-embedded CJK text renders and stays selectable.
    • Patterns: tiling-pattern color approximation when a glyph's font is substituted.
    • Fix: JPEG 2000 tile-part desynchronization, and indexed Lab color palettes now decode correctly.
    Open source →
  31. 1.0.0 13 Jun 2026
    Release notes

    First stable release. Changes since 0.1.0:

    • Color: Lab, CalGray, and CalRGB CIE-based color spaces; calibrated Separation/DeviceN alternate spaces; Indexed color; and pure-Dart DeviceCMYK JPEG decoding for correct print-color rendering.
    • Fonts: a Type 1 parser; CFF improvements (seac accented-glyph composition, encoding supplements, per-FD font-matrix composition); TrueType 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.
    • Transparency: isolated knockout groups (/K true); optional content groups (OCG) with visibility expressions for correct layer handling.
    • Images: full-resolution /Mask stencils, and JBIG2 pattern dictionaries with halftone regions.
    • Patterns: tiling-pattern and shading-pattern fills rendered through glyph outlines for text.
    • Text: paragraph-aware reflow extraction for reading view; rotated text selection geometry.
    • Robustness: pages with invalid bounding boxes fall back to valid geometry instead of collapsing.
    • Document-AI seam: 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.
    Open source →
  32. 0.1.0 12 Jun 2026
    Release notes

    Initial release.

    • Content-stream interpreter covering the full operator set: paths, clipping, transparency groups, soft masks, blend modes, optional content, type 0-4 functions.
    • Device interface: implement one class to render PDF pages anywhere.
    • Font engine: Type 1, TrueType, CFF, Type 0/CID, Type 3; embedded and standard-14 metrics.
    • Shadings 1-7 including mesh parsing; tiling and shading patterns.
    • Color: ICC profiles (gray TRC, matrix/TRC, mft1/mft2/mAB LUTs), Separation/DeviceN, Indexed, Lab.
    • Text extraction with selection geometry, search, and rotation-aware page geometry.
    • Annotation appearance rendering and form-field appearance support.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive