pdfrx 1.3.3
pdfrx: ^1.3.3 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.3 #
- NEW FEATURE: Updated
bin/remove_wasm_modules.dartto comment out assets line in pubspec.yaml instead of deleting files- Added
--revertoption to restore commented assets line inbin/remove_wasm_modules.dart
- Added
1.3.2 #
- NEW FEATURE: Added
useProgressiveLoadingparameter for allPdfViewerconstructors to enable progressive page loading - NEW FEATURE: Added
PdfDocument.changesstream to notify page status changes and loading progress
1.3.1 #
- NEW FEATURE: Added
PdfViewerParams.calculateInitialZoomto customize initial zoom calculation (#406) - Removed deprecated
PdfrxWebRuntimeTypeAPI
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
headersandwithCredentialssupport 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_longjmperror 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_wasmpackage is no longer needed; WASM assets are now included directly in the mainpdfrxpackage - 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
limitRenderingCacheparameter toPdfViewerParamsto control rendering cache behavior (#394) - Add rendering flags support to
PdfPage.rendermethod
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
calculateCurrentPageNumberis overridden (#367)
1.1.30 #
- MERGED: PR #364 fix: blank pdf on Windows when restore window from minimize
- Update example's
app/build.gradleto support Android's 16KB page size
1.1.29 #
- FIXED: #363
- FIXED:
pdfium-wasm-module-urlon HTML meta tag overrides value explicitly set toPdfrx.pdfiumWasmModulesUrl - Improves
pdfium_worker.js/pdfium.wasmloading path resolution logic to allow relative paths
- FIXED:
1.1.28 #
- WIP: zoom ratio calculation updates
goToPagethrows 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 withOffsetfor 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
goToPageand othergoTofunctions behavior changes (normalizeMatrixand 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
TextFormFieldin page overlay from receiving key events
1.1.23 #
- Minor internal change
1.1.22 #
PdfDocumentFactoryrefactoring to improve the code integrity- Introduces
getDocumentFactory/getPdfjsDocumentFactory/getPdffiumDocumentFactoryto get the direct/internal document factory
- Introduces
- Introduces
PdfViewerParams.onKey/PdfViewerKeyHandlerParamsto handle key events onPdfViewer
1.1.21 #
- FIXED:
loadOutlineis 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.dartnow 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
allowDataOwnershipTransferonPdfDocument.openDatato 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.jsto deal with CORS error on loading CMAP files - FIXED:
pdfjsGetDocumentFromData, which is used by variousPdfDocumentopen functions, does not propagatecMapUrl/cMapPackedto the Pdf.js
1.0.102 #
- dart2wasm compatibility updates
- Pdf.js 4.10.38
PdfTextSearchercorrectly 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.calcFitZoomMatricesto 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
--wasmoption
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.normalizeMatrixto make it easier to handle more complex situations (#239)
1.0.86 #
- Add
PdfViewerParams.normalizeMatrixto 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.useDocumentto make it easy to usePdfDocumentsafely - Introduces
PdfViewerController.pageCountto get page count without explicitly accessPdfViewerController.pages PdfViewerController.document/PdfViewerController.pagesare now deprecated
1.0.80 #
- BREAKING CHANGE:
PdfViewerParams.viewerOverlayBuilderintroduces third parameter namedhandleLinkTap, which is used withGestureDetectorto handle link-tap events on user code (#175) - Fix typos on
README.md
1.0.78 #
- Add
packagingOptions pickFirstto workaround multiplelibpdfium.soproblem on Android build (#8) - FIXED:
_relayoutPagesmay cause null access - Update
README.mdto explainPdfViewerParam.linkHandlerParamsfor link handling
1.0.77 #
- #175: Woops, just missing synchronized to call
loadLinkscauses multiple load invocations...
1.0.76 #
1.0.75 #
- Pdf.js 4.4.168
1.0.74 #
- Introduces
PdfViewerController.getPdfPageHitTestResult - Introduces
PdfViewerController.layoutto 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:
PdfPageAnchorbehavior changes for existingPdfPageAnchorenumeration values. - Introduces
PdfPageAnchor.top/left/right/bottom - Introduces
PdfViewerController.calcMatrixToEnsureRectVisible
1.0.67 #
- FIXED:
LateInitializationError: Field_cacheBlockCount@1436474497has 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=21to 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
PdfDocumentinstances 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.pageAnchorEndfor specifying anchor for the "virtual" page next to the last page
PdfViewerParams.onePassRenderingScaleThresholdto 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.perPageSelectionAreaInjectoris 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.useAlternativeFitScaleAsMinScalebut 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/cMapPackeddoes 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_interopbased 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.2I'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/removeListenerindependently has listener list on it to make it work regardless ofPdfViewerattached 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.boundaryMargindoes 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
PdfJsConfigurationto configure Pdf.js download URLs
0.4.34 #
- Document update
0.4.33 #
- Document update
0.4.32 #
- Add
PdfViewerParams.calculateInitialPageNumberto calculate the initial page number dynamically - Add
PdfViewerParams.onViewerReadyto 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.mdupdates
0.4.26 #
- Introduces
PdfTextSearcherthat 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 longerTransformationControllerbut 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/PdfPageViewwidgets - Example code is super updated with index and thumbnails.
0.4.22 #
- Web: Now Pdf.js is loaded automatically and no modification to
index.htmlis required! - Default implementation for
PdfViewerParams.errorBannerBuilderto show internally thrown errors PdfPasswordExceptionis introduced to notify password errorPdfDocumentRefnow hasstackTracefor errorPdfFileCachenow uses dedicatedhttp.Clientinstance
0.4.21 #
- Now
PdfDocumentRefhas const constructor andPdfViewer.documentRefis also const
0.4.20 #
- Removes
PdfDocumentProvider(ActuallyPdfDocumentRefdoes everything) - Fixes breakage introduced by 0.4.18
0.4.19 #
firstAttemptByEmptyPasswordshould be true by default
0.4.18 #
0.4.17 #
- Additional fixes to text selection mechanism
0.4.16 #
- Remove password parameters; use
passwordProviderinstead. - Fixes several resource leak scenarios on
PdfDocumentopen 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.onDocumentChangedevent - Introduces
PdfDocument.loadOutlineto 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:maxThumbCacheCountmaxRealSizeImageCountenableRealSizeRendering
0.4.11 #
- Add support for PDF Destination (Page links)
0.4.10 #
- FIXED:
isEncryptedproperty 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
PdfPageRenderCancellationTokenPdfiumin type cast (#26)
0.4.7 #
- FIXED: Android build broken? Cannot find
libpdfium.soerror (#25) PdfViewerParams.loadingBannerBuilderto customize HTTP download progressPdfViewerParams.linkWidgetBuilderto 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.rendercancellation mechanismPdfPageRenderCancellationTokento cancel the rendering process- BREAKING CHANGE:
PdfPage.rendermay return null if the rendering process is canceled
PdfPageRender.renderlimits render resolution up to 300-dpi unless you usegetPageRenderingScale- Even with the restriction, image size may get large and you'd better implement
getPageRenderingScaleto restrict such large image rendering
- Even with the restriction, image size may get large and you'd better implement
PdfViewerParamsdefault changes:scrollByMouseWheeldefault is 0.2maxRealSizeImageCountdefault is 3
PdfViewerParams.scrollByArrowKeyto enable keyboard navigation
0.4.5 #
PdfViewerParamsupdatesPdfViewerParams.onPageChangedreplacesonPageChangedparameter onPdfViewerfactoriesPdfViewerParams.pageAnchorreplacesanchorparameter onPdfViewerfactories
pdfDocumentFromUri/PdfFileCacheimproves mechanism to cache downloaded PDF file- ETag check to invalidate the existing cache
- Better downloaded region handling
0.4.4 #
PdfPage.rendercan render Annotations and FORMSPdfFileCache: More realistic file cache mechanism- Introduces
PasswordProviderto repeatedly test passwords (only API layer)
0.4.0 #
- Many breaking changes but they improve the code integrity:
PdfDocument.pagessupersedesPdfDocument.getPagePdfDocument.pageCountis removedPdfViewerParams.devicePixelRatioOverrideis removed; usegetPageRenderingScaleinstead
- Add
PdfPageAnchor.all PdfViewerParams.viewerOverlayBuilder/PdfViewerScrollThumbto support scroll thumbs
0.3.6 #
PageLayout->PdfPageLayout
0.3.5 #
PageLayoutclass 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:
pageDecorationpageOverlaysBuilder
- 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.INTERNETonAndroidManifest.xml PdfViewerParams.devicePixelRatioOverrideis 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.listenerdoes not accept non-static function (#5)
0.2.1 #
- Stabilizing API surface
- Introducing
PdfViewer.asset/file/uri/custom PdfViewerhasdocumentLoaderto accept function to loadPdfDocument
- Introducing
- Fixes minor issues on
PdfViewer
0.2.0 #
- Introducing
PdfDocument.openUri/PdfFileCache*classes - Introducing
PdfPermissions PdfPage.loadText/PdfPageTextfor 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)