network_printer_plugin 0.0.1 copy "network_printer_plugin: ^0.0.1" to clipboard
network_printer_plugin: ^0.0.1 copied to clipboard

Plugin for communicate with network thermal printer

network_printer_plugin #

Plugin Flutter untuk mencetak ke printer jaringan (network printer) seperti thermal printer via TCP/IP.

Fitur #

  • 🖨️ Koneksi ke printer jaringan via TCP/IP
  • 📝 Mengirim data ESC/POS ke printer
  • 🔌 Manajemen koneksi (connect, write, disconnect)
  • ⚡ Simple dan mudah digunakan

Instalasi #

Tambahkan dependensi ke file pubspec.yaml:

dependencies:
  network_printer_plugin: ^0.0.1
  esc_pos_utils: ^1.1.0  # Untuk generate ESC/POS commands

Kemudian jalankan:

flutter pub get

Penggunaan #

Import Package #

import 'package:network_printer_plugin/network_printer_plugin.dart';
import 'package:esc_pos_utils/esc_pos_utils.dart';

Contoh Dasar #

// 1. Buat instance NetworkPrinter
var printer = NetworkPrinter();

// 2. Koneksi ke printer (gunakan IP address dan port printer Anda)
await printer.connect("192.168.0.101", 9100);

// 3. Kirim data ke printer
await printer.write(bytes);

// 4. Tutup koneksi
await printer.disconnect();

Contoh Lengkap #

Berikut contoh lengkap untuk mencetak berbagai format text dan barcode:

import 'package:esc_pos_utils/esc_pos_utils.dart';
import 'package:flutter/material.dart';
import 'package:network_printer_plugin/network_printer_plugin.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Network Printer Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // Load capability profile untuk printer
              final profile = await CapabilityProfile.load();
              
              // Buat generator untuk paper size 80mm
              var generator = Generator(PaperSize.mm80, profile);
              List<int> bytes = [];

              // Print text biasa
              bytes += generator.text('Regular text: Hello World!');
              
              // Print text dengan karakter spesial
              bytes += generator.text('Special chars: àÀ èÈ éÉ ûÛ',
                  styles: PosStyles(codeTable: 'CP1252'));

              // Print text dengan style
              bytes += generator.text('Bold text', 
                  styles: PosStyles(bold: true));
              bytes += generator.text('Reverse text', 
                  styles: PosStyles(reverse: true));
              bytes += generator.text('Underlined text',
                  styles: PosStyles(underline: true), linesAfter: 1);

              // Print text dengan alignment
              bytes += generator.text('Align left', 
                  styles: PosStyles(align: PosAlign.left));
              bytes += generator.text('Align center', 
                  styles: PosStyles(align: PosAlign.center));
              bytes += generator.text('Align right',
                  styles: PosStyles(align: PosAlign.right), linesAfter: 1);

              // Print dalam kolom
              bytes += generator.row([
                PosColumn(
                  text: 'Item',
                  width: 6,
                  styles: PosStyles(align: PosAlign.left),
                ),
                PosColumn(
                  text: 'Qty',
                  width: 3,
                  styles: PosStyles(align: PosAlign.center),
                ),
                PosColumn(
                  text: 'Price',
                  width: 3,
                  styles: PosStyles(align: PosAlign.right),
                ),
              ]);

              // Print text dengan ukuran besar
              bytes += generator.text('LARGE TEXT',
                  styles: PosStyles(
                    height: PosTextSize.size2,
                    width: PosTextSize.size2,
                  ));

              // Print barcode
              final List<int> barData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 4];
              bytes += generator.barcode(Barcode.upcA(barData));

              // Feed paper dan cut
              bytes += generator.feed(2);
              bytes += generator.cut();

              // Kirim ke printer
              var printer = NetworkPrinter();
              try {
                await printer.connect("192.168.0.101", 9100);
                await printer.write(bytes);
                await printer.disconnect();
                print('Print berhasil!');
              } catch (e) {
                print('Print gagal: $e');
              }
            },
            child: const Text('Test Print'),
          ),
        ),
      ),
    );
  }
}

API Reference #

NetworkPrinter Class #

Methods

connect(String host, int port)

Membuat koneksi ke printer jaringan.

Parameters:

  • host (String): IP address printer (contoh: "192.168.0.101")
  • port (int): Port printer (umumnya 9100 untuk thermal printer)

Returns: Future<void>

Throws: Exception jika koneksi gagal

Example:

await printer.connect("192.168.0.101", 9100);
write(List<int> data)

Mengirim data byte ke printer.

Parameters:

  • data (List

Returns: Future<void>

Throws: Exception jika pengiriman data gagal

Example:

await printer.write(bytes);
disconnect()

Menutup koneksi ke printer.

Returns: Future<void>

Throws: Exception jika pemutusan koneksi gagal

Example:

await printer.disconnect();

Tips & Troubleshooting #

Menemukan IP Address Printer #

  1. Print configuration page dari printer Anda
  2. Atau gunakan network scanner tools
  3. Pastikan perangkat Anda dan printer dalam satu jaringan

Port yang Umum Digunakan #

  • 9100: Port standar untuk RAW printing (paling umum)
  • 9101, 9102: Port alternatif pada beberapa printer

Error Handling #

Selalu gunakan try-catch untuk menangani error:

try {
  var printer = NetworkPrinter();
  await printer.connect("192.168.0.101", 9100);
  await printer.write(bytes);
  await printer.disconnect();
} catch (e) {
  print('Error: $e');
  // Handle error sesuai kebutuhan
}

Timeout Connection #

Koneksi memiliki timeout 5 detik. Jika printer tidak merespons dalam waktu tersebut, koneksi akan gagal.

Kompatibilitas #

Plugin ini mendukung printer yang support ESC/POS commands, termasuk:

  • Thermal receipt printers
  • POS printers
  • Network-enabled printers dengan protokol TCP/IP

Lisensi #

Lihat file LICENSE untuk informasi lebih lanjut.

Kontribusi #

Kontribusi sangat diterima! Silakan buat issue atau pull request di repository ini.

0
likes
130
points
117
downloads

Publisher

unverified uploader

Weekly Downloads

Plugin for communicate with network thermal printer

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on network_printer_plugin

Packages that implement network_printer_plugin