搜索插件、代码仓与 APP 分类

插件详情v1.0.2

quick_print

一个全面的 Flutter 包,用于在不同平台和设备上处理 PDF 打印,支持多种打印机类型,包括 ESC/POS、Sunmi、蓝牙、USB 和系统打印机。

AndroidiOSmacOSWindowsLinux
近 30 天下载
33
喜欢数
43
Pub 分数
120

安装插件

flutter pub add quick_print

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Quick Print 是一个功能强大的 Flutter 包,专为在 Android、iOS、macOS、Windows 和 Linux 等多个平台上实现无缝 PDF 打印而设计。它支持多种打印机,包括 ESC/POS、Sunmi、蓝牙、USB 和系统打印机,使开发者能够高效地生成和发送打印任务。该包通过一致的 API 和强大的设备兼容性,简化了跨平台打印。非常适合需要可靠打印功能的零售、POS 和文档管理应用。

适合场景

  • 零售收据打印
  • POS系统集成
  • 文档批量打印
  • 移动应用报告
  • 跨平台打印

主要特点

  • 多平台支持
  • ESC/POS 和蓝牙打印机兼容性
  • PDF生成和打印
  • USB 和系统打印机集成
  • 跨设备打印作业处理

适合对象

  • POS应用开发者
  • 零售软件团队
  • 需要打印的移动应用开发者
  • 文档自动化项目
  • 跨平台打印解决方案

使用建议

  • 需要平台特定的设置
  • 高级功能的文档有限
  • 蓝牙配对可能需要用户干预
  • 目标操作系统上的打印机驱动程序可用性
  • 建议在多个设备上进行测试

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

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 { }

所属分类

依赖

依赖清单 10 项

源码仓库

使用此插件的项目

暂无相关数据。