Página 1 de 1
winprn cortando papel na bematech
Enviado: 19 Ago 2019 14:34
por Itamar M. Lins Jr.
Ola!
Eu ainda não resolvi de forma definitiva como fica a configuração na hora de informar o tamanho da página.
Se é papel continuo, como configurar ? No modo raw fica blz.
Saudações,
Itamar M. Lins Jr.
winprn cortando papel na bematech
Enviado: 19 Ago 2019 16:06
por Itamar M. Lins Jr.
Ola!
Eu já tinha postado aqui...Parece que continua na mesma.Imprime blz na impressora virtual do windows, mas na bematech ela corta.
Código: Selecionar todos
**********************************
Function PrintTH(cArq,cPrint)
**********************************
*
*
Local oPrn, aPrn:=WIN_PRINTERLIST(), n := 0
hb_default(@cPrint,win_PrinterGetDefault())
if empty(aPrn)
hwg_Msginfo('Não há impressoras instaladas')
return .f.
endif
If cPrint == Nil
cPrint := win_PrinterGetDefault()
EndIf
cText := memoread(cArq)
nLinh := mlcount(cText)
nTL := (nLinh/5)
oPrn := win_prn():New(cPrint)
oPrn :LandScape := .F.
oPrn :FormType := WIN_DMPAPER_USER
oPrn :PaperLength := 11*25.4*nTL
oPrn :PaperWidth := 3*25.4*10
oPrn :Copies := 1
if !oPrn:Create()
hwg_Msginfo("Não foi criado documento.")
Return nil
EndIf
if !oPrn:StartDoc("Cozinha: "+cArq)
hwg_Msginfo("Erro na Impressora.")
Return nil
EndIf
oPrn:SetColor( HB_WIN_RGB_BLACK )
oPrn:SetFont( "Lucida Console", 15, { 4, -70 } )
For n := 1 to nLinh
oPrn:Textout(memoline(cText,,n),.t.)
Next
oPrn:NewLine()
oPrn:NewLine()
oPrn:EndDoc()
Return .T.
Saudações,
Itamar M. Lins Jr.
winprn cortando papel na bematech
Enviado: 19 Ago 2019 16:13
por rubens
Corta na qtde de itens ou na largura ?
Rubens
winprn cortando papel na bematech
Enviado: 19 Ago 2019 16:21
por Kapiaba
Veja se ajuda:
Código: Selecionar todos
FUNCTION PrintWin( cPrinter, cArq )
LOCAL oPrn := Nil, aPrn := Win_PrinterList( .T. , .F. ), __nColFixed, ;
cLinha, oElemento, lImp := .F.
cPrinter := hb_DefaultValue( cPrinter, Win_PrinterGetDefault() )
cArq := hb_DefaultValue( cArq, "" )
IF Empty( cArq )
MsgStop( "Arquivo de impressão deve ser informado", "Erro" )
RETURN .F.
ENDIF
IF Empty( aPrn )
MsgStop( "Não há impressoras instaladas", "Erro" )
RETURN .F.
ENDIF
FOR EACH oElemento IN aPrn
IF Upper( oElemento[1] ) = Upper( cPrinter )
//oElemento[1] //Nome da impressora
//oElemento[2] //Porta onde a impressora está ligada
lImp := .T.
ENDIF
NEXT
IF ! lImp
MsgStop( "Impressora " + cPrinter + " não está instalada." + ;
hb_Eol() + "Entre em contato com o helpdesk", "Erro" )
RETURN Nil
ENDIF
oPrn := Win_Prn():New( cPrinter )
oPrn:FormType := WIN_DMPAPER_USER
oPrn:PaperWidth := 3 * 26.4 * 10
oPrn:Copies := 1
IF ! oPrn:Create()
MsgStop( "Não foi criado documento.", "Erro de Impressão" )
oPrn:Destroy()
RETURN Nil
ENDIF
IF ! oPrn:StartDoc( "DocPrint" )
MsgStop( "Erro na Impressora.", "Erro de Impressão" )
oPrn:Destroy()
RETURN Nil
ENDIF
oPrn:SetFont( "Lucida Console", 8, 0 )
__nColFixed := 0
PrintCabec( .T. , oPrn, hb_DirBase() + "fazenda.bmp" )
FT_FUSE( cArq )
DO WHILE ! FT_FEOF()
cLinha := FT_FREADLN()
cLinha := IF( Empty( cLinha ), " ", cLinha )
oPrn:SetPos( __nColFixed )
oPrn:Textout( cLinha, .T. )
FT_FSKIP()
ENDDO
FT_FUSE()
PrintCabec()
oPrn:EndDoc()
oPrn:Destroy()
oPrn := Nil
RETURN .T.
FUNCTION PrintCabec( lInicio, oPrn, cBitFile )
LOCAL __nLinha := 50, __nColuna := 100, __nHandleFile, _i, I
STATIC __oBMP
STATIC __nWidth
STATIC __nHeight
lInicio := hb_DefaultValue( lInicio, .F. )
cBitFile := hb_DefaultValue( cBitFile, "" )
IF lInicio
IF ! Empty( cBitFile ) .AND. __oBMP = Nil
fi_Initialise()
__nHandleFile := fi_Load( FIF_BMP, cBitFile, BMP_DEFAULT )
__nWidth := fi_GetWidth( __nHandleFile )
__nHeight := fi_GetHeight( __nHandleFile )
fi_DeInitialise()
ENDIF
oPrn:SetPrc( 0, 0 ) // 1, 0
oPrn:SetPrc( oPrn:pRow(), 4 )
FOR I := 1 TO 10
oPrn:Textout( " ", .T. )
NEXT
IF ! Empty( cBitFile )
IF hb_vfExists( cBitFile )
IF __oBMP = Nil
__oBMP := Win_BMP():New()
IF !__oBMP:loadFile( cBitFile )
RETURN Nil
ENDIF
//oBmp:Draw( oPrn, { nColuna, nLinha, nWidth, nHeight } )
/* Note: Can also use this method to print bitmap */
//__oBmp:Rect := { __nColuna, __nLinha, __nWidth, __nHeight }
//oPrn:DrawBitmap( __oBmp )
ENDIF
__oBMP:Draw( oPrn, { __nColuna, __nLinha, __nWidth, __nHeight } )
ENDIF
ENDIF
ELSE
IF __oBMP != Nil
__oBMP:Destroy()
__nWidth := Nil
__nHeight := Nil
__oBMP := Nil
ENDIF
ENDIF
RETURN Nil
Saudações.
winprn cortando papel na bematech
Enviado: 19 Ago 2019 16:26
por Itamar M. Lins Jr.
Ola!
É um velho problema. Corta no comprimento do papel. É bobina! tem que imprimir tudo. Quando chega no tamanho da folha A4 corta.
Eu penso que é um erro da classe winprn do Harbour. Pois no ACBR e outros fica ok. Agora pq no XPS (visualizador) fica OK eu também não sei.
Não quero ficar mexendo na impressora Bematech para mudar o papel.
Saudações,
Itamar M. Lins Jr.
winprn cortando papel na bematech
Enviado: 19 Ago 2019 16:36
por Itamar M. Lins Jr.
Ola!
Kapiaba
oPrn:PaperWidth := 3 * 26.4 * 10
Tô mandando um rel. com mais de 80 linhas. Esse seu exemplo, (que eu já tinha visto) multiplica por *10... Tem que entender o código. Ai é que vai ficar menor mesmo.
Saldações,
Itamar M. Lins Jr.