Página 1 de 1

Win_PrintFileRaw() com Impressora Samsung

Enviado: 25 Abr 2015 20:53
por eciodias
Estou procurando soluções de impressões.....
Li em uma que o Pablo César postou.....

" Com PrintFileRaw não é garantido a impressão em TODAS as impressoras.

Em alguns modelos de impressoras como: Canon, Samsung, Lexmark, Zebra e outras impressoras especializadas que apenas utilizam drives específicos como para impressão de fotografias, não utilizam o padrão RAW. Daí o Win_PrintFileRaw não funcionará, por isso é recomendado avaliar o retorno da função se retornar -1 é porque a impressora não suporta este padrão para o spooler do WIndows."

Alguém pode me dar uma dica sobre, impressoras Samsung...., pois realmente não esta funcionando com o comando Win_PrintFileRaw(), fui em propriedades da impressora, Avançado e processador de Impressão, testei os modos disponíveis...... NADA.

Não sei se é agravante...., mas a impressora é Wifi.

Obrigado.

Win_PrintFileRaw() com Impressora Samsung

Enviado: 25 Abr 2015 21:54
por Eolo
não utilizam o padrão RAW
Eu nunca usei essa função, talvez vá falar besteira, mas vamos lá.

Por que a função tem o nome RAW (que quer dizer "cru""em inglês)? Deve ser algo cru, pensei, como imprimir caracteres ASCII, sem nenhuma formatação ou o que seja, contrário da impressão de uma foto em pixels ou do uso de negrito, itálico ou de alguma fonte OpenType...

Pensando nisso, consegui do mestre Google o seguinte: "Raw printing is sending a string of commands to a printer directly in its native language" (raw printing é mandar diretamente para a impressora um string de comandos na sua linguagem própria).

Opa, então não existe um "padrão RAW"? Cada impressora tem sua própria linguagem nativa?

Se isso é verdade e você cria um arquivo com comandos que a impressora não reconhece como nativos e manda pra ela, mesmo usando a PrintFileRaw(), é de se esperar que nada aconteça. A printer não vai saber o que fazer os comandos...

Eu tenho a impressão que se assume, como verdade, que a PrintRawFile() imprime qualquer coisa, mas parece que não é bem assim. A confirmar.

Uma das fontes:
https://www.printnode.com/docs/what-is-raw-printing/

Win_PrintFileRaw() com Impressora Samsung

Enviado: 25 Abr 2015 22:03
por Toledo
eciodias escreveu:pois realmente não esta funcionando com o comando Win_PrintFileRaw()
Amigo, veja esta mensagem:
https://pctoledo.org/forum/viewto ... 734#p95944

Abraços,

Win_PrintFileRaw() para PrintWinPrn()

Enviado: 26 Abr 2015 17:09
por eciodias
Eu passei a usar a então função PrintWinPrn(cArq,cPrint)

Começou com problemas no FORM_A4, procurei a achei a seguinte solução:
1 #include "hbwin.ch"
2 //Trocar FORM_A4 por WIN_DMPAPER_A4
3 oPrn : FormType := WIN_DMPAPER_A4 //FORM_A4

Só que quando uso o HBMK2, vem a seguinte linha de erro:
IMPRIM.PRG(9) Error F0029 Can´t open #include file ´hbwin.ch´

Poderiam me ajudar, por favor?
Obrigado.

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 19:19
por Toledo
Amigo, verifique se na sua pasta do Harbour tem uma sub-pasta chamada \CONTRIB\HBWIN, dentro dela tem o arquivo hbwin.ch, então copie este arquivo para a pasta \INCLUDE do seu Harbour.

Abraços,

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 20:08
por eciodias
Ok, pensei a que a mensagem de erro na linha...

oPrn : FormType := Win_DmPaper_A4 // FORM_A4

Era a falta do #include "hbwin.ch", não era!

Error BASE/1003 Variable does not. exist: WIN_DMPAPER_A4

Por favor, onde estou errando?

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 20:23
por Jairo Maia
Olá Écio,

Quando se usa arquivos CH, é case sensitive, ou seja, se no CH está tudo maiúsculo, em seu PRG também tem que ser maiúsculo. Deve ser EXATAMENTE e não Exatamente igual para que tenha efeito de substituição pelo compilador.

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 21:48
por eciodias
Desculpe amigo Jairo, não entendi ?

Copiei o hbwin.ch para a pasta \include e no programa esta: #include "hbwin.ch", então não entendi sua colocação, me esclareça por favor.

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 23:26
por Toledo
eciodias escreveu:não entendi sua colocação, me esclareça por favor.
O que o Jairo quis dizer é que as constantes criadas pela diretiva #define dentro de um arquivo CH é case sensitive, isto quer dizer, se no arquivo CH está WIN_DMPAPER_A4 (todas as letras MAIÚSCULAS), então no seu PRG você não pode usar Win_DmPaper_A4 (letras minúsculas e MAIÚSCULAS juntas).

Então no seu PRG, troque Win_DmPaper_A4 por WIN_DMPAPER_A4.

Abraços,

Win_PrintFileRaw() com Impressora Samsung

Enviado: 26 Abr 2015 23:45
por eciodias
Ok....

Muito obrigado, entendi.

Agora procuro alguma referencia para mudar a pagina.... (continuação, folha 2).

Explico...., meu relatório contem 3 paginas, no Clipper, usando deskjet ou Laser, no final do contador de linhas, eu utilizava EJECT, e a impressão começava com o contador zerado e as primeiras linhas o cabeçalho.

Como faço no Harbour?. meu relatório só imprime a primeira folha.... e a impressora informa que foi tudo impresso.

Obrigado.

Win_PrintFileRaw() com Impressora Samsung

Enviado: 27 Abr 2015 07:35
por Toledo
eciodias escreveu:meu relatório só imprime a primeira folha....
Faça a seguinte alteração na função PrintWinPrn():

Procure por:

Código: Selecionar todos

  For n := 1 to nLinh
     oPrn:Textout(WIN_ansitooem(memoline(cText,,n)),.t.)
  Next
e troque por:

Código: Selecionar todos

  For n := 1 to nLinh
     cLinTxt:=memoline(cText,,n)
     n_pag=AT(CHR(12)+CHR(13),cLinTxt)
     If n_pag>0
        cLinTxt:=LEFT(cLinTxt,n_pag-1)
     Endif
     oPrn:Textout(WIN_ansitooem(cLinTxt),.t.)
     If n_pag>0
        oPrn:NewPage()
     Endif
  Next
Obs.: não testei este código, mas se não errei nada, acho que vai funcionar.

Abraços,

Win_PrintFileRaw() com Impressora Samsung

Enviado: 27 Abr 2015 10:15
por eciodias
Fino do fino, certinho.

Muito agradecido.

Agora, que fechei totalmente o sistema que era em clipper 5.x, Agora em Harbour Modo Console, partirei para o modo gráfico, para um aprendiz..... pode alguém me orientar, como devo iniciar esta nova empreitada?

Tipo construção de telas, para aproveitar totalmente o que já foi feito em modo console.

Mais uma vez, muito obrigado.

Abraços