Bom dia!
kakamachado escreveu: uso a Minigui e preciso imprimir numa impressora Bematech não fiscal
Antigamente, na época de impressoras de agulhas, se programava em função das impressoras, enviando Chr(15), Chr(18), etc.... para imprimir em Negrito, Itálico, SubEscrito, Condensado, etc.....
Hoje não vejo a necessidade disso uma vez que as impressoras imprimem o que está no arquivo/tela.
Uma impressora térmica fiscal ou não, é a mesma coisa que uma impressora jato de tinta/laser normal com a diferença ficando apenas na quantidade de colunas para o papel usado.
Se você conectar uma impressora fiscal no PC e fizer um texto no Word ele vai imprimir normalmente nessa impressorinha, apenas tem que cuidar até onde irão escrita as frases no Word( até qual coluna a impressora aceita na mesma linha).
Se optar em programar enviando códigos específicos para a impressora, talvez uma nova impressora não aceite esses códigos e terá que ficar reinventando a roda a cada impressora utilizada.
No meu caso, eu crio os recibos e notas em PDF pelo meu app em Harbour, gravando em disco e em seguida mandando imprimir com outro aplicativo com um comando enviado pelo meu app Harbour.
A maioria dos visualizadores de PDF aceitam imprimir diretamente por linha de comando, abrindo um PDF e imprimindo na impressora selecionado, o Foxit Reader, o Sumatra e até mesmo o Adobe aceitam esses comandos. E você nem precisa instalar o esse visualizador no PC do cliente, basta apenas copiar o executável e deixar na pasta do seu app ou em outra que quiser, utilizando ele apenas pelo app.
Exemplo de linha de comando utilizando o Sumatrapdf.exe
Código: Selecionar todos
IMPRESSORA="Nome exato da sua impressora aqui como esta no Windows"
TEMPORARIO="C:\CLIENTE_TAL"
NET7="Arq_10"
BB = "START &TEMPORARIO"+"sumatrapdf.exe -print-to "+CHR(34)+IMPRESSORA+CHR(34)+" &NET7"+".PDF"
HB_RUN( BB )
ALERT("Documento enviado para a impressora;"+ IMPRESSORA)
// Na janela do CMD, você pode fazer o teste direto, apenas coloque o nome da sua impressora entra as aspas.
// sumatrapdf.exe -print-to "Brother DCP-B753DW series Printer" Recibo.pdf
// ATENCAO:
// HB_Run com o START, executa o programa em segundo plano, a parte, e não pausa a execução do app principal que fez a chamda.
// HB_Run sem o START, aguarda o término da execução para voltar ao app principal que fez a chamada.
Caso quiser um recibo bem simples, apenas com letras e números, você pode salvar em um arquivo TXT e mandar imprimir direto do App Harbour, sem precisar usar PDF.
Exemplo de código
(Pode mudar os parâmetros de SetFont)
Código: Selecionar todos
// IMPRIME UM ARQUIVO TEXTO EM QUALQUER IMPRESSORA NO MODO TEXTO NORMAL
// Chamar assim:
// PrintWinPrn("Recibo.txt", IMPRESSORA)
// ou
// PrintWinPrn( cArq , IMPRESSORA)
Function PrintWinPrn( cArq, cPrint )
Local oPrn, aPrn := GetPrinters(), n := 0
oPrn := Win_Prn():New(cPrint)
oPrn :Copies := 1
oPrn :CharSet(155)
oPrn :SetFont( "Lucida Console", 8, { 3, -50 } )
*oPrn:SetFont('courier new',17,{1,17}, 0,.F.,.F.)
If !oPrn:Create()
Alert("Nao foi criado o documento de Impressao")
Return nil
EndIf
If !oPrn:StartDoc("Imprimindo Documento")
Alert("Erro na Impressora")
Return nil
EndIf
*HB_CDPSelect("PT850")
HB_SETCODEPAGE( "PT850" )
SetPrc(0,0)
cText := MemoRead( cArq )
nLinh := MlCount( cText )
For n := 1 to nLinh
*oPrn:TextOut(HB_AnsiToOem(CHR(27) + CHR(33) + CHR(1)+MemoLine(cText,,n)),.t.)
oPrn:TextOut(HB_AnsiToOem(MemoLine(cText,,n)),.t.)
Next
oPrn:EndDoc()
*HB_CDPSelect( "PTISO")
Return .t.
Não esqueça que é muito importante configurar a impressora nas configurações do Windows, caso contrário irá mandar imprimir um frase e o Windows ira dar um avanço gigante no papel.
-------------------------------------------------------------
Passei essas coordenadas para um amigo, talvez lhe ajude se tiver dificuldades em configurar a sua:
-------------------------------------------------------------
Clicar no Menu Iniciar
Ir em Dispósitivos e Impressoras
Localizar a impressora 'Sua impressora escolhida'
COM BOTAO DIREITO NA 'Sua impressora escolhida' vá em:
PROPRIEDADES DA IMPRESSORA->PORTAS->ESCOLHER USB001 ou USB002 e ENTER
NOVAMENTE COM BOTAO DIREITO NA 'Sua impressora escolhida' vá em:
PROPRIEDADES DA IMPRESSORA->GERAL->PREFERENCIAS->PAPEL/QUALIDADE->AVANCADO->TAMANHO DO PAPEL-> Escolher 210mm e de OK ate´sair.
-------------------------------------------------------------