dir.by  
Программирование, разработка, тестирование
UWP (Universal Windows Platform) приложение на C# для Windows
Пишем программу на UWP C# которая печатает текст и картинку на чековом EPSON принтере
  Посмотрели 1033 раз(а)    
 Пишем программу на UWP C# которая печатает текст и картинку на чековом EPSON принтере 
последнее обновление: 12 октября 2025
На заметку 1 У вас должна быть установлен драйвер для принтера. Если у вас нет то нужно скачать и установить драйвер для EPSON принтера ...

На заметку 2 У вас должна быть установлена EPSON OPOS ADK. Если у вас ее нет то нужно скачать и установить EPSON OPOS ADK ...

На заметку 3 У вас должна быть добавлен чековый EPSON принтер в программу EPSON OPOS ADK. Если у вас не добавлен вот так нужно добавить чековый EPSON принтер в программу EPSON OPOS ADK ...
 
Скачать пример:
AppUWP1_PosPrinterImage.zip ...
размер: 23 kb
Шаг 1. Создаем новое C# UWP приложение
Шаг 2. В проекте добавим доступ к Point of Service (это доступ к устройствам)
Шаг 3. Добавил новый файл HelperPosPrinter.cs мои полезные функции для поиска принтера и печати картинки
  C#  
using System;
using System.Linq;
using System.Threading.Tasks;

using Windows.Devices.Enumeration;
using Windows.Devices.PointOfService;
using Windows.Graphics.Imaging;
using Windows.Storage.Streams;
using Windows.Storage;

namespace AppUWP1
{
     public class HelperPosPrinter
     {
          public static async Task<BitmapFrame> ConvertFileToBitmap(StorageFolder storageFolder, string filename)
          {
               try
               {
                    StorageFile file = await storageFolder.GetFileAsync(filename);
                    using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read))
                    {
                         BitmapDecoder bitmapDecoder = await BitmapDecoder.CreateAsync(stream);
                         return await bitmapDecoder.GetFrameAsync(0);
                    }
               }
               catch (Exception ex)
               {
               }
               return null;
          }

          public static async Task<Windows.Devices.PointOfService.PosPrinter> FindPosPrinterAsync()
          {
               try
               {
                    string posAsql = Windows.Devices.PointOfService.PosPrinter.GetDeviceSelector();
                    DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(posAsql);

                    int count = deviceCollection.Count();
                    foreach (var item in deviceCollection)
                    {
                         var printer = await Windows.Devices.PointOfService.PosPrinter.FromIdAsync(item.Id);
                         if (printer != null)
                              return printer;
                    }
               }
               catch (Exception)
               {
               }
               return null;
          }

          public static async Task<ReceiptPrintJob> PreparePrinter(ClaimedPosPrinter claimedPrinter)
          {
               await claimedPrinter.EnableAsync();

               claimedPrinter.Receipt.CharactersPerLine = 56;
               claimedPrinter.Receipt.LineSpacing = 20;
               claimedPrinter.Receipt.IsLetterQuality = true;

               return claimedPrinter.Receipt.CreateJob();
          }

          public static void PrintImage(ReceiptPrintJob job, BitmapFrame bitmapFrame, PosPrinterAlignment align, uint maxWidth)
          {
               try
               {
                    job.PrintBitmap(bitmapFrame, align);
               }
               catch (Exception ex)
               {
               }
          }

          public static void PrintText(ReceiptPrintJob job, string textToPrint)
          {
               job.Print(textToPrint);
          }

          public static async Task<bool> FinishPrint(ReceiptPrintJob job, ClaimedPosPrinter claimedPrinter)
          {
               try
               {
                    bool result = await job.ExecuteAsync();
                    claimedPrinter.Dispose();
                    return result;
               }
               catch (Exception e)
               {
               }
               return false;
          }

     }
}
Шаг 4. В файл MainPage.xaml напишем код чтобы печатать текст и картинку на чековом принтере
  C#  
