Я работаю с термопринтером Bluetooth и могу печатать обычный текст и счета-фактуры. Но я не могу печатать штрих-коды.
Я генерирую штрих-код с библиотекой ZXING
OutputStream os = mBluetoothSocket.getOutputStream();
String text = mEditText.getText().toString();
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
BitMatrix bitMatrix = multiFormatWriter.encode(text,BarcodeFormat.CODE_128,200,200);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
os.write("Hello".getBytes()); //Prints Hello
Как я могу распечатать растровое изображение, используя ту же логику?
Я пробовал некоторые коды, такие как
int size = bitmap.getRowBytes() * bitmap.getHeight();
ByteBuffer byteBuffer = ByteBuffer.allocate(size);
bitmap.copyPixelsToBuffer(byteBuffer);
byte[] byteArray = byteBuffer.array();
os.write(byteArray);
Но это дает пустой отпечаток, и рулон продолжает катиться
Я использую принтер Godex-MX30.
У поставщика нет поддержки разработчика для приложения Android, также этот принтер может печатать штрих-код с использованием сторонних приложений из магазина игр: play.google.com/store/apps/…
Вам нужно сообщить принтеру, что вы отправляете изображение на печать, и указать, как его распечатать.
Обычно это делается с помощью кодов ESC/POS. Большинство подобных принтеров используют коды ESC/POS.
ESC * - это то, как это указано. Вы можете посмотреть множество примеров в этом вопросе Java-код или в этом свое решение.
Для получения дополнительной информации см. Seiko Epson ссылка.
Не уверен насчет этого принтера, но многие термопринтеры чеков поддерживают создание и печать штрих-кодов с использованием кода Esc/Pos. Вы можете попробовать что-то вроде это.
Спросите производителя принтера.