pdf_combiner
It is a lightweight and efficient Flutter plugin designed to merge multiple PDF documents into a single file effortlessly.
6.2.1
8.7K downloads/mo
#3110 most downloaded on pub.dev
vicajilau/pdf_combiner
What this package is like to depend on
Last release 5 days ago
19 Aug 2026
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 46 of 46 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
46 releases · first in 2024
12 releases in the last 12 months
see the full history below
Release timeline
46 releases · Dec 2024 to Aug 2026Releases
latest 46-
6.2.119 Aug 2026Release notes
Open source →What's Changed
- docs: update MergeInput documentation to reflect sealed class implementation and URL support by @aucavic in #162
- build(deps): bump file_magic_number from 2.0.0 to 2.1.0 in /example by @dependabot[bot] in #163
- build(deps): bump permission_handler from 12.0.3 to 13.0.0 in /example by @dependabot[bot] in #164
- build(deps): bump test from 1.31.0 to 1.31.1 in /example by @dependabot[bot] in #166
- build(deps): bump permission_handler from 13.0.0 to 13.0.1 in /example by @dependabot[bot] in #165
- fix(android): avoid pinning the Kotlin Gradle plugin version by @lauritsbrok in #167
New Contributors
- @lauritsbrok made their first contribution in #167
Full Changelog: v6.2.0...v6.2.1
Release notes
Open source →Android
- Removed the pinned Kotlin Gradle plugin version so the library inherits the version declared by the consuming Flutter project, avoiding version conflicts.
-
6.2.017 Jul 2026Release notes
Open source →What's Changed
- fix(ios,macos): fix EXC_BAD_ACCESS crash when merging PDFs by @aucavic in #157
- chore: bug fixes, memory optimizations, and web script loading improvements for v6.1.1 by @aucavic in #158
- feat: add MergeInput.url support by @aucavic in #159
- refactor: convert MergeInput to sealed class hierarchy by @aucavic in #160
- refactor: remove isolates and simplify image models by @aucavic in #161
New Contributors
Full Changelog: v6.1.0...v6.2.0
Release notes
Open source →General
-
Refactored
MergeInputto a Dart 3sealed classhierarchy (PathMergeInput,BytesMergeInput,UrlMergeInput) for improved type safety and pattern matching support, while maintaining full backward compatibility. -
Removed redundant Dart isolates layer to optimize memory and CPU usage, invoking platform method channels directly (since native implementations already process work asynchronously on background threads).
-
Simplified
ImageCompressionclass structure by removing unnecessary internal private subclasses. -
Corrected
ImageScaledocumentation fortoMap()and clarified its constructor assertions. -
Added
MergeInput.urlsupport to dynamically download and merge remote PDFs and images. -
Implemented automatic URL download caching (
_downloadedUrlBytesCache) and temporal file cleanup. -
Improved
DocumentUtils.prepareInputto dynamically detect file formats (PDF, PNG, JPG, HEIC) using magic numbers for byte inputs instead of forcing.pngextension. -
Added unit tests to verify proper file extension creation for byte arrays in
prepareInput.
Android
- Fixed a crash (
IllegalArgumentException) when extracting a PDF to a single combined image with original dimensions (0, 0). - Aligned image rescaling logic for individual page extraction with iOS (individual pages are now resized if a scale is configured).
iOS & macOS
- Fixed a critical crash (
EXC_BAD_ACCESSinCGPDFAdvancesGetHorizontalAdvance) when merging multiple PDF files caused by premature deallocation of sourcePDFDocumentobjects. #156 - Simplified page creation helper using native
PDFPage(image:)initialization. - Added
autoreleasepoolwrapping to PDF page rendering loops to prevent memory accumulation and potential out-of-memory crashes on large documents.
macOS
- Fixed a bug where pages were vertically combined in reverse order (from last page to first page).
Web
- Added script load safety checks before executing JS interop calls, resolving potential race condition crashes on early invocations.
-
6.1.028 Jun 2026Release notes
Open source →What's Changed
- build(deps): bump file_picker from 10.3.8 to 10.3.10 in /example by @dependabot[bot] in #129
- build(deps): bump test from 1.26.3 to 1.29.0 in /example by @dependabot[bot] in #131
- build(deps): bump platform_detail from 5.1.0 to 5.4.0 in /example by @dependabot[bot] in #133
- build(deps): bump test from 1.29.0 to 1.30.0 in /example by @dependabot[bot] in #132
- build(deps): bump cupertino_icons from 1.0.8 to 1.0.9 in /example by @dependabot[bot] in #134
- build(deps): bump file_picker from 10.3.10 to 11.0.1 in /example by @dependabot[bot] in #135
- build(deps): bump file_picker from 11.0.1 to 11.0.2 in /example by @dependabot[bot] in #136
- build(deps): bump desktop_drop from 0.7.0 to 0.7.1 in /example by @dependabot[bot] in #138
- Upgrade actions/checkout and related actions to v6 by @vicajilau in #142
- Bump version to 6.0.5, fix SPM dependency, and suppress MSVC coroutine deprecation warning by @vicajilau in #149
- build(deps): bump open_file from 3.5.11 to 4.0.0 in /example by @dependabot[bot] in #150
- build(deps): bump path_provider from 2.1.5 to 2.1.6 in /example by @dependabot[bot] in #152
- feature/build_in_kotlin_migration by @daniJimen in #153
- feat: optimize FileTypeIcon state management and implement file byte caching by @vicajilau in #155
Full Changelog: v6.0.4...v6.1.0
Release notes
Open source →General
- Fixed an issue where some live images were not properly detected as images.
Android
- Migrate library to build in kotlin.
- Refactored Kotlin implementation to use
CoroutineScope(Dispatchers.Main)and execute background tasks safely onDispatchers.Default, preventing blocking of the main UI thread. - Fixed a critical bitmap memory leak in the Android rescaling function by properly recycling the original bitmap resources.
iOS & macOS
- Added missing
FlutterFrameworkdependency toPackage.swiftfor Swift Package Manager support.
Windows
- Added
_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGScompile definition to suppress MSVC deprecation errors in standard library coroutine headers.
-
6.0.423 Jan 2026Release notes
Open source →General
- Updated minimum Dart SDK to
3.0.0to support latest dependencies.
- Updated minimum Dart SDK to
-
6.0.323 Jan 2026 -
6.0.222 Jan 2026 -
6.0.122 Jan 2026 -
6.0.021 Jan 2026Release notes
Open source →General
- BREAKING CHANGE: All methods now use
MergeInputinstead ofStringfor input parameters, allowing both file paths and raw bytes (Uint8List). - BREAKING CHANGE:
generatePDFFromDocumentsparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
mergeMultiplePDFsparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
createPDFFromMultipleImagesparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
createImageFromPDFparameter changed frominputPath: Stringtoinput: MergeInput. - Added
MergeInputclass with two factory constructors:MergeInput.path(String)andMergeInput.bytes(Uint8List). - Added support for mixing file paths and bytes in the same operation.
- Added support for .heic file format.
Release notes
Open source →General
- BREAKING CHANGE: All methods now use
MergeInputinstead ofStringfor input parameters, allowing both file paths and raw bytes (Uint8List). - BREAKING CHANGE:
generatePDFFromDocumentsparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
mergeMultiplePDFsparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
createPDFFromMultipleImagesparameter changed frominputPaths: List<String>toinputs: List<MergeInput>. - BREAKING CHANGE:
createImageFromPDFparameter changed frominputPath: Stringtoinput: MergeInput. - Added
MergeInputclass with two factory constructors:MergeInput.path(String)andMergeInput.bytes(Uint8List). - Added support for mixing file paths and bytes in the same operation.
- Added support for .heic file format.
- BREAKING CHANGE: All methods now use
-
5.0.012 Jan 2026Release notes
Open source →General
- BREAKING CHANGE: Removed custom response models (
GeneratePdfFromDocumentsResponse,ImageFromPDFResponse,MergeMultiplePDFResponseandPdfFromMultipleImageResponse). - BREAKING CHANGE: Methods now return
Future<String>(path) orFuture<List<String>>(paths) directly. - BREAKING CHANGE: Removed
PdfCombinerStatusenum andPdfCombinerDelegate. - BREAKING CHANGE: Error handling now uses standard Dart
try-catchblocks. The plugin throwsPdfCombinerExceptionon failure. - Simplified documentation examples to use generic
try-catchblocks. - Added a dedicated section for
PdfCombinerExceptionin README.
Release notes
Open source →General
- BREAKING CHANGE: Removed custom response models (
GeneratePdfFromDocumentsResponse,ImageFromPDFResponse,MergeMultiplePDFResponseandPdfFromMultipleImageResponse). - BREAKING CHANGE: Methods now return
Future<String>(path) orFuture<List<String>>(paths) directly. - BREAKING CHANGE: Removed
PdfCombinerStatusenum andPdfCombinerDelegate. - BREAKING CHANGE: Error handling now uses standard Dart
try-catchblocks. The plugin throwsPdfCombinerExceptionon failure. - Simplified documentation examples to use generic
try-catchblocks. - Added a dedicated section for
PdfCombinerExceptionin README.
- BREAKING CHANGE: Removed custom response models (
-
4.4.217 Dec 2025Release notes
Open source →Windows
- Fixed an issue that prevented building on the Windows platform. #110
Release notes
Open source →Windows
- Fixed an issue that prevented building on the Windows platform. #110
-
4.4.125 Nov 2025Release notes
Open source →Web
- Fixed an issue where the
webfolder was not being correctly published, preventing the plugin from working on the web platform. #102
General
- Updated libraries to improve package analysis and scoring on pub.dev.
- Updated dependencies.
- Fixed an issue where the
-
4.4.028 Oct 2025Release notes
Open source →General
- Fixed an issue where temporary PDF files were not cleaned up after
generatePDFFromDocumentsoperation, causing unnecessary storage bloat on mobile devices. #93 - Added ability to customize the temporary folder path where files are generated using
DocumentUtils.setTemporalFolderPath()on all native platforms (Windows, macOS, Linux, Android, iOS). - Improved documentation across the codebase.
- Updated dependencies.
- Fixed an issue where temporary PDF files were not cleaned up after
-
4.3.819 Aug 2025Release notes
Open source →General
- Prepare app to access it from github_pages
Web
- Resolve issue when you convert any image into pdf
-
4.3.718 Jul 2025Release notes
Open source →General
- Updated the process exposing dependencies to increase the coverage of supported versions.
-
4.3.611 Jul 2025 -
4.3.519 Jun 2025Release notes
Open source →iOS & macOS
- Fixed an issue where a PDF from multiple images were not creating one page for each image. PR-78
-
4.3.419 Jun 2025 -
4.3.310 May 2025Release notes
Open source →Android
- Fixed an issue where R8 errors happens during release builds due to missing classes. #67
-
4.3.209 May 2025Release notes
Open source →Android
- Fixed an issue where multiple PDF files are combined, the resolution of the pages decreases. #65
-
4.3.114 Apr 2025Release notes
Open source →General
- Fixed an issue where the application was not build due to a problem with file_magic_number. #58
- Updated dependencies.
-
4.3.024 Mar 2025Release notes
Open source →General
- Added:
PdfCombinerDelegateclass for handling progress, success, and error callbacks during the PDF combination process.
- Added:
-
4.2.512 Mar 2025 -
4.2.412 Mar 2025 -
4.2.311 Mar 2025Release notes
Open source →General
- Fixed
createPDFFromImagesandgeneratePDFFromDocuments: Resolved an issue where the application show a message error when generating PDFs from image files related to the width of the image that appears its undefined.#43
- Fixed
-
4.2.211 Mar 2025Release notes
Open source →General
- Fixed
generatePDFFromDocumentsWhen selecting the option to create a PDF with two or more images, the process fails, and no PDF is generated. #40 - Updated error message for invalid
outputPathto clarify that it must have a.pdfformat ongeneratePDFFromDocuments,mergeMultiplePDFsandcreatePDFFromMultipleImages.
- Fixed
-
4.2.110 Mar 2025Release notes
Open source →General
- Improved documentation.
- Added more coverage.
- Improved UI for example project.
Web
createPDFFromMultipleImagesdid not work without passing a configuration. #37
-
4.2.009 Mar 2025Release notes
Open source →General
- Drag & Drop Capability added on example project.
- Added
generatePDFFromDocumentsmethod to create a PDF from a mix of PDFs and images in any order. - Improved UI for example project.
-
4.1.108 Mar 2025 -
4.1.008 Mar 2025Release notes
Open source →General
- Improved documentation.
Linux
- Improved error management.
Windows
- Added support with PDFium by Google with C++.
-
4.0.107 Mar 2025Release notes
Open source →General
- Refactored
pdf_combinerto usecomputefor native calls (MethodChannel), reducing potential UI freezes (UI thread blocking). isMockhas been added toPdfCombinerfor testing purposes, when set to true, isolates will not be executed using main Isolate.
- Refactored
-
4.0.005 Mar 2025Release notes
Open source →General
- Errors are being recovered from native and sent through the message.
- New optional parameter
configof typePdfFromMultipleImageConfigto the methodcreatePDFFromMultipleImages. - New optional parameter
configof typeImageFromPdfConfigto the methodcreateImageFromPDF. - BREAKING CHANGE:
maxWidth,maxHeightandneedImageCompressorhas been inserted inside ofconfigproperty oncreatePDFFromMultipleImagesmethod. - BREAKING CHANGE:
maxWidth,maxHeightandcreateOneImagehas been inserted inside ofconfigproperty oncreateImageFromPDFmethod. - BREAKING CHANGE:
outputPathparameter has been renamed byoutputDirPathincreateImageFromPDFmethod. - BREAKING CHANGE:
createOneImageis false by default increateImageFromPDFmethod.
Android
Apache PDFBoxhas been replaced by native code withandroid.graphicsimplementation.
-
3.4.023 Feb 2025 -
3.3.021 Feb 2025Release notes
Open source →Web
- Removed the need for manually importing JavaScript files and modifying
index.html. #21.
- Removed the need for manually importing JavaScript files and modifying
-
3.2.019 Feb 2025Release notes
Open source →General
- Error management improved.
- File type detection improved with
file_magic_numberdependency. file_magic_number - Universal flows improved.
-
3.1.218 Feb 2025 -
3.1.118 Feb 2025Release notes
Open source →General
- Added Codecov tool.
- Added coverage on CI and PRs.
Android
- Fix issue with special characters in the
outputPathparam onimageFromPDFmethod.
-
3.1.017 Feb 2025Release notes
Open source →General
- Integrated CD.
iOS
- iOS migration to SPM.
MacOS
- MacOS migration to SPM.
-
3.0.414 Feb 2025 -
3.0.314 Feb 2025 -
3.0.214 Feb 2025 -
3.0.114 Feb 2025 -
3.0.014 Feb 2025Release notes
Open source →General
- Tooltips, theme, and more improvements on example project.
- Improved documentation inside of the code.
- Some improvements on the readme.
- Updated dependencies.
- Added more integration tests.
- Minimized code size.
- Minimized code size.
- Optimized CI/CD process.
iOS
- Fixed wrong order exporting a pdf to one image #9.
- Refactor creating extensions.
MacOS
- MacOS support added.
- Refactor creating extensions.
Web
- Web support added.
-
2.1.013 Jan 2025Release notes
Open source →- Added support for empty images.
- Errors are more explicits adding the path.
- Bugfix when file does not exist. See #3 for details.
- Added more unit testing.
- Updated Android dependencies.
-
2.0.016 Dec 2024Release notes
Open source →- BREAKING CHANGE: mergeMultiplePDF has been renamed by mergeMultiplePDFs.
- BREAKING CHANGE: createPDFFromMultipleImage has been renamed by createPDFFromMultipleImages.
- BREAKING CHANGE: createImageFromPDF has been renamed by createImageFromPDFs.
- BREAKING CHANGE:
pathsparameter has been renamed byinputPathsin mergeMultiplePDFs method. - BREAKING CHANGE:
outputDirPathparameter has been renamed byoutputPathin mergeMultiplePDFs method. - BREAKING CHANGE:
pathsparameter has been renamed byinputPathsin mergeMultiplePDFs method. - BREAKING CHANGE:
outputDirPathparameter has been renamed byoutputPathin createPDFFromMultipleImages method. - BREAKING CHANGE:
pathparameter has been renamed byinputPathin createPDFFromMultipleImages method. - BREAKING CHANGE:
outputDirPathparameter has been renamed byoutputPathin createImageFromPDF method. - BREAKING CHANGE: response.status is not a String anymore, now it is a PdfCombinerStatus enum value.
- Added more tests.
- Improved documentation.
-
1.0.115 Dec 2024 -
1.0.015 Dec 2024Release notes
Open source →- Initial release of the PDF Combiner package.
- Allows users to select multiple PDF files.
- Combines selected PDFs into a single output file.
- Supports storage permissions on Android for file access.
- Displays success and error messages using SnackBars.
- Provides compatibility with both Android and iOS platforms for saving the output file.
- Completed migration from pdf_merger.