Página 1 de 1
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 10:45
por porter
ola pessoal, gostaria de saber na rotina abaixo, em qual linha eu informo o tipo de impressao, sei que o comando
oPrinter:SetFont( "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. ), determina o tipo de impressao, mas não sei onde por esse comando
na rotina abaixo no xHarbour.
Código: Selecionar todos
PROCEDURE W32PRN_(arqtxt,nomeimpressora,tipo_de_impressao)
Local cPrinter := ALLTRIM(nomeimpressora)
Local nResult, cMsg:=""
cFileName := "C:\ARQUIVOS\" + arqtxt
SET PRINTER TO
SET DEVICE TO SCREEN
If !File("&cFileName")
Return Nil
Else
nResult := PrintFileRaw( cPrinter, cFileName, "Impressao Pelo Sistema" )
IF nResult = -1
cMsg = "Parametros Invalido, Favor Tentar Novamente"
ELSEIF nResult = -2
cMsg = "Falha na chamada da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -3
cMsg = "Falha ao Iniciar Impressão, Favor Verificar a Impressora"
ELSEIF nResult = -4
cMsg = "Falha ao Iniciar a Primeira Pagina, Favor Verificar a Impressora"
ELSEIF nResult = -5
cMsg = "Falha de Memoria da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -6
cMsg = "Não foi Possivel localizar o arquivo de Impressão, Favor Tentar Novamente"
ENDIF
IF len(alltrim(cMsg)) > 1
Alert(HB_ANSITOOEM(cMsg) )
ENDIF
EndIf
Return Nil
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 10:58
por Jairo Maia
Olá Porter,
Você só pode usar o comando :SetFont( "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. ) quando você usa a classe WIN32PRN (xHarbour). Quando usa o PrintFileRaw(), para imprimir comprimido ou definir tipos de fontes suportados pela impressora você deve inserir os comandos ESC/POS diretamente no arquivo que vai ser enviado a impressora pelo PrintFileRaw().
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 11:02
por Kapiaba
Se entendi...
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
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 11:33
por porter
ola Jairo e Kapiaba, estou gerando o arquivo txt conforme rotina abaixo, onde está o comando QQout( CHR(15) + CHR(27) + "E" ), eu preciso aumentar a quantidade de caracteres por polegada, eu preciso aumentar a largura dos caracteres, se eu colocar chr(18) vai ficar muito largo os caracteres, qual comando eu usaria, obrigado.
Código: Selecionar todos
SET DEVICE TO PRINT
SET PRINT ON
SET PRINTER TO C:\ARQUIVO\TESTE.TXT
QQout( CHR(15) + CHR(27) + "E" )
@ contl,00 SAY CHR(14)+"PEDIDO Nº " + STR(cNCUPOM,6,0)
contl++
@ contl,00 SAY LEFT(DESCRICAO)
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 12:54
por Jairo Maia
Olá Porter,
Se você usar o Chr( 18 ), você desativa a compressão de 17.5 cpp, voltando para o padrão que é 12 cpp.
Para comprimir em 20 cpp use:
Código: Selecionar todos
QQout( "Chr(27)+'M'+Chr(15)" ) // comprime em 20 cpp
QQout( "Chr(27)+'P'" ) // desativa 20 cpp (volta ao padrão de 12 cpp)
Editado:
Os comandos acima funcionam somente para Matriciais ou Térmicas. Se for DeskJet ou Lazer, use:
Código: Selecionar todos
QQout( "CHR(27)+'(s16.67H'" ) // comprime em 20 cpp
QQout( "CHR(27)+'(s10H'" ) // desativa 20 cpp (volta ao padrão de 12 cpp)
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 14:23
por porter
olá Jairo, estou usando esse comando:
QQout( CHR(15) + CHR(27) + "E" ) )
Você me passou esse:
QQout( "Chr(27)+'M'+Chr(15)" ) // comprime em 20 cpp
Tentei imprimir em uma impressora termica Bematech não fiscal MP-2500, usando o comando que você sugeriu, e o resultado foi iqual ao comando que eu já usava, aparentemente os dois comandos são iguais, a minha duvida é, para imprimir caracteres com largura maior onde está chr(15) mudar para outro, qual seria,
se eu quiser ao inves de 20 cpp, imprimir 10 cpp.
obrigado.
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 16:15
por porter
ola, imprimir a 12 cpp, a letra fica muito grande, imprimir a 20 cpp a letra fica muito pequena, tem como imprimir a 14 cpp ou a 15 cpp ?
duvida de em qual linha por tipo de impressão.
Enviado: 24 Fev 2016 16:42
por Jairo Maia
Olá Porter,
Tente encontrar na internet o manual ESC/BEMA. A bematech tem uma configuração própria, embora afirme que é compatível com ESC/POS (e é, apenas nunca usei nada além 12 cpp ou 17.5 cpp). Tente encontrar um manual ESC/BEMA. Veja se tem alguma configuração para 15 ccp por exemplo. Se encontrar, talvez (acho que com certeza), no manual estará como EXADECIMAL, mas é fácil traduzir para o Harbour, então poste se houver dúvida.
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 09:36
por porter
ola Jairo, encontrei essa configuração da Bematech, aqui tem decimal e convertido para hexadecimal, como ficariam para ser usado como comando no
xHarbour ? obrigado.
Largura de Impressão, Largura e Altura dos Caracteres
ASCII Dec Hexa Descrição
ESC H 72 48 Ativa o modo de 48 colunas (padrão)
ESC P 80 50 Ativa o modo de 48 colunas (padrão)
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 10:48
por Jairo Maia
Porter,
O que você postou são os comandos a ser usado para setar a largura de colunas. O padrão como já diz é de 48 colunas. Veja no manual os comandos de compressão de caractres e poste para que eu ou algum colega passe para Harbour. Não tem segredo, você verá.
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 13:45
por porter
Jairo,
Encontrei o manual Esc/Bema, lá encontrei varios tópicos descritos abaixo, mas compressão de caracteres não encontrei, se você puder passar alguns exemplos de configuração que você usa, talvez algum deles sirva para mim.
Operação
Posicionamento Vertical
Posicionamento Horizontal
Tipos de Caracteres
Largura de Impressão, Largura e Altura dos Caracteres
Códigos de Barras
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 13:56
por Jairo Maia
Porter,
Provavelmente está no tópico: Tipos de Caracteres. Mas anexe esse manual aqui, assim que algum colega (isso me inclui) puder podemos tentar ajudar.
Com relação a passar algum comando, os que eu usava eram os comandos ESC/POS, e aliás, desde o dia 1º deste mês não tenho mais nenhum cliente com Bematech. Elas foram substituídas pela Epson TM-T20 e SAT. Apenas um teimoso não aceitou a sugestão e comprou uma Elgin.
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 14:05
por porter
Obrigado Jairo, vou tentar outros comandos, se eu conseguir posto aqui.
Operação
ASCII Dec Hex Description
ESC @ 64 40 Inicializa a impressora
ESC b n 98 62 Habilitado (1): Sensor do estado da gaveta
Desabilitado (0): Sensor do estado do papel
ESC v n 118 76 Ativa a gaveta (n milissegundos; -50 ms < n < 200 ms
ESC w 119 77 Efetua um corte de papel
ESC x 120 78 Habilita o modo Dump
ESC y n 121 79 Habilitado (1) ou Desabilitado (0). Modo-padrão do teclado (1)
ESC z 1/0 122 7A Habilita o avanço automático de linha (n=1). Desabilita o avanço
automático de linha (n=0)
ESC m 109 6D Efetua um corte parcial de papel
Posicionamento Vertical
ASCII Dec Hexa Descrição
ESC C n 67 43 Programa o tamanho da página em linhas, onde n é o número de linhas
(altura simples). O padrão corresponde a 12 linhas (de altura simples)
ESC c n1 n2 99 63 Programa o tamanho da página em milímetros, onde Tamanho =
0,125mm*n1*n2
ESC J n 74 4A Efetua o avanço de n*0,125 mm de papel
FF 12 0C Avança uma página
LF 10 0A Avança uma linha
ESC 2 50 32 Avanço de linha de 1/6" (avanço de linha-padrão)
ESC 3 n 51 33 Avanço de linha de n/144 de polegada, onde n varia de 18(d) a 255(d)
ESC f 1 n 102 66 Salto de n caracteres na vertical
ESC A n 65 41 Efetua o avanço de n*0,375 mm de papel
19
MP-2100 TH . REVISÃO 1.2
Posicionamento Horizontal
ASCII Dec Hexa Descrição
ESC f 0 n 102 66 Salto de n caracteres na horizontal
ESC Q n 81 51 Posiciona a margem direita na coluna n
ESC I n 108 6c Posiciona a margem esquerda na coluna n
ESC a n 97 61 Alinha os caracteres; eles são centralizados com n=1 ou alinhados à
esquerda com n=0
.
Tipos de Caracteres
ASCII Dec Hex Descrição
ESC - n 45 2D Ativa (n=1) ou desativa (n=0) o modo sublinhado
ESC 4 52 34 Ativa o modo itálico
ESC 5 53 35 Desativa o modo itálico
ESC E 69 45 Ativa o modo de realce.
ESC F 70 46 Desativa o modo de realce
ESC t n 116 74 Seleciona a tabela de caracteres:
n=2 (Tabela de Caracteres 850 - Padrão)
n=3 (Tabela de Caracteres 437)
n=4 (Tabela de Caracteres 860)
n=5 (Tabela de Caracteres 858)
ESC S n 83 53 n=0 (habilita os caracteres sobrescritos)
n=1 (habilita os caracteres subscritos)
ESC T 84 54 Desabilita os modos sobrescrito e subscrito
ESC N n 78 4E n=0 (baixíssima densidade) n=1 (baixa densidade)
n=2 (densidade normal) n=3 (alta densidade)
n=4 (altíssima densidade)
ESC } n 125 7D n=1 (habilita o modo reverso)
n=0 (desabilita o modo reverso)
Manual de Usuário
20
Largura de Impressão, Largura e Altura dos Caracteres
ASCII Dec Hexa Descrição
DC2 18 12 Desativa o modo condensado (42 colunas)
DC4 20 14 Desativa o modo expandido de uma linha
ESC d n 100 64 Ativa (n=1) ou desativa (n=0) a altura dupla
ESC H 72 48 Ativa o modo de 48 colunas (padrão)
ESC P 80 50 Ativa o modo de 48 colunas (padrão)
ESC SI 15 0F Ativa o modo condensado (64 colunas)
ESC SO 14 0E Ativa o modo expandido de um linha
ESC V 86 56 Ativa a altura dupla de uma linha
ESC W n 87 57 Ativa (n=1) ou desativa (n=0) o modo expandido
SI 15 0F Ativa o modo condensado (64 colunas)
SO 14 0E Ativa o modo expandido de uma linha
duvida de em qual linha por tipo de impressão.
Enviado: 25 Fev 2016 15:05
por Kapiaba
Veja se te ajuda:
Código: Selecionar todos
//-> testando a impressora matricial
//----- Definicao de comando SAY para TdosPrn ---------------------------------
//
#xcommand @ <nRow>, <nCol> SAY <cText> OF <oPrinter> => <oPrinter>:Say(<nRow>, <nCol>, <cText> )
STATIC FUNCTION IMP_TESTE_MATRICIAL( OpcaoImp )
LOCAL nLinha, oPrn
IF MsgYesNo( "Atenção Por Favor:" + CRLF + ;
"Posso Imprimir?" + CRLF + ;
"Impressora Já Está Ligada?", ;
"Por Favor, Confirme!!!" ) = .F.
RETURN NIL
ENDIF
nLinha := 0
// Para Rede de Computadores
// oPrn:New("\\seuterminal\suaimpressora\LPT1")
oPrn:= TDosPrn():New( "TESTEIMP.TXT" ) // para ir para um arquivo .txt
// oPrn:= TDosPrn():New() // para ir para impressora em definitivo
// oPrn := TDosPrn():New("lpt1") // para ir para impressora em definitivo
// Este Comando, Liga a Impressora. NÆo Tirar Nunca
oPrn:StartPage() // da Start(inicializa) na p gina.
oPrn:lZeraBuffer := .T. // Inibe o Pulo da P gina
//-> Inicia a Impressao - Cabe‡alho do Cupom
//-> Modo Draft
@ nLinha, 00 SAY +CHR(18)+CHR(27)+"2"+CHR(27)+"H" OF oPrn
@ nLinha, 00 SAY " "+CHR(27)+"H" + CHR(27)+"W"+CHR(0) + ;
CHR(20) + CHR(18) + CHR(27)+"-"+CHR(0) + ;
CHR(27)+"F" + CHR(27)+"5"+CHR(27)+"W"+CHR(0) + ;
CHR(27)+"5"+CHR(27)+"-"+CHR(0) + ;
CHR(27)+"5"+CHR(27)+"W"+CHR(0)+CHR(27)+"-"+CHR(0) + ;
CHR(27)+"W"+CHR(0)+CHR(27)+"-"+CHR(0) OF oPrn
nLinha := nLinha + 1
DO CASE
CASE OPCAOIMP = 1
@ nLinha,01 SAY "A - M o d o Condensado com 6 Linhas Por Polegada"+CHR(15) OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 2
@ nLinha,01 SAY "B - M o d o Carta com 6 Linhas Por Polegada"+CHR(27)+"G" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 3
@ nLinha,01 SAY "C - Modo Carta Condensado com 6 Linhas por Polegada"+CHR(27)+"G"+CHR(15) OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 4
@ nLinha,01 SAY "D - M o d o Normal com 8 Linhas por Polegada"+CHR(27)+"0" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 5
@ nLinha,01 SAY "E - M o d o Condensado com 8 Linhas por Polegada"+CHR(15)+CHR(27)+"0" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 6
@ nLinha,01 SAY "F - M o d o Carta com 8 Linhas por Polegada"+CHR(27)+"G"+CHR(27)+"0" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 7
@ nLinha,01 SAY "G - Modo Carta Condensado com 8 Linhas por Polegada"+CHR(15)+CHR(27)+"G"+CHR(27) OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 8
@ nLinha,01 SAY "H - M o d o Condensado c o m dupla Impressao"+CHR(15)+CHR(27)+"E" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 9
@ nLinha,01 SAY "I - M o d o N o r m a l c o m d u p l a Impressao"+CHR(27)+"E" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
CASE OPCAOIMP = 10
@ nLinha,01 SAY "J - V o l t a ao Normal com 6 Linhas por Polegada"+CHR(18)+CHR(27)+"2"+CHR(27)+"H" OF oPrn
nLinha := nLinha + 1
@ nLinha, 00 SAY "." OF oPrn
nLinha := nLinha + 1
ENDCASE
//-> Modo Draft
@ nLinha, 00 SAY +CHR(18)+CHR(27)+"2"+CHR(27)+"H" OF oPrn
oPrn:EndPage()
oPrn:End()
//--- imprime no spool do windows, liberando o micro para trabalhar.
ImpSpool( "TESTEIMP.TXT",, .T. )
//--- opcionamente pode-se apagar o arquivo passando .t. no 3o. parametro.
RETURN NIL
duvida de em qual linha por tipo de impressão.
Enviado: 26 Fev 2016 13:25
por porter
ola Kapiaba, estou tentando compilar a rotina que você passou, mas está dando o erro abaixo, eu preciso declarar alguma lib para dar certo,
estou compilando com xHarbour, obrigado.
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6633)
Copyright 1999-2009,
http://www.xharbour.org http://www.harbour-project.org/
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_TDOSPRN' referenced from C:\ESTOQUE\KAPIABA.OBJ
Error: Unresolved external '_HB_FUN_IMPSPOOL' referenced from C:\ESTOQUE\KAPIABA.OBJ