Pakete, Repositories und App-Kategorien suchen

GitHub-RepositoryYousefMohamed6/quick_print

Schnelldruck

Dieses Paket bietet eine einheitliche Schnittstelle zum Drucken von PDFs mit verschiedenen Druckertypen, einschließlich ESC/POS, Sunmi, Bluetooth, USB und Systemdruckern.

Projektcover von Schnelldruck
Sterne
8
Forks
8
Letzter Push (UTC)
02.11.2025
Projektstatus
Aktiv

Original-README

Englischer Projektschnappschuss. Aktuelle Inhalte auf GitHub.

Quick Print

A comprehensive Flutter package for handling PDF printing across different platforms and devices. This package provides a unified interface for printing PDFs using various printer types, including ESC/POS, Sunmi, Bluetooth, USB, and system printers.

pub package likes popularity

Features

  • 🖨️ Multi-printer Support
    • Sunmi printer support for Android devices
    • Bluetooth printer integration (including BLE)
    • USB printer compatibility
    • Desktop system printer support
    • Mobile device printing
  • 🖼️ Image Printing Support
    • Print images (Uint8List) directly to any supported printer
  • 📄 Paper Size Options
    • 80mm paper width (POS printers)
    • 58mm paper width (Thermal printers)
    • A4 paper size
  • 🎯 Platform Support
    • Android
    • iOS
    • Windows
    • Linux
    • macOS
  • 🔍 Printer Discovery
    • Discover Bluetooth, BLE, USB, and desktop printers
    • Unified API for managing discovered printers
  • 🛠️ Error Handling
    • Custom exceptions for invalid files, unconnected devices, and unsupported operations

Getting Started

Add this to your package's pubspec.yaml file:

dependencies:
  quick_print: <LASTEST_VERSION>

Then run:

flutter pub get

Usage

Basic Usage
import 'package:quick_print/quick_print.dart';

// Create a printer instance
final printer = QuickPrint(PrinterDeviceType.mobile);

// Print a PDF file
await printer.instance.print(
  path: 'assets/document.pdf',
  paperSize: PaperSize.a4,
);

// Print an image (as Uint8List)
final imageBytes = await File('assets/image.png').readAsBytes();
await printer.instance.printImage(
  bytes: imageBytes,
  paperSize: PaperSize.a4,
);
Printer Discovery

The PrinterDiscoveryService class allows you to discover printers on various platforms.

import 'package:quick_print/quick_print.dart';

final discoveryService = PrinterDiscoveryService();

// Initialize the service (required for BLE on Windows)
await discoveryService.initialize();

// Discover printers
await discoveryService.discoverDevices();

// List discovered printers
final printers = discoveryService.printerDevicesList;
printers.forEach((printer) {
  print('Discovered printer: ${printer.name}');
});

// Dispose of the service when done
discoveryService.dispose();
Bluetooth Printer
import 'package:quick_print/quick_print.dart';

// Create a Bluetooth printer model
final bluetoothModel = BluetoothPrinterModel(
  name: 'Thermal Printer',
  address: '00:11:22:33:44:55',
  isBle: false,
);

// Create a printer instance
final printer = QuickPrint(PrinterDeviceType.bluetooth);

// Print with the Bluetooth printer
await printer.instance.print(
  path: 'assets/receipt.pdf',
  paperSize: PaperSize.mm80,
  model: bluetoothModel,
);
USB Printer
import 'package:quick_print/quick_print.dart';

// Create a USB printer model
final usbModel = UsbPrinterModel(
  name: 'POS-58',
  productId: '0x0483',
  vendorId: '0x5740',
);

// Create a printer instance
final printer = QuickPrint(PrinterDeviceType.usb);

// Print with the USB printer
await printer.instance.print(
  path: 'assets/receipt.pdf',
  paperSize: PaperSize.mm58,
  model: usbModel,
);

Platform-specific Setup

Android

Add the following permissions to your AndroidManifest.xml:

<!-- For Bluetooth printers -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>

<!-- For USB printers -->
<uses-feature android:name="android.hardware.usb.host"/>
iOS

Add the following to your Info.plist:

<key>UISupportedExternalAccessoryProtocols</key>
<array>
    <string>com.printer.protocol</string>
</array>

<!-- For Bluetooth printers -->
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Need BT access for printing</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Need BT access for printing</string>
macOS

Add the following entitlements to your app:

com.apple.security.print
com.apple.security.device.usb
com.apple.security.device.bluetooth

Error Handling

The package uses custom exceptions for error handling:

  • PrinterException: General printer errors
  • InvalidFileException: Errors related to invalid files
  • InvalidTypeException: Errors for invalid printer models
  • UnConnectedDeviceException: Errors for unconnected devices

Example:

try {
  await printer.instance.print(
    path: 'assets/document.pdf',
    paperSize: PaperSize.a4,
  );
} on PrinterException catch (e) {
  print('Printing failed: ${e.message}');
  if (e.cause != null) {
    print('Cause: ${e.cause}');
  }
}

Additional Information

  • Documentation: Full API documentation is available here.
  • Examples: Check the example directory for more detailed examples.
  • Issues: File issues, bugs, or feature requests here.
  • Contributing: See CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support and questions, please:

  1. Check the FAQ section
  2. Search for existing issues
  3. Create a new issue if needed

Acknowledgments

  • Thanks to all contributors who have helped make this package better
  • Special thanks to the Flutter and Dart teams for their amazing work

/// Printer implementation for USB-connected printers. class UsbPrinter extends IConnectionPrinter { }

Yousef Rabie  GitHub avatar
GitHub-Autor

Yousef Rabie ↗

Mid-Level Software Engineer

El Santa, Al Gharbia, Egypt
SprachenDart

Von diesem Repository veröffentlichte Pakete

Verwendete Abhängigkeiten

Abhängigkeiten 14 Einträge

Wie wähle ich ein passendes Repository?

Nach Anwendungsfall filtern, Aktivität vergleichen und vor der Nutzung das Originalprojekt prüfen.

  1. Nach Name, Autor oder Beschreibung suchen und nach Thema eingrenzen.
  2. Sterne, Forks und letzte Pushes vergleichen. Sterne zeigen Interesse, garantieren aber keine Qualität.
  3. Vor der Nutzung README, Lizenz und Issues auf GitHub prüfen.

Quellen und Pflege

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