Olá pessoal,
sei que esta thread é antiga, mas estou desenvolvendo a impressão com a Bematech 4200TH do CF-e agora e estou com o mesmo problema no app De Olho na Nota : Erro: Assinatura do QRCode inválida.
Esse erro ocorre apenas na Bematech. Geramos impressão também na Epson, Daruma e spooler e em todas essas outras funciona.
Engraçado que todos os QRCodes são impressos um pouco diferente em cada impressora, mas apenas na Bematech está dando esse erro. Já tentei contato com a Bematech, peguei o manual do QRCode, mas não conseguiram me ajudar.
Vocês sabem o que pode ser feito para corrigir este problema?
Minha aplicação é em Java e o código para geração do QRCode é o seguinte (escrito com base no QRCode.docx da Bematech, funciona 100% para NFC-e):
public byte[] getQrCodeBytes(String qrCodeString) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
//Centralizar
stream.write(new byte[] {0X1b, 0X61, 0X01});
//Iniciar QRCode
stream.write(new byte[] {0x1D, 0x6B, 0x51});
// Correction Level, Module Size, Version QRCode, Encoding Modes
stream.write(new byte[] { 0x00, 0x06, 0x08, 0x01 });
byte[] qrCodeStringBytes = qrCodeString.getBytes();
int restoDivisao = qrCodeStringBytes.length;
int divisao = 0;
if(qrCodeStringBytes.length > 255){
restoDivisao = qrCodeStringBytes.length % 255;
divisao = qrCodeStringBytes.length / 255;
}
stream.write(new byte[]{(byte) restoDivisao, (byte)divisao});
stream.write(qrCodeStringBytes);
return stream.toByteArray();
}