esc_pos_printer

该库允许使用 ESC/POS 热敏 WiFi/以太网打印机打印收据。对于蓝牙打印机,请使用 esc_pos_bluetooth 库。

可用于 Flutter 或纯 Dart 项目。对于 Flutter 项目,同时支持 Android 和 iOS。

要扫描网络中的打印机,请考虑使用 ping_discover_network 包。请注意,大多数 ESC/POS 打印机默认在端口 9100 上监听。

待办事项 (欢迎提交 PR!)

  • 使用 GS ( k 命令打印二维码(已支持从图像打印二维码)
  • 使用 GS ( k 命令打印 PDF-417 条形码
  • 使用 ESC 3 <n> 命令设置行间距

如何提供帮助

  • 测试您的打印机并将其添加到表中:Wi-Fi/网络打印机蓝牙打印机
  • 测试并报告错误
  • 分享您关于可以改进之处的想法(代码优化、新功能……)
  • 欢迎提交PR!

已测试打印机

以下是一些 使用此库测试过的打印机。请添加您测试过的型号以维护和改进此库,并帮助其他人选择正确的打印机。

生成小票

带样式的简单小票

Ticket testTicket() {
  final Ticket ticket = Ticket(PaperSize.mm80);

  ticket.text(
      'Regular: aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ');
  ticket.text('Special 1: àÀ èÈ éÉ ûÛ üÜ çÇ ôÔ',
      styles: PosStyles(codeTable: PosCodeTable.westEur));
  ticket.text('Special 2: blåbærgrød',
      styles: PosStyles(codeTable: PosCodeTable.westEur));

  ticket.text('Bold text', styles: PosStyles(bold: true));
  ticket.text('Reverse text', styles: PosStyles(reverse: true));
  ticket.text('Underlined text',
      styles: PosStyles(underline: true), linesAfter: 1);
  ticket.text('Align left', styles: PosStyles(align: PosAlign.left));
  ticket.text('Align center', styles: PosStyles(align: PosAlign.center));
  ticket.text('Align right',
      styles: PosStyles(align: PosAlign.right), linesAfter: 1);

  ticket.text('Text size 200%',
      styles: PosStyles(
        height: PosTextSize.size2,
        width: PosTextSize.size2,
      ));

  ticket.feed(2);
  ticket.cut();
  return ticket;
}

您可以在此处找到更多示例:esc_pos_utils

打印小票

import 'package:esc_pos_printer/esc_pos_printer.dart';

final PrinterNetworkManager printerManager = PrinterNetworkManager();
printerManager.selectPrinter('192.168.0.123', port: 9100);
final PosPrintResult res = await printerManager.printTicket(testTicket());

print('Print result: ${res.msg}');

有关完整示例,请查看 example/example.dartexample/discover_printers

测试打印

receipt2

receipt

GitHub

https://github.com/andrey-ushakov/esc_pos_printer