Win32Prn() o win_Prn() Ayuda..?

Win32Prn() o win_Prn() Ayuda..?

Postby ruben Dario » Sun Sep 13, 2015 10:30 pm

Saludos al Forum

Usando Win32Prn() o win_Prn()

Tengo esta pregunta genero un reporte , al ejecutar me solicita el nombre del archivo PDF, como hago para que no me pida el nombre y lo tome de una variable ya definida donde tiene el nombre del Archivo PDF. Gracias.

La otra pregunta , despues de generarlo necesito abrirlo. El problema que tengo es que si el reporte es grande, cuando trata de abrilo, da error porque no ha terminado de generarlo ya que esta en proveco, como controlo que ya termino de generarlo y poderlo abrir.

ShellExecute( 0, "Open", ...., archivo )



Code: Select all  Expand view

         cFile := "Microsoft Print to PDF"
         #ifdef __XHARBOUR__
           oPrn := Win32Prn():new(cFile)
         #else
           oPrn := win_Prn():new(cFile)
         #endif
         oPrn:Landscape:= if(Hpapel=1,.T.,.F.)
         oPrn:FormType := 9 //FORM_A4
         oPrn:Copies   := 1
         If !oPrn:Create()
            Alert("Printer No Creada")
            return
         Else
          IF !oPrn:startDoc('Win32Prn(Dococumento Printer)')
             Alert("StartDoc() A Fallado")
             return
          Else
          Endif
         Endif


 
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Win32Prn() o win_Prn() Ayuda..?

Postby karinha » Mon Sep 14, 2015 2:26 pm

Hola, mira si ayuda:

Mira también: https://github.com/MRonaldo/MR-Tools/downloads

Code: Select all  Expand view

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

IF !oPrinter:Create()
   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 SCM")
      MsgStop("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar a Impressora","Aviso do Sistema")
      Return NIL
   endif

   IF File("res\logo.bmp")  // se tiver o arquivo logo.bmp dentro da mesma pasta ele vai imprimir o logo primeiro
      #ifdef __XHARBOUR__
       oBMP:= Win32BMP():new()
      #else
       oBMP:= Win_BMP():new()
      #endif
      oBmp:loadFile( "res\logo.bmp" )
      oBmp:Draw( oPrinter,  { 15,15,60,60 } )
      aTamlog := 9
   else
      aTamlog := 2
   endif

   FOR TT=1 TO aTamlog
      oPrinter:newline()
   NEXT
   //oPrinter:CharSet( 255 )

   IF TAMREL=80
      oPrinter:setfont('Courier New',,12,,,,255) // Normal
      nLines2 := 85
   ELSE
      oPrinter:SetFont("Courier New",13,{3,-50},0,.F.,.F.) // Comprimida
      nLines2 := 150
   ENDIF
   oPrinter:Bold(0) // Normal
*   oPrinter:newline() // Inicia nova linha

   nLines := mlcount( cText, nLines2 )
   for nA := 1 to nLines
      cLine := memoline( cText, nLines2, nA, 1, .F. )
      If Left(AllTrim(cLine),1)==Chr(12) //SALTO DA PAGINA
         oPrinter:NewPage()
         IF FILE("res\logo.bmp")  // se tiver o arquivo logo.bmp dentro da mesma pasta ele vai imprimir o logo primeiro
            #ifdef __XHARBOUR__
             oBMP:= Win32BMP():new()
            #else
             oBMP:= Win_BMP():new()
            #endif
            oBmp:loadFile( "res\logo.bmp" )
            oBmp:Draw( oPrinter,  { 15,15,60,60 } )
            aTamlog := 9
         else
            aTamlog := 2
         endif
      endif

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

      if (oPrinter:MaxRow()-2 ) <= oPrinter:Prow()
         oPrinter:NewPage()
         IF FILE("res\logo.bmp")  // se tiver o arquivo logo.bmp dentro da mesma pasta ele vai imprimir o logo primeiro
            #ifdef __XHARBOUR__
             oBMP:= Win32BMP():new()
            #else
             oBMP:= Win_BMP():new()
            #endif
            oBmp:loadFile( "res\logo.bmp" )
            oBmp:Draw( oPrinter,  { 15,15,60,60 } )
            aTamlog := 9
         else
            aTamlog := 2
         endif

         FOR TT=1 TO aTamlog
            oPrinter:newline()
         NEXT
      endif
   next

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


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7215
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 9 guests