printing_ffi 0.0.11
printing_ffi: ^0.0.11 copied to clipboard
A Flutter plugin for direct printer communication using native FFI bindings for macOS, Windows, and Linux.
0.0.11 #
- DOCS: Updated
README.mdwith detailed instructions for usage of available API's.
0.0.10 #
- โจ FEAT: Added support for printing multiple copies of PDF documents on Windows. The printer driver now handles copy collation, improving performance and reliability. ๐ข
- โจ FEAT: Exposed
initPdfium()for explicit PDFium library initialization on Windows. This improves compatibility with other PDF plugins (likepdfrx) and ensures thread-safe, idempotent initialization. - โจ FEAT: Added a
PdfRotationoption for PDF printing on Windows, allowing users to override the document's default rotation (e.g.,auto,none,rotate90). - โจ FEAT: Added a comprehensive suite of mock tests using
mocktailto validate class behavior, including synchronous and asynchronous methods, without requiring a native environment. - REFACTOR: Simplified the Windows PDF printing implementation by removing the manual copy loop. The native
dmCopiessetting in theDEVMODEstructure is now used, delegating the work to the printer driver for better efficiency. โป๏ธ - REFACTOR: Refactored the
PrintingFficlass to support dependency injection, significantly improving testability. This includes a newPrintingFfi.forTestconstructor for injecting mock bindings. ๐งช - โจ FEAT(example): The example app now includes fields to specify the number of copies and select page rotation for PDF printing.
- โจ FEAT(example): Enhanced the print job status tracking dialog with more detailed feedback, clearer status transitions, and a synthetic "completed" status for finished jobs.
- FIX: Corrected the dynamic library (
.dylib) loading logic on macOS to work reliably in both test and application environments. ๐ - FIX: Implemented
shutdown_pdfium_library()to ensure proper cleanup of PDFium resources on Windows, preventing potential resource leaks. ๐ ๏ธ - FIX: Ensured the
PrintingFfiprivate constructor correctly initializes native bindings, preventing potential runtime errors. ๐ ๏ธ - BUILD: Removed unnecessary
androidandiosplatform declarations frompubspec.yaml. - BUILD: Added
mocktailas adev_dependencyto support the new testing infrastructure. - DOCS: Updated
README.mdwith detailed instructions for the new explicit PDFium initialization.
0.0.9 #
- โจ FEAT: Added full support for duplex (double-sided) printing on Windows, macOS, and Linux. Users can now select single-sided, duplex long-edge (book-style), or duplex short-edge (notepad-style) printing. ๐
- โจ FEAT(example): Refined the example app with
shadcn_uicomponents, including a dedicated platform settings card and responsive layouts for a better user experience. ๐จ - REFACTOR: Translated generic print options (like
orientation,color-mode,duplex) into platform-specific CUPS options (orientation-requested,print-color-mode,sides) within the Dart isolate, simplifying the native C code and improving cross-platform consistency. โป๏ธ - DOCS: Updated
README.mdto include documentation for the new duplex printing feature. ๐
0.0.8 #
- โจ FEAT(example): Implemented the entire example app UI using the
shadcn_uipackage for a modern, clean, and responsive user experience. - โจ FEAT(example): Enhanced raw data printing with a data type selector (ZPL, ESC/POS, Custom) and provided corresponding example data.
- FIX: Corrected conditional compilation for error handling, resolving an issue where
set_last_errorwas not defined for all platforms, leading to compilation errors on non-Windows targets. ๐ - FIX: Resolved an 'undefined' compiler error for the
_scale_to_fithelper function by ensuring it is defined on all platforms. ๐ ๏ธ
0.0.7 #
- FEAT: Added support for collating copies on Windows. ๐
- FEAT: Enhanced error handling, providing detailed native error messages and a real-time logging callback for easier debugging. ๐ต๏ธโโ๏ธ
- FEAT: Enhanced PDF printing on Windows with
Fit to PaperandCustomscaling options. ๐โจ - FIX: Resolved PDF rendering issues on Windows, including color distortion and page stretching on high-DPI displays, by using a 32-bit BGRA bitmap format for improved compatibility. ๐๐จ
- **FIXa: Improved stability by addressing a memory leak and enhancing resource cleanup during print failures on Windows.
- REFACTOR: Improved Windows print driver compatibility by streamlining device setting modifications, reducing the risk of conflicts. โป๏ธ
- EXAMPLE: Added PDF file selection and custom scale validation to the example app. ๐จ
- DOCS: Updated documentation for new features and error handling. ๐
0.0.6 #
- FEAT: Added support for opening the native Windows printer properties dialog via
openPrinterProperties. ๐๏ธ - FEAT: Added support for setting Paper Size, Paper Source, and Orientation on Windows for both PDF and raw data printing. ๐โ๏ธ
- FEAT: Added support for passing generic CUPS options to raw data print jobs on macOS and Linux. ๐ง๐
- REFACTOR: Refactored the Dart FFI layer to use generated bindings directly, removing manual lookups and improving maintainability. โจ
- EXAMPLE: Updated the example app with UI controls for new Windows printing options and a button to show printer properties. ๐จ
0.0.5 #
- FEAT: Added support for
copiesandpageRangewhen printing PDFs on Windows and CUPS-based systems. ๐ข - FEAT: Refactored the
pageRangeparameter to use a type-safePageRangeclass, improving API clarity and preventing invalid format errors. ๐ - DOCS: Updated documentation for new printing parameters and the
PageRangeclass. ๐ - EXAMPLE: Added UI controls for setting the number of copies and page range in the example app. ๐จ
0.0.4 #
- DOCS: Updated
pubspec.yamlwith repository, homepage, issue tracker links,license and relevant topics for better discoverability on pub.dev.
0.0.3 #
- FEAT: Added full support for Linux via CUPS. ๐
- FEAT: Added job status tracking streams for PDF and raw data printing. ๐
- FEAT: Added
getWindowsPrinterCapabilitiesto fetch supported paper sizes and resolutions on Windows. ๐จ๏ธ - โจ FEAT: Improved error handling and Windows printer capabilities:
- Enhanced isolate communication with robust error responses.
- Switched to Unicode (W-series) Windows APIs for full international character support in printer and document names.
- Improved memory management and error handling in
get_windows_printer_capabilities. - Added
NULLchecks for pointers returned by Windows API functions to prevent crashes. - Improved logging for easier debugging.
- DOCS: Updated README with Linux setup instructions and new features. ๐
0.0.2 #
- FIX: Resolved a crash on Windows when printing by correctly quoting the printer name for the shell API.
- FIX: Updated the Windows build script to use the correct URL and latest version of the
pdfiumlibrary, resolving download errors. - FEAT: Added
PdfPrintScalingoption to theprintPdffunction on Windows to control scaling ('Fit to Page' vs 'Actual Size'). - FIX: Replaced unreliable
ShellExecutePDF printing on Windows with a robust, self-contained solution using thepdfiumlibrary for rendering. This removes the dependency on external PDF applications. - FIX: Correctly specified "raw" printing option for CUPS on macOS/Linux to ensure raw data is sent to the printer without modification.
- FEAT: Added extensive logging to the native C code, enabled in debug builds, to simplify troubleshooting.
- FEAT: Added
printPdffunction to print PDF files directly to a specified printer.
0.0.1 #
- Initial Release
- Added support for listing printers on macOS (via CUPS) and Windows (via winspool), including offline printers.
- Implemented raw data printing for sending formats like ZPL and ESC/POS directly to printers.
- Included print job management features: list, pause, resume, and cancel jobs.
- Utilizes FFI for direct native API communication, ensuring high performance.