Página 1 de 1

Imprimir na Vertical

Enviado: 17 Mar 2010 17:24
por locio
Será que alguem pode me ensinar como imprimir uma pagina parte na horizontal e parte na vertical. Tipo contracheque que tem os valores de vantagem e desconto na horizontal e o local de assinatura na vertical.

Tenho utilizado o programa de teste da classe win32prn() desse forum (função prnTeste), que tem me ajudado muito mas não tem esse tipo de exemplo.

Lócio

Re: Imprimir na Vertical

Enviado: 18 Mar 2010 11:10
por gvc
Olhei os exemplos e a documentação disponível da classe WIN32PRN e não encontrei nada.
Mesmo a instrução para imprimir em modo paisagem é para atuar na folha toda e não em parte dela.

Vamos esperar que algum dos colegas que estudam o código fonte do [x]Harbour possam achar alguma resposta.

Só para constar, eu tenho isso em relatório usando FW e já tive que fazer usando PCL (faz tempo).
Mas agora ficou tb a minha curiosidade se isso que vc quer é possível. Aguardamos.

Re: Imprimir na Vertical

Enviado: 18 Mar 2010 21:46
por carlos_dornelas
Por que não usa a hbprinter, que acompanha a minigui? é só usar o angle 90.

Antonio Carlos

Re: Imprimir na Vertical

Enviado: 20 Mar 2010 23:26
por sygecom
Para impirmir na VERTICAL é só deixar a impressão normal que ela sempre sai na Vertical, agora para imprimir na Horizoltal é só usar assim:
oPrinter:Landscape:= .T.

Ex:

Código: Selecionar todos

*****************************************************************
Function Imprime( cArq, tamrel ,cPrinter, cCopias, )
*****************************************************************
local cTexto, nLinhas, nA, cLinha, oBMP, cLine_temp, nFileHandle, cLine
#ifdef __XHARBOUR__
 local oPrinter := win32prn():New(cPrinter)
#else
 local oPrinter := win_prn():New(cPrinter)
#endif
cText := memoread( cArq )
//nFileHandle := FOpen( cArq )
oPrinter:Landscape:= .T.
oPrinter:FormType:= 9
oprinter:SetPrintQuality(-1) // qualidade da impressão
oPrinter:Copies:=1

IF !oPrinter:Create()
   Fim_Run()
   MsgStop("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar se a Impressora esta Ligada.","Aviso do Sistema")
   return NIL
else
   IF !oPrinter:StartDoc("Impressao Pelo Sistema SAGI")
      Fim_Run()
      MsgStop("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar a Impressora","Aviso do Sistema")
      Return NIL
   endif

   FOR TT=1 TO 2
      oPrinter:newline()
   NEXT

   oPrinter:SetFont("Courier New",13,{3,-50},0,.F.,.F.) // Comprimida
   nLines2 := 190
   oPrinter:Bold(0) // Normal

   nLines := mlcount( cText, nLines2 )
   for nA := 1 to nLines
      cLine := memoline( cText, nLines2, nA, 1, .F. )

      IF Left(AllTrim( cLine ), 1 ) == Chr( 15 ) .or. Left( AllTrim(cLine), 1 ) == Chr( 18 )
         loop
      ENDIF

      If Left(AllTrim(cLine),1)==Chr(12) //SALTO DA PAGINA
         oPrinter:NewPage()
         FOR TT=1 TO 2
            oPrinter:newline()
         NEXT
      endif

      oPrinter:TextOut( cLine, .T. )
      oPrinter:Bold(0) // Normal

      if (oPrinter:MaxRow()-2 ) <= oPrinter:Prow()
         oPrinter:NewPage()
         FOR TT=1 TO 2
            oPrinter:newline()
         NEXT
      endif
   next

   oPrinter:EndDoc()
   oPrinter:Destroy()
ENDIF
RETURN NIL

Re: Imprimir na Vertical

Enviado: 22 Mar 2010 21:35
por sygecom
Viajei na batatinha, imprimir na Vertical é outros quinhentos...

Re: Imprimir na Vertical

Enviado: 22 Mar 2010 23:25
por alxsts
Olá!

Não sei qual é a impressora... Não seria possível usar PCL (Printer Command Language)? Pesquise no manual dela.
Como você trabalha com [x]Harbour pose ser que o Crystal Reports te ajude. Tinha gente que acessava ele do Clipper...

Re: Imprimir na Vertical

Enviado: 23 Mar 2010 08:10
por Toledo
Olá a todos!
Em uma das mensagens acima o Antonio Carlos falou da HBPrinter, que tem recursos semelhantes a Win32PRN, onde você pode definir o ângulo de impressão de uma fonte de letra.

Código: Selecionar todos

DEFINE FONT "FonteVertical" NAME "Arial" SIZE 6 ANGLE 90
@ 10,11 say "FAZENDO UM TESTE" FONT "FonteVertical" TO PRINT
Abraços,

Re: Imprimir na Vertical

Enviado: 05 Abr 2010 15:23
por locio
Estou tentando testar mas ainda não consigui. Será que vc pode postar um exemplo completo. Que mostre o local de definição da fonte e da print. ou mesmo como seria definida a fonte usando o comando: oPrinter:SetFont().

No teste que eu tentei fazer deu "Syntax error at ´font´"

Lócio

Re: Imprimir na Vertical

Enviado: 05 Abr 2010 18:55
por Toledo
Atenção: o exemplo que passei é referente a HBPrinter da MiniGui e não Win32prn.

No link abaixo tem o download da HBPrinter:

http://www.hmgextended.com/files/CONTRIB/

Abraços,