iniciando uso printfileraw()
Moderador: Moderadores
iniciando uso printfileraw()
ola, gostaria de começar a usar o comando printfileraw para imprimir pelo meu sistema via harbour (modo console). So que percebi que ele nao entende os comandos chr padrao epson. alguem sabe como poderia usar o printfileraw() mudando tamanho de fonte etc....
utilizo atualmente chr(18) chr(15) entre outros.
Grato,
ABEL
utilizo atualmente chr(18) chr(15) entre outros.
Grato,
ABEL
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
iniciando uso printfileraw()
Olá Abel,
Você deve estar fazendo algo errado. Usando o PrintFileRaw() você pode enviar a impressora todos os comandos ESC/POS que ela entende, inclusive corte de papel e abertura de gaveta.
Você deve estar fazendo algo errado. Usando o PrintFileRaw() você pode enviar a impressora todos os comandos ESC/POS que ela entende, inclusive corte de papel e abertura de gaveta.
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)
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)
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
iniciando uso printfileraw()
Ola, veja se te ajuda:
abs,
Código: Selecionar todos
FUNCTION PrintDosForWin()
LOCAL cTexto := ""
LOCAL ON_GRANDE := CHR(27) + CHR(33) + CHR(16) // Para Impressoras Epson
LOCAL OFF_GRANDE := CHR(27) + CHR(33) + CHR(01) // Para Impressoras Epson
// Seleciona a Impressora do Windows
LOCAL cPrinter := GetDefaultPrinter()
LOCAL CRLF := CHR(13) + CHR(10)
LOCAL cFileName := "TEXTO.PRN"
cTexto += "Esta e a primeira linha do texto" + CRLF
cTexto += Replicate( "*-", 20 ) + CRLF
cTexto += ON_GRANDE + "LETRAS GRANDES" + OFF_GRANDE + CRLF
cTexto += "Esta e outra linha de texto..." + CRLF
cTexto += PADL( "Esquerda ", 40 ) + CRLF
cTexto += PADC( "CENTRALIZADO", 40 ) + CRLF
cTexto += PADR( "Direita", 40 ) + CRLF
cTexto += PADC( "< Linha Final >", 40, "-" ) + CRLF
IF WriteStream( cFileName, cTexto )
// Envia a Impressao ao Spool do Windows
PrintFileRaw( cPrinter, cFileName, "Impressao Em Formato DOS desde Windows" )
FERASE( cFileName )
ENDIF
RETURN NIL
// Esta Funcion la encontre por ahi...
FUNCTION WriteStream( cFile, cStream )
LOCAL nHandle := FCreate( cFile )
IF FError() <> 0
RETURN( .F. )
ENDIF
FWrite( nHandle, cStream, Len(cStream) )
FClose( nHandle )
RETURN ( FError() == 0 )
// FIM DO PROGRAMA
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
iniciando uso printfileraw()
Quem tem que entender é a impressora, a função PrintFileRaw() só envia o arquivo para a impressora. Então se você estiver enviando os comandos para uma impressora que não é Epson, com certeza os comandos não serão reconhecidos.Abel escreveu:So que percebi que ele nao entende os comandos chr padrao epson.
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
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
iniciando uso printfileraw()
O printfileraw, pode enviar para a impressora, um arquivo TXT ou PCL ( e se a impressora tiver suporte para PS, PS, PDF e etc... )
Veja este exemplo...
Teste.pcl
Você pode pegar este código, salvar em um arquivo PCL e usar o printfileraw para enviar tal p/ a impressora...
Veja o anexo.
Veja este exemplo...
Teste.pcl
Código: Selecionar todos
%-12345X@PJL ENTER LANGUAGE=PCL
E
&u300D
&l26A
&l0O
&l0E
&a0L
&l0C
&l0L
&l1S
&f100y0X
&f0S
&l0E
&a0L
&l0C
&l0L
*p0150y0720X*c767a1bp767b50g2P
*p0152y0723X*c761a1bp761b1P
*p1017y0147X*c2060a3bp675b10g2P
*p+675y0147X*c1bP
*p1080y0300X*c1750a0550b1P
*p2150y0147X*c2060a1bp980b50g2P
*p+980y0147X*c1bP
*p+250y0147X*c1bP
*p2200y0200X*c1960a0870b1P
*p0635y+50y1800X&f9950y2X
*p0665y0147X&f31237y2X
&f1S
&f1x10X
&f101y0X
&f0S
&l0E
&a0L
&l0C
&l0L
&a180P
*p0150y0720X*c767a1bp767b50g2P
*p0152y0723X*c761a1bp761b1P
*p1017y0147X*c2060a3bp675b10g2P
*p+675y0147X*c1bP
*p1080y0300X*c1750a0550b1P
*p2150y0147X*c2060a1bp980b50g2P
*p+980y0147X*c1bP
*p+250y0147X*c1bP
*p2200y0200X*c1960a0870b1P
*p0635y+50y1800X&f9950y2X
*p0665y0147X&f31237y2X
&a0P
&f1S
&f1x10X&l0O&a0L&l0E&l0C&l0L&l1S&f100y2X*p1500y0350X(s1P(s25v0s5b4148TALEXANDRE &l0E&a0L&l0C&l0L&f101y2X*p1500y0350X(251X<wNnnWwwNnNwNWnnNnnWw>(3@E%-12345X
Código: Selecionar todos
function main()
local cFileName := "teste.pcl"
local cPrinterName := "LPT1"
if PrintFileRaw(cPrinterName, cFileName) == 0
? "Falha :("
else
? "Sucesso.."
endif
return nil- Anexos
-
fpr.zip- (1.1 KiB) Baixado 85 vezes
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
iniciando uso printfileraw()
Olá Pessoal,
Apenas para registro:
Se a impressora não for compatível com esse modo, ou ele estiver desabilitado, não irá funcionar. Se a impressora for compatível, o exemplo do colega Kapiaba irá funcionar corretamente.
Apenas para registro:
A rigor, como o próprio nome da função diz, a impressora precisa ser compatível com o modo RAW. Pode ser impressora de qualquer marca e modelos Matricial, Térmica, DeskJet ou Laser. Porém, precisa ter compatibilidade com o modo RAW, ou seja, ela precisa ser capaz de interpretar os comandos ESC/POS.Toledo escreveu:Então se você estiver enviando os comandos para uma impressora que não é Epson
Se a impressora não for compatível com esse modo, ou ele estiver desabilitado, não irá funcionar. Se a impressora for compatível, o exemplo do colega Kapiaba irá funcionar corretamente.
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)
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)
iniciando uso printfileraw()
Normalmente as impressoras utilizam por padrão ( as que suportam RAW... ) PCL, PS..
iniciando uso printfileraw()
Realmente nao deu certo ainda.
fiz um teste simples
chr(27)+'@'
chr(27)+chr(18) teste 80 colunas
chr(27)+chr(15) teste 132 colunas
e nao deu certo, imprimiu tudo letra normal "80 colunas por linha" e a impressora é epson mesmo.
sera que tenho que compilar alguma lib junta ? ou por algum comando no inicio do programa na rotina main() ?
Abel
fiz um teste simples
chr(27)+'@'
chr(27)+chr(18) teste 80 colunas
chr(27)+chr(15) teste 132 colunas
e nao deu certo, imprimiu tudo letra normal "80 colunas por linha" e a impressora é epson mesmo.
sera que tenho que compilar alguma lib junta ? ou por algum comando no inicio do programa na rotina main() ?
Abel
iniciando uso printfileraw()
Ops, a impressora nao é epson.
uma é OKI B410 LASER
a outra é HP PHOTOSMART C4400 SERIES
abraços e agradeco desde ja.
ABEL
uma é OKI B410 LASER
a outra é HP PHOTOSMART C4400 SERIES
abraços e agradeco desde ja.
ABEL
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
iniciando uso printfileraw()
Olá Abel,
Não. Você precisa usar os comandos corretamente. Veja que para comprimir em 17.5 cpp o comando não é precedido por Chr(27):Abel escreveu:sera que tenho que compilar alguma lib junta ?
Código: Selecionar todos
Chr(15) // ativa 17,5 cpp
Chr(18) // desativa 17,5 cpp
Chr(27)+'M'+Chr(15) // ativa 20 cpp
Chr(27)+'P' // desativa 20 cpp
Chr(27)+'M' // ativa elite
Chr(27)+'P' // desativa elite
Chr(27)+'E' // ativa enfatizado
Chr(27)+'F' // desativa enfatizado
Chr(27)+'W'+Chr(1) // ativa expansao
Chr(27)+'W'+Chr(0) // desativa expansao
Chr(27)+'0' // ativa 8 lpp
Chr(27)+'2' // desativa 8 lppAbraç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)
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)


