Win32Prn - Salto de Pagina apos impressao
Moderador: Moderadores
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
Win32Prn - Salto de Pagina apos impressao
Estou tentanto utilizar win32prn, tenho que imprimir um formulario com 31 linhas, terminando tenho que ja deixar a impressora pronta para imprimir o proximo formulario, mas quando termina a impressao do primeiro cormulario ele ja salta para a proxima folha, pois em cada folha tenho dois formularios, existe uma maneira de fazer com que a impressora nao de este salto.
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Win32Prn - Salto de Pagina apos impressao
Dependendo da orientação do papel, você pode setar o formulário para:
#define DMPAPER_A5 11 /* A5 148 x 210 mm */
ou
#define DMPAPER_A5_TRANSVERSE 61 /* A5 Transverse 148 x 210 mm */
ou ainda controlar o avanço do papel pelo número de linhas.
#define DMPAPER_A5 11 /* A5 148 x 210 mm */
ou
#define DMPAPER_A5_TRANSVERSE 61 /* A5 Transverse 148 x 210 mm */
ou ainda controlar o avanço do papel pelo número de linhas.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
Re: Win32Prn - Salto de Pagina apos impressao
Estou usando a impressora lx300, e mesmo utilizando o DMPAPER_A5, assim que ele termina a impressao ele salta para proxima pagina, precisaria que ele nao saltasse, e permanecesse, para que pudesse fazer uma nova impressao na segunda parte do formulario. Mas gostaria de saber se é possivel isso usando a Win32Prn.
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: Win32Prn - Salto de Pagina apos impressao
Na realidade nunca usei a Classe Win32prn() com impressoras matriciais.
Não sei te informar. Quem sabe algum outro colega saiba.
Não sei te informar. Quem sabe algum outro colega saiba.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Win32Prn - Salto de Pagina apos impressao
Olá nasouza,
Post sua rotina de impressão que está usando a WIN32PRN para poder ver o que pode está acontecendo ou quem sabe dar alguma dica.nasouza escreveu:Estou usando a impressora lx300, e mesmo utilizando o DMPAPER_A5, assim que ele termina a impressao ele salta para proxima pagina, precisaria que ele nao saltasse, e permanecesse, para que pudesse fazer uma nova impressao na segunda parte do formulario. Mas gostaria de saber se é possivel isso usando a Win32Prn.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
Re: Win32Prn - Salto de Pagina apos impressao
Estou testando esta rotina, que encontrei no exemplo do Wagner, a respeito da Win32Prn, e criei este layout, para ver se conseguia gerar a impressao, mas o problema tem sido o salto de pagina, apos a impressao.
/* Printer.prg */
Natanael..
------------------------------------
Nota da Moderação:(Sygecom)
Topico editado para colocar a TAG [ CODE ]
/* Printer.prg */
Código: Selecionar todos
#define DMPAPER_A5 11 /* A5 148X210mm */
//-------------
FUNCTION Main()
//-------------
LOCAL nPrn:=1
LOCAL aPrn:= GetPrinters()
CLS
IF EMPTY(aPrn)
Alert("Nenhuma impressora instalada")
QUIT
END
cls
WHILE !EMPTY(nPrn)
CLS
@ 0,0 SAY 'Teste de uso do WIN32PRN'
@ 1,0 TO maxRow(),maxCol()
nPrn:= ACHOICE(2,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn)
IF !EMPTY(nPrn)
PrnTest(aPrn[nPrn])
else
END
END
RETURN(NIL)
//------------------------
FUNCTION PrnTest(cPrinter)
//------------------------
LOCAL oPrinter:= WIN32PRN():New(cPrinter), aFonts, nPos
oPrinter:Landscape := .f.
oPrinter:FormType := DMPAPER_A5
oPrinter:Copies := 1
IF !oPrinter:Create()
Alert("Erro criando a impressora")
ELSE
IF !oPrinter:startDoc('Isto ir aparecer no SPOOLER do windows')
Alert("Erro iniciando documento.")
ELSE
oPrinter:UnderLine(.F.)
aFonts:= oPrinter:GetFonts()
oPrinter:SetFont(aFonts[25,1])
oPrinter:NewLine()
oprinter:setpos((0 * oPrinter:Charwidth));oPrinter:TextOut("===============================================================================",.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth));oprinter:textOut("123456789012345678901234567890",.f.)
oprinter:setpos((32 * oPrinter:Charwidth));oprinter:textOut([- Telefone],.f.)
oprinter:setpos((43 * oPrinter:Charwidth));oprinter:textOut([ 99 9999-9999],.f.)
oprinter:setpos((58 * oPrinter:Charwidth));oprinter:textOut([! Orcamento:],.f.)
oprinter:setpos((72 * oPrinter:Charwidth));oprinter:textOut([1234567],.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth));oprinter:textOut("1234567890123456789012345678901234567890",.f.)
oprinter:setpos((58 * oPrinter:Charwidth));oprinter:textOut("! Emissao:",.f.)
oprinter:setpos((69 * oPrinter:Charwidth));oprinter:textOut("99/99/9999",.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth)) ;oprinter:textOut("SANTA CRUZ DO MONTE CASTELO",.f.)
oprinter:setpos((28 * oPrinter:Charwidth)) ;oprinter:textOut("-",.f.)
oprinter:setpos((29 * oPrinter:Charwidth)) ;oprinter:textOut("PR",.f.)
oprinter:setpos((31 * oPrinter:Charwidth)) ;oprinter:textOut("-",.f.)
oprinter:setpos((32 * oPrinter:Charwidth)) ;oprinter:textOut("1234567890123456789012345",.f.)
oprinter:setpos((58 * oPrinter:Charwidth)) ;oprinter:textOut("! Hora:",.f.)
oprinter:setpos((70 * oPrinter:Charwidth)) ;oprinter:textOut(TIME(),.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth)) ;oprinter:textOut("-[Vendedor:",.f.)
oprinter:setpos((12 * oPrinter:Charwidth)) ;oprinter:textOut("123456789012345678901234567890",.f.)
oprinter:setpos((42 * oPrinter:Charwidth)) ;oprinter:textOut("]---------------! Operacao:",.f.)
oprinter:setpos((70 * oPrinter:Charwidth)) ;oprinter:textOut("123456789",.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth)) ;oprinter:textOut("-[Cliente]-----------------------------------------------! Pagina n.",.f.)
oprinter:setpos((74 * oPrinter:Charwidth)) ;oprinter:textOut("99999",.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth)) ;oprinter:textOut("12345",.f.)
oprinter:setpos((06 * oPrinter:Charwidth)) ;oprinter:textOut("-",.f.)
oprinter:setpos((07 * oPrinter:Charwidth)) ;oprinter:textOut("12345678901234567890123456789012345678901234",.f.)
oprinter:setpos((52 * oPrinter:Charwidth)) ;oprinter:textOut("-",.f.)
oprinter:setpos((54 * oPrinter:Charwidth)) ;oprinter:textOut("Telefone :",.f.)
oprinter:setpos((65 * oPrinter:Charwidth)) ;oprinter:textOut("[44] 9999-9999",.f.)
oPrinter:NewLine()
oprinter:setpos((01 * oPrinter:Charwidth)) ;oprinter:textOut("1234567890123456789012345678901234567890",.f.)
oprinter:setpos((44 * oPrinter:Charwidth)) ;oprinter:textOut("123456789012345678901234567890",.f.)
oprinter:setpos((77 * oPrinter:Charwidth)) ;oprinter:textOut("12",.f.)
oPrinter:NewLine()
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("-------------------------------------------------------------------------------",.f.)
oPrinter:NewLine()
oPrinter:SetFont(aFonts[27,1])
oprinter:setpos((05 * oPrinter:Charwidth)) ;oprinter:textOut("Codm Descricao das Mercadorias UN Qtidade Unitario Total",.f.)
oPrinter:NewLine()
oprinter:setpos((05 * oPrinter:Charwidth)) ;oprinter:textOut("-------- -------------------------------------------------- -- --------- ---------- ----------",.f.)
for a = 1 to 13
oPrinter:NewLine()
oprinter:setpos((005 * oPrinter:Charwidth)) ;oprinter:textOut("999/9999",.f.)
oprinter:setpos((017 * oPrinter:Charwidth)) ;oprinter:textOut("12345678901234567890123456789012345678901234567890",.f.)
oprinter:setpos((071 * oPrinter:Charwidth)) ;oprinter:textOut("99",.f.)
oprinter:setpos((077 * oPrinter:Charwidth)) ;oprinter:textOut("99999.999",.f.)
oprinter:setpos((090 * oPrinter:Charwidth)) ;oprinter:textOut("999,999.99",.f.)
oprinter:setpos((104 * oPrinter:Charwidth)) ;oprinter:textOut("999,999.99",.f.)
next
oPrinter:NewLine()
oPrinter:SetFont(aFonts[25,1])
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("-[Observacoes]-----------------------------------------------------------------",.f.)
oPrinter:NewLine()
oprinter:setpos((59 * oPrinter:Charwidth)) ;oprinter:textOut("!Mer.:",.f.)
oprinter:setpos((65 * oPrinter:Charwidth)) ;oprinter:textOut("9,999,999.99",.f.)
oPrinter:NewLine()
oprinter:setpos((59 * oPrinter:Charwidth)) ;oprinter:textOut("!Des.:",.f.)
oprinter:setpos((65 * oPrinter:Charwidth)) ;oprinter:textOut("9,999,999.99",.f.)
oPrinter:NewLine()
oprinter:setpos((59 * oPrinter:Charwidth)) ;oprinter:textOut("!Tot.:",.f.)
oprinter:setpos((65 * oPrinter:Charwidth)) ;oprinter:textOut("9,999,999.99",.f.)
oPrinter:NewLine()
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("-[L.Entrega:",.f.)
oprinter:setpos((13 * oPrinter:Charwidth)) ;oprinter:textOut("12345678901234567890123456789012345678901234567890",.f.)
oprinter:setpos((63 * oPrinter:Charwidth)) ;oprinter:textOut("]---------------",.f.)
oPrinter:NewLine()
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("-[Assinatura:__________________________________________________]---------------",.f.)
oPrinter:NewLine()
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("===[ CONFIRA A MERCADORIA NA ENTREGA, NAO ACEITAMOS RECLAMACOES POSTERIORES ]==",.f.)
oPrinter:NewLine()
oPrinter:setprc(60,00)
oprinter:setpos((00 * oPrinter:Charwidth)) ;oprinter:textOut("Estou na Linha ",.f.)
oprinter:setpos((16 * oPrinter:Charwidth)) ;oprinter:textOut(str(oPrinter:prow(),4),.f.)
oPrinter:EndDoc()
oPrinter:Destroy()
end
end
RETURN(NIL)
------------------------------------
Nota da Moderação:(Sygecom)
Topico editado para colocar a TAG [ CODE ]
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Win32Prn - Salto de Pagina apos impressao
Bom, testei aqui, estava eu aqui com uma impressora lx-300 na mesa e fiz um teste com uma rotina minha eu deu certinho usando oPrinter:FormType := 61, agora o que pode esta acontecendo no seu exemplo é que esta ultrapasando o tamanho definido no FormType e ejetando a proxima sem impressão.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
nasouza
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 20 Jul 2009 17:57
- Localização: Santa Isabel do Ivai - Pr
Re: Win32Prn - Salto de Pagina apos impressao
Utilizei esta rotina que postei, somente mudei o : oPrinter:FormType := 61, e mesmo imprimindo apenas 22 linhas ao terminar ele entende que o formulario tenha 67 linhas e salta para proxima folha, sera que nao tem jeito?
Re: Win32Prn - Salto de Pagina apos impressao
Caro Laudelino,
Estou enviando para você um exemplo de como eu faço para imprimir em matricial conforme a sua necessidade:
Espero ter lhe auxiliado.
Lócio
Estou enviando para você um exemplo de como eu faço para imprimir em matricial conforme a sua necessidade:
Código: Selecionar todos
PROCEDURE EXEMPLO
LOCAL PRN, NOME_ARQ
NOME_ARQ = 'TESTE.TXT'
SET DEVICE TO PRINT
SET PRINTER TO &NOME_ARQ
set print on
set console off
SETPRC(00,00)
@ 00,00 SAY ""
LINHA = 0
WHILE LINHA < 32
@ LINHA,01 SAY LINHA
LINHA = LINHA + 1
ENDDO
@ PROW()+1,00 SAY ''
SETPRC(00,00)
LINHA = 0
set device to scre
SET PRINTER TO
set console on
set print off
PRN:=getdefaultprinter()
ret:=printfileraw(PRN,NOME_ARQ)
RETURN
Lócio
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Win32Prn - Salto de Pagina apos impressao
Como é uma impressora matricial, você pode fazer como o colega Locio postou, use o PrintFileRaw() para imprimir como se fosse em clipper, se não funcionar eu arisco a dizer que pode ser problema de configuração na sua impressora.nasouza escreveu:Utilizei esta rotina que postei, somente mudei o : oPrinter:FormType := 61, e mesmo imprimindo apenas 22 linhas ao terminar ele entende que o formulario tenha 67 linhas e salta para proxima folha, sera que nao tem jeito?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
