Win_PrintFileRaw() com Impressora Samsung

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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/
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() para PrintWinPrn()

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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?
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
eciodias
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 26 Set 2012 10:21
Localização: Belo Horizonte/MG

Win_PrintFileRaw() com Impressora Samsung

Mensagem 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
Responder