Página 1 de 1

Impresión de corte en rollo de papel.

Publicado: Mié Mar 11, 2009 11:57 pm
por Diego Ferreira
Yo con una Epson TMU220 le pongo tan solo --->
Printer:nPaperLength := 0
y con esto me imprime infunitas linias sin ningun corte....
espero que te sirva...
"RRamonell" <meridiano75@prodigy.net.mx> escribió en el mensaje
news:[email=49b936de@svctag-j7w3v3j....]49b936de@svctag-j7w3v3j....[/email]
> Hola todos:
>
> Estoy programando la impresión de una tira de información contable. Para
> ello utilizo una miniprinter Star DP8340 de friccion con un rollo de 76 mm
> de ancho.
>
> El problema que tengo es que solo visualiza e imprime una parte de la
> información (47.5 cm) y el resto de la información se pierde. La tira
> completa puede medir mas de un metro, dependiendo de la cantidad de
> información que se genere en el periódo.
>
> Los valores que utilizo para las propiedades del objeto TPrinter son:
>
> LOCAL l := 0
>
> Printer:lPreview := .T.
> Printer:nPrintQuality := DMRES_HIGH
> Printer:nPaperWidth := 760
> Printer:cJobTitle := 'Compobación'
> Printer:StartDoc()
> Printer:oCanvas:nMapMode := mmSIMULCHAR
> Printer:StartPage()
> WITH OBJECT Printer:oCanvas
> :oFont := oFont2
> :nTextAlignment := taLEFT
> FOR k := 1 TO 200
> :TextOut( 3, l += 2, 'Impresión en tira : ' + Str( k, 3) )
> NEXT
> END
> Printer:EndPage()
> Printer:EndDoc()
> Printer:Preview()
> oFont2:Destroy()
>
> Con el código anterior solo visualiza e imprime 77 lineas.
>
> Alguien me puede ayudar diciendome como puedo abrir el tamaño del objeto
> TCanvas ?
>
> Gracias.
>
> Rene Ramon Elly
> meridiano75@prodigy.net.mx

Impresión de corte en rollo de papel.

Publicado: Vie Mar 13, 2009 4:11 am
por PEDRO DE LEON RODAS[3]
RRamonell, te paso la forma en el cual utilzo para imprimir tickets de un
punto de ventas, lo he usado en impresas star SP-212..
Te sugiero que pruebes instalando la star sp212 aun que tengas fisicamente
la Star DP8340.
Pues lo hice con una Star sp-512 y funciono correctamente, claro todo con
windows xp.
Espero te sirva.
oFont := TFont():New()
WITH OBJECT oFont
:cName := "Arial"
END WITH
Printer:lPreview := .F.
Printer:cJobTitle := "IMPRIMIR VENTA"
Printer:StartDoc()
Printer:oCanvas:nMapMode := mmSIMULCHAR
Printer:StartPage()
WITH OBJECT Printer:oCanvas
:oFont:= oFont
:lTransparent := .t.
:nMapMode := mmSIMULCHAR
:oFont:nSize := 8
:oFont:lBold := .f.
:nTextAlignment:=taRight
:TextOut( 0, 1, ALLTRIM(NOMBRE_DE_LA_EMPRESA))
:TextOut( 0, 2, "Venta No.: "+alltrim(Str(::folio_ticket)))
:TextOut( 0, 3, "FECHA: "+DTOC(::Fecha:Value)+" Hora: "+time())
:TextOut( 0, 4, "Socio No. "+Alltrim(Str(::Numero_Socio:Value)))
:TextOut( 0, 5, Substr(::Nombre_Socio:Value,1,42) )
:TextOut( 2, 6, "Cantidad")
:TextOut( 16, 6, "Precio")
:TextOut( 28, 6, "Importe")
:TextOut( 0, 7, REPLICATE("-",40))
Var_linea=8
::Tempo:Select() /// esta es mi tabla donde guardo las partidas de la
venta
::Tempo:Gotop()
Do while .Not. ::Tempo:Eof()
:TextOut( 0, Var_linea, Substr(::Tempo:Descrip,1,42))
Var_linea=Var_linea+1
:TextOut( 0,
Var_linea,Transform(::Tempo:Cantidad,"99,999.999"),0 )
:TextOut( 4,
Var_linea,Transform(::Tempo:Precio,"999,999.99"),18 )
:TextOut( 4,
Var_linea,Transform(::Tempo:Importe,"999,999.99"),31 )
Var_linea=Var_linea+1
::Tempo:Skip()
Enddo
:TextOut( 0, Var_linea,REPLICATE("-",40))
Var_linea=Var_linea+1
:TextOut( 2, Var_linea,"Subtotal=====>")
:TextOut( 2,
Var_linea,Transform(::Subtotal:Value,"999,999.99"),31 )
Var_linea=Var_linea+1
:TextOut( 2, Var_linea,"Venta Total==>")
:TextOut( 2,
Var_linea,Transform(::Total:Value,"999,999.99"),31 )
END WITH
Printer:EndPage()
Printer:EndDoc()
oFont:Destroy()

Impresión de corte en rollo de papel.

Publicado: Vie Mar 13, 2009 3:41 pm
por zeasoftware
Yo lo hice un poco mas complicado por la ausencia de documentacion y gracias
a muchas respuestas del foro.
Al inicio defino como voy a imprimir: (hay varias por que hice un solo
proceso para toda impresion de la aplicacion)
Do Case
Case cSize == "Ticket"
::nPaperSizeType := 2
Case cSize == "MediaCarta"
//Alto:13.97 Ancho:21.59
::nPaperSizeType := 1
OtherWise
::nPaperSizeType := 0
EndCase
Antes del StarDoc()
Do Case
Case ::nPaperSizeType == 2
//Alto:13.97 Ancho:21.59
::nWidth := 1000
::nEndDataRow := 0
:nPaperWidth := ::nWidth //solo para no dejar de usar la
variable, la ocupo en otro lugar :o)
:nPaperLength := 5000
Case ::nPaperSizeType == 1
//Alto:13.97 Ancho:21.59
::nWidth := 2159
:nPaperWidth := ::nWidth
:nPaperLength := 1397
OtherWise
:nPaperSizeType := 0
EndCase
y antes del EndDoc()
If ::nPaperSizeType == 2 .And. ::nEndDataRow == 0
:nPaperWidth := ::nWidth
:nPaperLength := ::nYPos
//:Reset()
End
nYPos lo voy incrementando conforme voy imprimiendo y lanzando saltos de
linea, para lo cual defini un metodo llamado Skip() donde hago los calculos.
al final me queda un recuadro de impresion con lo alto del lago de la
impresion.
Espero te sirva.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com

Impresión de corte en rollo de papel.

Publicado: Vie Mar 13, 2009 4:56 pm
por RRamonell
Muchisimas gracias: Diego Ferreira, Pedro de León Rodas y Ramón Zea por
responder.
Voy a hacer pruebas con sus sugerencias.
Saludos.
Rene Ramon Elly
meridiano75@prodigy.net.mx