Win32prn() só tem me dado dor de cabeça
Enviado: 18 Fev 2010 17:06
Boa tarde, amigos.
Além dos velhos problemas de tamanho de caractere, que varia de acordo com a marca da impressora usada e que, por sianl, eu já desisti de procurar solução, pois todas as ajudas aqui obtidas não deram resultado, surgiu agora um outro problema:
Estou imprimindo na orientação paisagem, usando: oPrinter:Landscape:= .T.
O resultado é : A primeira página do relatório imprime certinho, com caracteres tamanho nomal, mas da segunda página em diante, os caracteres diminuem de tamanho e os dados são impressos em menos da metade da página, de forma que só com um óculos a gente tem condição de ler a maldita página.
Agora, só me resta pedir ajuda a vcs. Abaixo , o meu código
Agradeço , de verdade, qq tentativa de ajuda...
Gabriel
PS: Pensando em me livrar de vez do win32prn(), eu gostaria de saber se existe opção de imprimir com orientação paisagem, usando o PrintFileRaw()
Além dos velhos problemas de tamanho de caractere, que varia de acordo com a marca da impressora usada e que, por sianl, eu já desisti de procurar solução, pois todas as ajudas aqui obtidas não deram resultado, surgiu agora um outro problema:
Estou imprimindo na orientação paisagem, usando: oPrinter:Landscape:= .T.
O resultado é : A primeira página do relatório imprime certinho, com caracteres tamanho nomal, mas da segunda página em diante, os caracteres diminuem de tamanho e os dados são impressos em menos da metade da página, de forma que só com um óculos a gente tem condição de ler a maldita página.
Agora, só me resta pedir ajuda a vcs. Abaixo , o meu código
Código: Selecionar todos
*----------------------------------------
Function impWinPrint(cPrinter,xarqtxt)
*-----------------------------------------
#define DMPAPER_A4 9 // A4 210 x 297 mm
LOCAL oPrinter:= Win32Prn():New(cPrinter), aFonts, x, nColFixed,nColTTF, nColCharSet
LOCAL ncarpol, i, nHandle, cString
If Paisagem && parametro q orienta se imprime retrato ou paisagem...
oPrinter:Landscape:= .T. // .T.=HORIZONTAL
Paisagem=.f.
else
oPrinter:Landscape:= .F. // .T.=HORIZONTAL
Endif
oPrinter:FormType := DMPAPER_A4
oPrinter:Copies := 1
oPrinter:SetPrintQuality(2) // qualidade da impress’o 1 rascunho 2 normal 3 media 4melhor
oPrinter:SetFont("Courier New",12,12)
IF !oPrinter:Create()
Aviso(" Impressora näo pode ser criada !!! ")
return
else
IF !oPrinter:startDoc("TPRINT("+xarqtxt+")")
Aviso("StartDoc() Falha na Impressora !")
oPrinter:destroy()
return
endif
endif
nHandle:= FOPEN( xarqtxt ) // READ
cString:= ""
xmaxLen:= 0
FOR i:= 1 TO 10
IF gfreadline( @cString, nHandle )
IF LEN( cString ) > xmaxLen
xmaxLen:= LEN( cString )
ENDIF
ELSE
EXIT
ENDIF
NEXT
IF xmaxLen <= 85
ncarpol:= 11
ELSEIF xmaxlen <= 100
ncarpol:= 13
ELSEIF xmaxlen <= 136
ncarpol:= 18
ELSEIF xmaxlen <= 160
ncarpol:= 21
ENDIF
oPrinter:SetFont("Courier New",12,12)
fSeek( nHandle, 0 )
cString:= ""
xprow:=0
endof_file=.f.
while !endof_file
gfreadline( @cString, nHandle )
IF ( xpos:= AT( CHR(12), cString ) ) > 0
cString:= LEFT( cString, xpos-1 ) + SUBS( cString, xpos + 1, LEN( cString ) )
ENDIF
oPrinter:TextOut(cString)
oPrinter:NewLine()
IF xpos > 0
oPrinter:NewPage()
oPrinter:SetFont('Courier New',,ncarpol)
oPrinter:NewLine()
xprow:=0
ELSE
xprow++
ENDIF
enddo
oPrinter:EndDoc()
oPrinter:Destroy()
fclose(nHandle)
RETURN(NIL)Gabriel
PS: Pensando em me livrar de vez do win32prn(), eu gostaria de saber se existe opção de imprimir com orientação paisagem, usando o PrintFileRaw()