NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #585 most downloaded on pub.dev
pdfrx is a rich and fast PDF viewer and manipulation plugin built on the top of PDFium. Supports viewing, editing, combining PDFs on Android, iOS, Windows, macOS, Linux, and Web.
Last release 12 days ago
18 Sep 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
9 versions withdrawn
withdrawn after publishing
3 years old
279 releases · first in 2023
Fix indefinite stuck on loading PDF files from certain server; now it immediately return error (not actually fixed)
FIXED: WASM: could not open PDF files smaller than 1MB
One column per month.
Color.withOpacity -> Color.withValues, Color.value -> Color.toARGB32()
Color.withOpacity -> Color.withValues, Color.value -> Color.toARGB32()Update project structure to conform to Package layout conventions
Move back the example viewer to example directory
Internal refactoring to improve the code integrity
Introducing allowDataOwnershipTransfer on `PdfDocument.openData` to allow transfer data ownership of the passed data; it is false by default to keep c
allowDataOwnershipTransfer on PdfDocument.openData to allow transfer data ownership of the passed data; it is false by default to keep consistency with the previous behavior
"Bleeding edge" PDFium WASM support (disabled by default)
Explicitly specify web support on pubspec.yaml
pubspec.yamlSDK constraint gets back to >=3.7.0-323.0.dev
>=3.7.0-323.0.devFIXED: if running with WASM enabled on Flutter Web, certain PDF file could not be loaded correctly
Supporting Flutter 3.29.0/Dart 3.7.0 (Stable) with workaround for breaking changes on Flutter 3.29.0
Change the default CDN for Pdf.js to https://cdn.jsdelivr.net/npm/pdfjs-dist@ /build/pdf.js to deal with CORS error on loading CMAP files
https://cdn.jsdelivr.net/npm/pdfjs-dist@<VERSION>/build/pdf.js to deal with CORS error on loading CMAP filespdfjsGetDocumentFromData, which is used by various PdfDocument open functions, does not propagate cMapUrl/cMapPacked to the Pdf.jsdart2wasm compatibility updates
PdfTextSearcher correctly releases its listeners on disposeRevert commit d66fb3f that breaks consistency; Color.withValues -> Color.withOpacity
Color.withValues -> Color.withOpacity`PdfTextSearcher` introduces text caches
PdfTextSearcher introduces text caches (#293)PdfTextSearcher search reset issue (#291)Introduces Pdfrx.fontPaths to set pdfium font loading path
Pdfrx.fontPaths to set pdfium font loading path (#140)Introduces `PdfViewerController.calcFitZoomMatrices` to realize fit-to-width easier
PdfViewerController.calcFitZoomMatrices to realize fit-to-width easier- Document updates
FIXED: #260 `PdfTextSelectionParams.onTextSelectionChange` callback cant be called
PdfTextSelectionParams.onTextSelectionChange callback cant be calledFIXED: #273; apart from the ream WASM support, it fixes several compilation issues with --wasm option
--wasm optionMerge PR #272; Fix minScale is not used
minScale is not usedMerge PR #264; Check for non-existent zoom element in `PdfDest.params` in some PDFs
PdfDest.params in some PDFsPdfViewer widget #263Merge PR #262; Remove redundant check that breaks building on some systems
Fixes selection issues caused by the changes on 1.0.90
Introduces selectableRegionInjector/perPageSelectableRegionInjector
selectableRegionInjector/perPageSelectableRegionInjector (#256)- Merge PR #251
BREAKING CHANGE: add more parameters to `PdfViewerParams.normalizeMatrix` to make it easier to handle more complex situations
PdfViewerParams.normalizeMatrix to make it easier to handle more complex situations (#239)Add `PdfViewerParams.normalizeMatrix` to customize the transform matrix restriction; customizing existing logic on _PdfViewerState._makeMatrixInSafeRa
PdfViewerParams.normalizeMatrix to customize the transform matrix restriction; customizing existing logic on _PdfViewerState._makeMatrixInSafeRange; for issues like #239Fixes single-page layout issue on viewer start
Merge PR #230 to add try-catch on UTF-8 decoding of URI path
Remove dependency to dart:js_interop_unsafe
collection/rxdart dependency workaround
`PdfViewerController.document`/`PdfViewerController.pages` are now deprecated
PdfViewerController.useDocument to make it easy to use PdfDocument safelyPdfViewerController.pageCount to get page count without explicitly access PdfViewerController.pagesPdfViewerController.document/PdfViewerController.pages are now deprecatedBREAKING CHANGE: `PdfViewerParams.viewerOverlayBuilder` introduces third parameter named handleLinkTap, which is used with GestureDetector to handle l…
PdfViewerParams.viewerOverlayBuilder introduces third parameter named handleLinkTap, which is used with GestureDetector to handle link-tap events on user code (#175)README.mdFIXED: RangeError on `PdfViewer.uri` when missing "Expires" header
RangeError on PdfViewer.uri when missing "Expires" header (#206)Add packagingOptions pickFirst to workaround multiple libpdfium.so problem on Android build
packagingOptions pickFirst to workaround multiple libpdfium.so problem on Android build (#8)_relayoutPages may cause null accessREADME.md to explain PdfViewerParam.linkHandlerParams for link handling- #175: Woops, just missing synchronized to call loadLinks causes multiple load invocations...
loadLinks causes multiple load invocations...Add several tweaks to reduce `PdfLink`'s memory footprint (Related: #175)
PdfLink's memory footprint (Related: #175)PdfViewerParams.linkHandlerParams and PdfLinkHandlerParams to show/handle PDF links without using Flutter Widgets (#175)- Pdf.js 4.4.168
Introduces `PdfViewerController.getPdfPageHitTestResult`
PdfViewerController.getPdfPageHitTestResultPdfViewerController.layout to get page layoutIntroduces `PdfViewerParams.onViewSizeChanged`, which is called on view size change
PdfViewerParams.onViewSizeChanged, which is called on view size change
FIXED: Example code is not compilable
Introduces withCredentials for Web to download PDF file using current session credentials (Cookie)
`PdfViewer` calls re-layout logic on every zoom ratio changes
PdfViewer calls re-layout logic on every zoom ratio changes (#131)PdfViewerParams.interactionEndFrictionCoefficient (#176)rxdart gets back to 0.27.7 because 0.28.0 causes incompatibility with several other plugins...FIXED: Small Page Size PDF Not Scaling to Fit Screen
BREAKING CHANGE: Current page number behavior change
PdfViewerController.setCurrentPageNumber (#152)PdfPageAnchor behavior changes for existing PdfPageAnchor enumeration values.PdfPageAnchor.top/left/right/bottomPdfViewerController.calcMatrixToEnsureRectVisibleFIXED: LateInitializationError: Field _cacheBlockCount@1436474497 has not been initialized
LateInitializationError: Field _cacheBlockCount@1436474497 has not been initialized (#167)FIXED: PdfException: Failed to load PDF document (FPDF_GetLastError=3)
PdfException: Failed to load PDF document (FPDF_GetLastError=3) (#166)- Remove dependency to intl
intl (#151)Android: minSdkVersion to 21 (related #158)
minSdkVersion to 21 (related #158)Workaround for SelectionEventType.selectParagraph that is introduced in master (#156/PR #157)
iOS/macOS also uses bblanchon/pdfium-binaries 125.0.6406.0 (chromium/6406)
Introduces `PdfViewerParams.pageDropShadow`
PdfViewerParams.pageDropShadowPdfViewerParams.pageBackgroundPaintCallbacksbblanchon/pdfium-binaries 125.0.6406.0 (chromium/6406)
default_min_sdk_version=21 to support lower API level devices (#145)Fixes concurrency issue on `PdfDocument` dispose
PdfDocument dispose (#143)_guessCurrentPage (#147)Any API calls that wraps PDFium are now completely synchronized. They are run in an app-wide single worker isolate
PdfDocument instances could not be called concurrentlyFIXED: possible double-dispose on race condition
Reduce total number of Isolates used when opening PDF documents
PdfViewerParams.calculateCurrentPageNumberImprove memory consumption by opening/closing page handle every time pdfrx need it (PR #125)
Your coding agent can read these notes before it upgrades. Set up the MCP server →