using System;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.Devices.PointOfService;


namespace AppUWP1
{
     public sealed partial class MainPage : Page
     {
          public MainPage()
          {
               this.InitializeComponent();
               this.Loaded += MainPage_Loaded;
          }

          private void MainPage_Loaded(object sender, RoutedEventArgs e)
          {
               Task.Run(async () =>
               {
                    // load bitmap
                    var bitmap = await HelperPosPrinter.ConvertFileToBitmap(Windows.Storage.ApplicationData.Current.LocalFolder, "my_for_pos_printer.jpg");

                    // find printer
                    Windows.Devices.PointOfService.PosPrinter posPrinter = await HelperPosPrinter.FindPosPrinterAsync();
                    ClaimedPosPrinter claimedPrinter = await posPrinter.ClaimPrinterAsync();
                    ReceiptPrintJob job = await HelperPosPrinter.PreparePrinter(claimedPrinter);

                    // print image
                    uint maxWidth = claimedPrinter.Receipt.LineWidth;
                    HelperPosPrinter.PrintImage(job, bitmap, PosPrinterAlignment.Center, maxWidth);

                    // print text
                    StringBuilder bodyToPrint = new StringBuilder();
                    bodyToPrint.AppendLine("Hello");
                    bodyToPrint.AppendLine("Thank you");
                    HelperPosPrinter.PrintText(job, bodyToPrint.ToString());

                    // finish
                    bool result = await HelperPosPrinter.FinishPrint(job, claimedPrinter);
               });
          }

     }
}
 
На заметку 1

Картинку my_for_pos_printer.jpg ... нужно положить в папку Windows.Storage.ApplicationData.Current.LocalFolder
у меня это папка:
C:\Users\evgen\AppData\Local\Packages\77843154-c68b-4049-8c8f-ef5b18a64f73_92754ewph3nsr\LocalState\

На заметку 2
Чтобы картинка распечаталась на принтере должна ширина картинки меньше ширины бумаги принтера.
Ширина моей картинки = 370 пикселей
На моем EPSON принтере ширина бумаги = 570 пикселей (параметр claimedPrinter.Receipt.LineWidth)
 
Запускаем программу
Картинка напечаталась
 
← Предыдущая тема
Пишем программу на UWP C# которая печатает текст на чековом EPSON принтере (чтобы найти чековый принтер использую C# код PointOfService.PosPrinter.GetDeviceSelector ... )
 
Следующая тема →
Пишем программу на UWP C# которая печатает картинку любого размера на чековом EPSON POS принтере(во время выполнения изменяем ширину картинки = ширина бумаги)
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
  Объявления  
  Объявления  
 
Скачиваем и устанавливаем Microsoft Visual Studio для написания UWP приложений на компьютере с системой Windows
Открываем Visual Studio (для написания проекта UWP)
Создаем новое C# UWP приложение на компьютере Windows
Web API запросы
Пишем программу на UWP C# которая отправляет Web API GET запрос на локальный сервер
Чековый принтер (пишем C# программу для печати)
Скачиваем и устанавливаем библиотеку EPSON OPOS ADK (эта библиотека нужна чтобы печатать на Epson принтере используя C# код) | У меня чековый принтер EPSON TM-T20X
Добавляем чековый EPSON принтер в программу EPSON OPOS ADK
Пишем программу на UWP C# которая печатает текст на чековом EPSON принтере (чтобы найти чековый принтер использую C# код PointOfService.PosPrinter.GetDeviceSelector ... )
Пишем программу на UWP C# которая печатает текст и картинку на чековом EPSON принтере
Пишем программу на UWP C# которая печатает картинку любого размера на чековом EPSON POS принтере(во время выполнения изменяем ширину картинки = ширина бумаги)
Пишем программу на UWP C# которая печатает qr code на чековом EPSON принтере

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика