/** Funcion para probar la impresora de Tikets.
Tiene que instalarse el Driver para la impresora.
Selecionar como predeterminada.
Si está conectada al LPT1 tiene que ser la única conectada al mismo.
Funciona igual que con cualquier impresora Windows.
**/
function pruebaprn_win(lprever,oPadre)
local nl:=0 // numero de linea que se está imprimiendo.
local pg:=1 // numero de página que se está imprimiendo.
local Ultpg:=1 // numero de páginas a imprimir.
local texto:=Space(62) // texto de la línea a imprimir.
local oPrN
local oFont1, oFont2, oFontCond, oFontCodBarras, oFontCodBarras2D, oFontBarrasQR
local fontsize := -8
local font2size:=-20
local nColStep :=0
local nsl := 4 * (-1)*(-6) / 100 // Alto en cm para el salto de linea. ¡EMPIRICO¡
local mrgiz:=0, mrgsu:=0 // En centímetros.
local oPen1, oPen2
local aPosImg:={}, aTamImg:={}, cFileImg:=''
default lPrever:=.T.
if lPrever = .f.
PRINT oPrn NAME "Prueba_PRN_"+dtos(date()) TO cNomImpresora
else
SeleccionaPrn()
PRINT oPrn NAME "Prueba_PRN_"+dtos(date()) TO cNomImpresora PREVIEW
endif
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0, fontsize OF oPrn
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0, font2size BOLD OF oPrn
DEFINE FONT oFontCond NAME "consolas" SIZE 0, 8 OF oPrn
// 29/03/2017: LOS SIGUIENTES TIPOS PROBADOS OK CON LAS FUENTES QUE TRAE LA IMPRESORA DE TIKETS BIXOLON SRP-330II
DEFINE FONT oFontCodBarras NAME "Barcode3" OF oPrn
DEFINE FONT oFontCodBarras2D NAME "2D-CODE1" SIZE 0,-10 OF oPrn
DEFINE FONT oFontCodBarrasQR NAME "QR Code" SIZE 0,-10 OF oPrn
DEFINE PEN oPen1 width 1
DEFINE PEN oPen2 width 2
if empty( oPrn:hDC )
msgstop( "No hay impresora preparada" )
return NIL
endif
// Comienza el proceso de impresión.
PAGE
nl=mrgsu
nl=nl+1*nsl
oPrn:CmSay(nl ,mrgiz ,'Referencia: 12345' ,oFontCond)
CmLinea(oPrn,nl+2*nsl,mrgiz,nl+2*nsl,8,oPen1) // Línea a lo largo de la página.
nl=nl+1*nsl
oPrn:CmSay(nl+2*nsl,mrgiz+0.1,'ARTICULO DE PRUEBA Ñ',oFont1)
nl=nl+3*nsl
oPrn:CmSay(nl, mrgiz, 'ARTICULO DE PRUEBA Ñ', oFont2,8,,, 2)
nl=nl+4*nsl
//Configura los colores a texto en negro y fondo en blanco
SetTextColor( oPrn:hDCOut, nrgb(0,0,0) ) //nrgb(0,0,0)=negro; nrgb(255,255,255)=Blanco
SetBkColor( oPrn:hDCOut, nrgb(255,255,255) )
oPrn:CmSay(nl, mrgiz, transform(11111.85,'99,999.99 €'), oFont2)
nl=nl+4*nsl
//Cambia los colores de texto y fondo
PrnCmSaycolor(oPrn,nl,mrgiz,transform(22222.85,' 99,999.99 € Izda'),oFont2,nrgb(255,255,255),nrgb(255,0,0),,,)
PrnCmSaycolor(oPrn,nl+4*nsl,mrgiz,transform(33333.85,'99,999.99 € Dcha '),oFont2,nrgb(255,0,255),nrgb(0,255,0),1,8,1)
PrnCmSaycolor(oPrn,nl+8*nsl,mrgiz,alltrim(transform(44444.85,'99,999.99 € Center')),oFont2,nrgb(255,255,0),nrgb(0,0,255),1,,2)
PrnCmSaycolor(oPrn,nl+12*nsl,mrgiz,alltrim(transform(44444.85,'99,999.99 € Center')),oFont2,nrgb(255,255,0),nrgb(0,0,255),1,8,2)
nl=nl+16*nsl
CmLinea(oPrn,nl,mrgiz,nl,5.5,oPen2) // Línea a lo largo de la factura.
nl=nl+1*nsl
oPrn:CmSay(nl,0,'1234567890123456789012345678901234567890',oFontCond)
nl=nl+2*nsl
oPrn:CmSay(nl,0,'8000113009510',oFontCond)
nl=nl+2*nsl
oPrn:CmSay(nl,0,'8000113009510',oFontCodBarras)
nl=nl+2*nsl
oPrn:CmSay(nl,0,'8000113009510',oFontCodBarras2D)
nl=nl+2*nsl
oPrn:CmSay(nl,0,'8000113009510',oFontCodBarrasQR)
ENDPAGE
ENDPRINT // Apaga la impresora
oPen1:end()
oPen2:end()
return NIL
//Pinta en la impresora una línea en color
function PrnCmSaycolor(oPrn,nRowcm,nColcm,cText,oFont,nColorLetra,nColorFondo, nBkMode,nCmAncho,nAlineamiento)
local nOldColorLetra:= 0 //Texto Blanco
local nOldBkColor := 0 //Texto Fondo
local nOldBkMode := 0 //Back Mode; 1 transparente, 2 opaco.
local ammPageSize := oPrn:GetPhySize()
local oBrush, aDesde:={}, aHasta:={}
default nColorLetra:=nrgb(0,0,0)
default nColorFondo:=nrgb(255,255,255)
default nBkMode := 1 // 1= transparente, 2= opaco
default nCmAncho:= ammPageSize[1]/10 //Por defecto todo el ancho de la página
default nAlineamiento:=0 //LEFT 0, RIGHT 1,CENTER 2
DEFINE BRUSH oBrush COLOR nColorFondo
nOldColorLetra:=SetTextColor( oPrn:hDCOut, nColorLetra ) //Texto Blanco
nOldBkColor :=SetBkColor( oPrn:hDCOut, nColorFondo )
nBkMode :=SetBkMode( oPrn:hDCOut, nBkMode )
aDesde:=oPrn:cmtr2pix(nRowcm,nColcm)
aHasta:=oPrn:cmtr2pix(nRowcm,nColcm+nCmAncho); aHasta[1]=aHasta[1]+oPrn:GetTextHeight( "", oFont )+5
oPrn:FillRect( {aDesde[1],aDesde[2],aHasta[1],aHasta[2]}, oBrush )
do CASE
CASE nAlineamiento = 0 // Izquierda
nColcm=nColcm
CASE nAlineamiento = 1 // Derecha
nColcm=nCmAncho-oPrn:CmtrGetTextWidth( cText, oFont )
CASE nAlineamiento = 2 // Centrado
nColcm=nColcm+(nCmAncho-oPrn:CmtrGetTextWidth( cText, oFont ))/2
endcase
oPrn:CmSay(nRowcm,nColcm, cText, oFont,nCmAncho,nColorLetra,nBkMode,0)
//Devuelve los colores a la configuración anterior a pintar.
SetTextColor( oPrn:hDCOut, nOldColorLetra )
SetBkColor( oPrn:hDCOut, nOldBkColor )
SetBkMode( oPrn:hDCOut, nOldBkMode )
oBrush:end()
return