private static void PrintImage(string address, int port) { Connection connection = new TcpConnection(address, port); try { connection.Open(); ZebraPrinter printer = ZebraPrinterFactory.GetInstance(PrinterLanguage.ZPL, connection); int x = 0; int y = 0; printer.PrintImage("data/mooncake.png", x, y); } catch (ConnectionException e) { Console.WriteLine(e.ToString()); } catch (ZebraPrinterLanguageUnknownException e) { Console.WriteLine(e.ToString()); } catch (IOException e) { Console.WriteLine(e.ToString()); } finally { connection.Close(); } }
private async void PrintButton_Clicked(object sender, EventArgs eventArgs) { SetInputEnabled(false); Connection connection = null; try { await Task.Factory.StartNew(() => { connection = CreateConnection(); connection.Open(); ZebraPrinter printer = ZebraPrinterFactory.GetInstance(connection); if (printer.PrinterControlLanguage == PrinterLanguage.LINE_PRINT) { throw new ConnectionException("Operation cannot be performed with a printer set to line print mode"); } string signaturePath = Path.Combine(LocalApplicationDataFolderPath, "signature.jpeg"); double printWidth = double.Parse(SGD.GET("ezpl.print_width", connection)); if (File.Exists(signaturePath)) { File.Delete(signaturePath); } using (Stream stream = SignaturePad.GetImageStream(printWidth)) { using (BinaryReader br = new BinaryReader(stream)) { br.BaseStream.Position = 0; byte[] signatureBytes = br.ReadBytes((int)stream.Length); File.WriteAllBytes(signaturePath, signatureBytes); } } ZebraImageI image = ZebraImageFactory.Current.GetImage(signaturePath); printer.PrintImage(image, 0, 0, image.Width, image.Height, false); }); } catch (Exception e) { await DisplayAlert("Error", e.Message, "OK"); } finally { try { connection?.Close(); } catch (ConnectionException) { } SetInputEnabled(true); } }