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.
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)