pdfrx 1.3.1
pdfrx: ^1.3.1 copied to clipboard
pdfrx is a rich and fast PDF viewer implementation built on the top of PDFium. The plugin supports Android, iOS, Windows, macOS, Linux, and Web.
1.3.1 #
- NEW FEATURE: Added
PdfViewerParams.calculateInitialZoom
to customize initial zoom calculation (#406) - Removed deprecated
PdfrxWebRuntimeType
API
1.3.0 #
- NEW FEATURE: Added support for disabling automatic web link detection from text content (#403)
1.2.9 #
- FIXED: Use document base href for resolving URLs in PDFium WASM (#402)
- FIXED: PDFium WASM hot-restarting may call initializePdfium multiple times
1.2.7 #
- Enhanced PDFium initialization with optional authentication parameters for WASM
1.2.6 #
- NEW FEATURE: Added
headers
andwithCredentials
support for PDFium WASM implementation (#399) - NEW FEATURE: Implemented progress callback support for PDFium WASM using a general callback mechanism
- Improved PDFium WASM worker-client communication architecture with
PdfiumWasmCommunicator
1.2.4 #
- FIXED: Reverted zoom ratio calculation change from 1.1.28 that was affecting pinch-to-zoom behavior (#391)
- Added Windows Developer Mode requirement check in CMake build configuration
1.2.3 #
- FIXED: Progressive loading support for PDF document references (#397)
- Enhanced PDF document loading functions with better error handling
- Improved PDFium WASM worker implementation
1.2.2 #
- FIXED:
_emscripten_throw_longjmp
error in PDFium WASM (#354) - Enhanced example viewer to support PDF file path/URL as a parameter
- Enabled build-test workflow on master commits and pull requests for better CI/CD
1.2.1 #
1.2.0 #
- BREAKING CHANGE: Removed PDF.js support - PDFium WASM is now the only web implementation
- BREAKING CHANGE: The separate
pdfrx_wasm
package is no longer needed; WASM assets are now included directly in the mainpdfrx
package - NEW FEATURE: Implemented progressive/lazy page loading for PDFium WASM for better performance with large PDF files (#319)
- Simplified web architecture by consolidating WASM assets into the main package
1.1.35 #
- Add
limitRenderingCache
parameter toPdfViewerParams
to control rendering cache behavior (#394) - Add rendering flags support to
PdfPage.render
method
1.1.34 #
1.1.33 #
- Explicitly specify 16KB page size on Android rather than specifying specific NDK version
1.1.32 #
- Minor fixes
1.1.31 #
- SwiftPM support for iOS/macOS
- PDFium 138.0.7202.0
- FIXED: null assertion exception when laying out view and
calculateCurrentPageNumber
is overridden (#367)
1.1.30 #
- MERGED: PR #364 fix: blank pdf on Windows when restore window from minimize
- Update example's
app/build.gradle
to support Android's 16KB page size
1.1.29 #
- FIXED: #363
- FIXED:
pdfium-wasm-module-url
on HTML meta tag overrides value explicitly set toPdfrx.pdfiumWasmModulesUrl
- Improves
pdfium_worker.js
/pdfium.wasm
loading path resolution logic to allow relative paths
- FIXED:
1.1.28 #
- WIP: zoom ratio calculation updates
goToPage
throws array index out of bounds error if the page number is out of range- PDFium WASM 138.0.7162.0
- Remove debug print
1.1.27 #
- Apply a proposed fix for #134; but I'm not sure if it works well or not. Personally, I don't feel any difference...
1.1.26 #
- Introduces
PdfPoint
, which work withOffset
for conversion between PDF page coordinates and Flutter coordinates - FIXED: #352 Link click/text selection are completely broken if PDF page is rotated
1.1.24 #
- FIXED: #336 zoom out does not cover entire page after changing layout
- Updates to viewer example to support page layout switching
- Minor
goToPage
and othergoTo
functions behavior changes (normalizeMatrix
and other)
- MERGED: PR #349 that fixes resource leaks on
PdfPageView
- FIXED: #215 Wrong link highlight position on searching a word
- FIXED: #344 New "key event handling" feature in version 1.1.22 prevents
TextFormField
in page overlay from receiving key events
1.1.23 #
- Minor internal change
1.1.22 #
PdfDocumentFactory
refactoring to improve the code integrity- Introduces
getDocumentFactory
/getPdfjsDocumentFactory
/getPdffiumDocumentFactory
to get the direct/internal document factory
- Introduces
- Introduces
PdfViewerParams.onKey
/PdfViewerKeyHandlerParams
to handle key events onPdfViewer
1.1.21 #
- FIXED:
loadOutline
is not implemented on PDFium WASM
1.1.20 #
- Add HTML meta tags (
pdfrx-pdfium-wasm
/pdfium-wasm-module-url
) to enable PDFium WASM support
1.1.19 #
lib/src/pdfium/pdfium_bindings.dart
now keep Pdfium's original comments
1.1.17 #
- FIXED: example is not shown on pub.dev
1.1.13 #
1.1.11 #
Color.withOpacity
->Color.withValues
,Color.value
->Color.toARGB32()
1.1.10 #
- Update project structure to conform to Package layout conventions
- revert: example code move on 1.1.9
1.1.9 #
- Move back the example viewer to example directory
1.1.8 #
- Internal refactoring to improve the code integrity
1.1.7 #
- Introducing
allowDataOwnershipTransfer
onPdfDocument.openData
to allow transfer data ownership of the passed data; it is false by default to keep consistency with the previous behavior- This actually fixes #303 but the drawback is that extra memory may be consumed on Flutter Web...
1.1.6 #
- "Bleeding edge" PDFium WASM support (disabled by default)
1.1.5 #
- Explicitly specify web support on
pubspec.yaml
1.1.4 #
- SDK constraint gets back to
>=3.7.0-323.0.dev
1.1.3 #
- Further WASM compatibility updates
- Demo page: CORS override for GitHub Pages using gzuidhof/coi-serviceworker
1.1.2 #
- FIXED: if running with WASM enabled on Flutter Web, certain PDF file could not be loaded correctly
- Debug log to know WASM/SharedArrayBuffer status on Flutter Web
1.1.1 #
- Supporting Flutter 3.29.0/Dart 3.7.0 (Stable) with workaround for breaking changes on Flutter 3.29.0 (#295)
- It breaks compatibility with older stable Flutter versions :(
1.0.103 #
- Change the default CDN for Pdf.js to
https://cdn.jsdelivr.net/npm/pdfjs-dist@<VERSION>/build/pdf.js
to deal with CORS error on loading CMAP files - FIXED:
pdfjsGetDocumentFromData
, which is used by variousPdfDocument
open functions, does not propagatecMapUrl
/cMapPacked
to the Pdf.js
1.0.102 #
- dart2wasm compatibility updates
- Pdf.js 4.10.38
PdfTextSearcher
correctly releases its listeners on dispose- Example viewer code updates
1.0.101 #
- Revert commit d66fb3f that breaks consistency;
Color.withValues
->Color.withOpacity
- Update pdfium ffi bindings
1.0.100 #
1.0.98 #
- Introduces
PdfViewerController.calcFitZoomMatrices
to realize fit-to-width easier
1.0.97 #
- Document updates
1.0.95 #
- FIXED: #273; apart from the ream WASM support, it fixes several compilation issues with
--wasm
option
1.0.93 #
1.0.91 #
- Fixes selection issues caused by the changes on 1.0.90
1.0.87 #
- BREAKING CHANGE: add more parameters to
PdfViewerParams.normalizeMatrix
to make it easier to handle more complex situations (#239)
1.0.86 #
- Add
PdfViewerParams.normalizeMatrix
to customize the transform matrix restriction; customizing existing logic on_PdfViewerState._makeMatrixInSafeRange
; for issues like #239
1.0.85 #
1.0.83 #
1.0.81 #
- Introduces
PdfViewerController.useDocument
to make it easy to usePdfDocument
safely - Introduces
PdfViewerController.pageCount
to get page count without explicitly accessPdfViewerController.pages
PdfViewerController.document
/PdfViewerController.pages
are now deprecated
1.0.80 #
- BREAKING CHANGE:
PdfViewerParams.viewerOverlayBuilder
introduces third parameter namedhandleLinkTap
, which is used withGestureDetector
to handle link-tap events on user code (#175) - Fix typos on
README.md
1.0.78 #
- Add
packagingOptions pickFirst
to workaround multiplelibpdfium.so
problem on Android build (#8) - FIXED:
_relayoutPages
may cause null access - Update
README.md
to explainPdfViewerParam.linkHandlerParams
for link handling
1.0.77 #
- #175: Woops, just missing synchronized to call
loadLinks
causes multiple load invocations...
1.0.76 #
1.0.75 #
- Pdf.js 4.4.168
1.0.74 #
- Introduces
PdfViewerController.getPdfPageHitTestResult
- Introduces
PdfViewerController.layout
to get page layout
1.0.73 #
- Introduces
PdfViewerParams.onViewSizeChanged
, which is called on view size change- The feature can be used to keep the screen center on device screen rotation (#194)
1.0.72 #
- FIXED: Example code is not compilable
- FIXED: Marker could not be placed correctly on the example code (#189)
- FIXED: Updated podspec file not to download the same archive again and again (#154)
- Introduces chromium/6555 for all platforms
- Darwin uses pdfium-apple-v9 (chromium/6555)
Improves memory consumption by pdfium's internal caching feature (#184)
1.0.71 #
1.0.70 #
1.0.68 #
- Introduces
PdfViewerController.setCurrentPageNumber
(#152) - BREAKING CHANGE: Current page number behavior change (#152)
- BREAKING CHANGE:
PdfPageAnchor
behavior changes for existingPdfPageAnchor
enumeration values. - Introduces
PdfPageAnchor.top
/left
/right
/bottom
- Introduces
PdfViewerController.calcMatrixToEnsureRectVisible
1.0.67 #
- FIXED:
LateInitializationError
: Field_cacheBlockCount@1436474497
has not been initialized (#167)
1.0.66 #
- FIXED:
PdfException
: Failed to load PDF document (FPDF_GetLastError=3
) (#166) - Add explicit HTTP error handling code (to show the error detail)
- bblanchon/pdfium-binaries 127.0.6517.0 (chromium/6517) (iOS/macOS is still using 6406)
1.0.63 #
1.0.62 #
1.0.61 #
- Introduces
PdfViewerParams.pageDropShadow
- Introduces
PdfViewerParams.pageBackgroundPaintCallbacks
1.0.60 #
- bblanchon/pdfium-binaries 125.0.6406.0 (chromium/6406)
default_min_sdk_version=21
to support lower API level devices (#145)
1.0.59 #
1.0.58 #
- Any API calls that wraps PDFium are now completely synchronized. They are run in an app-wide single worker isolate
- This is because PDFium does not support any kind of concurrency and even different
PdfDocument
instances could not be called concurrently
- This is because PDFium does not support any kind of concurrency and even different
1.0.57 #
1.0.56 #
- Reduce total number of Isolates used when opening PDF documents
- Add
PdfViewerParams.calculateCurrentPageNumber
- FIXED: Could not handle certain destination coordinates correctly (#135)
1.0.55 #
- Improve memory consumption by opening/closing page handle every time pdfrx need it (PR #125)
1.0.54 #
- Improves [End] button behavior to reach the actual end of document rather than the top of the last page
PdfViewerParams.pageAnchorEnd
for specifying anchor for the "virtual" page next to the last page
PdfViewerParams.onePassRenderingScaleThreshold
to specify maximum scale that is rendered in single rendering call- If a page is scaled over the threshold scale, the page is once rendered in the threshold scale and after a some delay, the real scaled image is rendered partially that fits in the view port
PdfViewerParams.perPageSelectionAreaInjector
is introduced to customize text selection behavior
1.0.53 #
- Fixes flicker on scrolling/zooming that was introduced on 1.0.52
- Revival of high resolution partial rendering
1.0.51 #
1.0.50 #
- Introduces
PdfViewerParams.useAlternativeFitScaleAsMinScale
but it's not recommended to set the value to false because it may degrade the viewer performance
1.0.49 #
- iOS minimum deployment target 12.0
1.0.10+1 #
- Add note for Flutter 3.19/Dart 3.3 support on 1.0.0+
1.0.9 #
PdfRect.toRect
:scaledTo
->scaledPageSize
- FIXED:
PdfJsConfiguration.cMapUrl
/cMapPacked
does not have correct default values
1.0.8 #
- Condition analysis warnings on auto-generated
pdfium_bindings.dart
1.0.7 #
- Requires Flutter 3.19/Dart 3.3 again (pub.dev is upgraded to the stable🎉)
dart:js_interop
based Pdf.js interop implementation (remove dependency onpackage:js
)
1.0.6 #
- Due to the pub.dev version issues, the version introduces a "temporary workaround", which downgrades several packages:
sdk: '>=3.3.0-76.0.dev <4.0.0'
flutter: '>=3.19.0-0.4.pre'
web: ^0.4.2
I'll update them as soon as pub.dev upgrades their toolchains
- Pdf.js interop refactoring
1.0.5 #
NOTE: On pub.dev, 1.0.0+ versions gets [ANALYSIS ISSUE]. It does not affect your code consistency but API reference is not available until pub.dev upgrades their toolchains.
- Requires Flutter 3.19/Dart 3.3
1.0.4 #
- Rollback version constraints to the older stable versions...
- I've created an issue for pub.dev: dart-lang/pub-dev#7484
1.0.3 #
- Again,
flutter: '>=3.19.0-0.4.pre'
1.0.2 #
- To make the pub.dev analyzer work, we should use
sdk: '>=3.3.0-76.0.dev <4.0.0'
as version constraint...
1.0.1 #
PdfViewerController.addListener
/removeListener
independently has listener list on it to make it work regardless ofPdfViewer
attached or not (#74)
1.0.0 #
- Requires Flutter 3.19/Dart 3.3
- Update Web code to use
package:web
(removing dependency todart:html
)
0.4.44 #
- FIXED:
PdfViewerParams.boundaryMargin
does not work correctly.
0.4.43 #
0.4.41 #
0.4.39 #
- Minor updates on text selection (still experimental......)
0.4.38 #
- Minor updates on text selection (still experimental...)
- Minor fix on
PdfPageView
0.4.36 #
- Introduces
PdfJsConfiguration
to configure Pdf.js download URLs
0.4.34 #
- Document update
0.4.33 #
- Document update
0.4.32 #
- Add
PdfViewerParams.calculateInitialPageNumber
to calculate the initial page number dynamically - Add
PdfViewerParams.onViewerReady
to know when the viewer gets ready
0.4.31 #
- Remove explicit CMake version spec 3.18.1
0.4.30 #
- FIXED: Link URI contains null-terminator
- Add support text/links on rotated pages
- Stability updates for
PdfTextSearcher
README.md
/example updates- Revival of
PdfViewer.data
/PdfViewer.custom
0.4.29 #
- Minor fixes to
PdfTextSearcher
0.4.28 #
README.md
/example updates
0.4.27 #
- Minor updates and
README.md
updates
0.4.26 #
- Introduces
PdfTextSearcher
that helps you to implement search UI feature (#47) - Example code is vastly changed to explain more about the widget functions
0.4.25 #
- FIXED: Able to scroll outside document area
0.4.24 #
- Huge refactoring on
PdfViewerController
; it's no longerTransformationController
but just aValueListenable<Matrix4>
- This fixes an "Unhandled Exception: Null check operator used on a null value" on widget state disposal (#46)
0.4.23 #
- Introduces
PdfDocumentViewBuilder
/PdfPageView
widgets - Example code is super updated with index and thumbnails.
0.4.22 #
- Web: Now Pdf.js is loaded automatically and no modification to
index.html
is required! - Default implementation for
PdfViewerParams.errorBannerBuilder
to show internally thrown errors PdfPasswordException
is introduced to notify password errorPdfDocumentRef
now hasstackTrace
for errorPdfFileCache
now uses dedicatedhttp.Client
instance
0.4.21 #
- Now
PdfDocumentRef
has const constructor andPdfViewer.documentRef
is also const
0.4.20 #
- Removes
PdfDocumentProvider
(ActuallyPdfDocumentRef
does everything) - Fixes breakage introduced by 0.4.18
0.4.19 #
firstAttemptByEmptyPassword
should be true by default
0.4.18 #
0.4.17 #
- Additional fixes to text selection mechanism
0.4.16 #
- Remove password parameters; use
passwordProvider
instead. - Fixes several resource leak scenarios on
PdfDocument
open failures - Restrict text selection if PDF permission does not allow copying
- Remove
PdfViewer.documentRef
; unnamed constructor is enough for the purpose
0.4.15 #
0.4.14 #
- Introduces
PdfViewerParams.onDocumentChanged
event - Introduces
PdfDocument.loadOutline
to load outline (a.k.a. bookmark)
0.4.13 #
- Improves document password handling by async
PasswordProvider
(#20) - Introduces
PdfViewerParams.errorBannerBuilder
0.4.12 #
- Introduces
PdfViewerParams.maxImageBytesCachedOnMemory
, which restricts the maximum cache memory consumption- Better than logic based on
maxThumbCacheCount
- Better than logic based on
- Remove the following parameters from
PdfViewerParams
:maxThumbCacheCount
maxRealSizeImageCount
enableRealSizeRendering
0.4.11 #
- Add support for PDF Destination (Page links)
0.4.10 #
- FIXED:
isEncrypted
property of document returns always true even the document is not encrypted (#29)
0.4.8 #
- FIXED: Unhandled Exception: type 'Null' is not a subtype of type
PdfPageRenderCancellationTokenPdfium
in type cast (#26)
0.4.7 #
- FIXED: Android build broken? Cannot find
libpdfium.so
error (#25) PdfViewerParams.loadingBannerBuilder
to customize HTTP download progressPdfViewerParams.linkWidgetBuilder
to support embedded links- WIP: Updated text selection mechanism, which is faster and stable but still certain issues
- Pan-to-scroll does not work on Desktop/Web
- Selection does not work as expected on mobile devices
- Support Linux running on arm64 Raspberry PI (#23, #24)
0.4.6 #
- Introduces
PdfPage.render
cancellation mechanismPdfPageRenderCancellationToken
to cancel the rendering process- BREAKING CHANGE:
PdfPage.render
may return null if the rendering process is canceled
PdfPageRender.render
limits render resolution up to 300-dpi unless you usegetPageRenderingScale
- Even with the restriction, image size may get large and you'd better implement
getPageRenderingScale
to restrict such large image rendering
- Even with the restriction, image size may get large and you'd better implement
PdfViewerParams
default changes:scrollByMouseWheel
default is 0.2maxRealSizeImageCount
default is 3
PdfViewerParams.scrollByArrowKey
to enable keyboard navigation
0.4.5 #
PdfViewerParams
updatesPdfViewerParams.onPageChanged
replacesonPageChanged
parameter onPdfViewer
factoriesPdfViewerParams.pageAnchor
replacesanchor
parameter onPdfViewer
factories
pdfDocumentFromUri
/PdfFileCache
improves mechanism to cache downloaded PDF file- ETag check to invalidate the existing cache
- Better downloaded region handling
0.4.4 #
PdfPage.render
can render Annotations and FORMSPdfFileCache
: More realistic file cache mechanism- Introduces
PasswordProvider
to repeatedly test passwords (only API layer)
0.4.0 #
- Many breaking changes but they improve the code integrity:
PdfDocument.pages
supersedesPdfDocument.getPage
PdfDocument.pageCount
is removedPdfViewerParams.devicePixelRatioOverride
is removed; usegetPageRenderingScale
instead
- Add
PdfPageAnchor.all
PdfViewerParams.viewerOverlayBuilder
/PdfViewerScrollThumb
to support scroll thumbs
0.3.6 #
PageLayout
->PdfPageLayout
0.3.5 #
PageLayout
class change to ease page layout customization- Add example use case in API document
0.3.4 #
- Rewriting page rendering code
- Due to the internal structure change, page drawing customization parameters are once removed:
pageDecoration
pageOverlaysBuilder
- Due to the internal structure change, page drawing customization parameters are once removed:
- Example code does not enables
enableTextSelection
; it's still too experimental...
0.3.3 #
- FIXED: Downloading of small PDF file causes internal loading error
0.3.2 #
- Support mouse-wheel-to-scroll on Desktop platforms
0.3.1 #
- Minor API changes
- Internal integrity updates that controls the viewer behaviors
- FIX: example code does not have
android.permission.INTERNET
onAndroidManifest.xml
PdfViewerParams.devicePixelRatioOverride
is deprecated and introducesPdfViewerParams.getPageRenderingScale
0.3.0 #
- Many renaming of the APIs that potentially breaks existing apps
0.2.4 #
- Now uses
plugin_ffi
. (Not containing any Flutter plugin stab)
0.2.2 #
- Explicitly specify Flutter 3.16/Dart 3.2 as
NativeCallable.listener
does not accept non-static function (#5)
0.2.1 #
- Stabilizing API surface
- Introducing
PdfViewer.asset
/file
/uri
/custom
PdfViewer
hasdocumentLoader
to accept function to loadPdfDocument
- Introducing
- Fixes minor issues on
PdfViewer
0.2.0 #
- Introducing
PdfDocument.openUri
/PdfFileCache*
classes - Introducing
PdfPermissions
PdfPage.loadText
/PdfPageText
for text extraction- Android NDK CMake to 3.18.1
0.1.1 #
- Document updates
- Pdf.js 3.11.174
0.1.0 #
- First release (Documentation is not yet ready)