Imprimir a dos caras.

Post Reply
fleal
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Imprimir a dos caras.

Post by fleal »

Quiero enviar a la impresora para que imprima por el frente y por el reverso de la hoja.

Esa funcionalidad se le puede decir desde las propiedades.... ¿Hay alguna forma de indicarle desde fivewin que lo haga?

Asi como existe una función para enviar a imprimir en apaisado, vertical, horizontal. ¿Alguna para imprimir a _?

Gracias
tomafa
Posts: 111
Joined: Sun Aug 13, 2006 7:28 pm
Location: ....
Contact:

Post by tomafa »

saludos,

yo que sepa, no se puede hay impresoras que imprimer en las _ de la hoja, yo tambien estoy buscando la misma funcionalidad pero no he tenido exito, espero que si encuantras la solucion la compartas ya que si yo se o encuentro la solucion tambien la publicare


suerte
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

Hola,

Bueno, he hecho esto, pero con _ en TPreview, donde cuando se va a imprimir, el usuario puede escoger dentre paginas pares o paginas impares asi que se puede imprimir primeramente las paginas impares y despues las pares y se puede hacer esto con cualquier impresora. Si desean los detalles, los envio.

Saludos
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Johnson
Posts: 18
Joined: Sat Nov 26, 2005 4:45 pm
Location: Brasil
Contact:

Post by Johnson »

ola Kleyber,
há possibilidade de enviar para meu e-mail:
jhnsn@ymail.com

obrigado.
fleal
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Post by fleal »

Hola Kleyber,

A ver si entiendo bien.... ¿Le das al usuario que escoja si quiere imprimir las hojas pares o impares?

Yo lo que busco es enviar desde FWH para que la impresora imprima en la misma hoja... la parte de arriba y la de atrás.

Lo que he visto es que mi impresora, no tiene esa propiedad, pero si las impresoras de mayor costo como una HP para oficina.


Saludos
Fernando
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

fleal wrote:Hola Kleyber,

A ver si entiendo bien.... ¿Le das al usuario que escoja si quiere imprimir las hojas pares o impares?

Yo lo que busco es enviar desde FWH para que la impresora imprima en la misma hoja... la parte de arriba y la de atrás.

Lo que he visto es que mi impresora, no tiene esa propiedad, pero si las impresoras de mayor costo como una HP para oficina.


Saludos
Fernando
Exactamente eso, Fernando. Lo que pasa es que la mayoria de las impresoras no tiene dicha funcionalidad, pero asi como te comente, desde el preview se puede enviar primeramente las paginas impares y despues seria tan solamente invertir el papel en la impresora y entonces imprimir las paginas pares, haciendo asi lo que deseas.

Lo que hago en la verdad es asi: En la RPreview.prg puse un combobox con las opciones y cambie esto en el:

Code: Select all

static function PrintPage()

     local hOldRes := GetResources()
     local hMeta   := oMeta1:hMeta
     local oDlg, oRad, oPageIni, oPageFin
     LOCAL aModo   := {"Todas as Páginas","Páginas Pares","Páginas Ímpares"}
     PRIVATE nOption := 1 ,;
             nFirst  := 1 ,;
             nLast   := len(DEVICE:aMeta)
     PRIVATE nCopias := nItem := 1

//     if nLast == 1
//          PrintPrv(nil, nOption, nFirst, nLast)
//          RETU nil
//     endif

     SET RESOURCES TO cResFile

     DEFINE DIALOG oDlg RESOURCE "PRINT"

     REDEFINE BUTTON ID 101 OF oDlg ;
          ACTION PrintPrv(oDlg, nOption, nFirst, nLast)

     REDEFINE BUTTON ID 102 OF oDlg ACTION oDlg:End()

     REDEFINE RADIO oRad VAR nOption ID 103,104,105 OF oDlg ;
          ON CHANGE iif(nOption==3 ,;
                       (oPageIni:Enable(),oPageFin:Enable()) ,;
                       (oPageIni:Disable(),oPageFin:Disable()) )

     REDEFINE GET oPageIni ;
          VAR nFirst ;
          ID 106 ;
          PICTURE "@K 99999" ;
          VALID iif(nFirst<1 .OR. nFirst>nLast,(MessageBeep(),.F.),.T.) ;
          OF oDlg

     REDEFINE GET oPageFin ;
          VAR nLast ;
          ID 107 ;
          PICTURE "@K 99999" ;
          VALID iif(nLast<nFirst .OR. nLast>len(DEVICE:aMeta), ;
                    (MessageBeep(),.F.),.T.) ;
          OF oDlg

     REDEFINE GET oCopias VAR nCopias ID 108 of oDlg PICTURE "999" SPINNER ;
          ON UP (++nCopias,if(nCopias>999,nCopias:=999,),oCopias:Refresh() );
          ON DOWN (--nCopias,if(nCopias<1,nCopias:=1,),oCopias:Refresh() ) ;


     REDEFINE COMBOBOX oItem VAR nItem ITEMS aModo ID 109 OF oDlg

     oPageIni:Disable()
     oPageFin:Disable()

     SetResources(hOldRes )

     ACTIVATE DIALOG oDlg

return nil
Y en la función PrintPrv lo hice asi:

Code: Select all

static function PrintPrv(oDlg, nOption, nPageIni, nPageEnd)

     local oDevice := DEVICE
     local aFiles := oDevice:aMeta
     local hMeta := oMeta1:hMeta
     local nFor, nXCopia, nTipoImp

     CursorWait()

     StartDoc(oDevice:hDC, oDevice:cDocument )

     DO case

     case nOption == 1                           // All

          FOR nXCopia = 1 to nCopias
              nTipoImp := nFirst
              FOR nFor := 1 TO len(aFiles)
                  if nItem = 1                  // All Pages
                     #ifdef __CLIPPER__
                        StartPage(oDevice:hDC)
                        hMeta := GetMetaFile(aFiles[nFor])
                        PlayMetaFile( oDevice:hDC, hMeta )
                        DeleteMetafile(hMeta)
                        EndPage(oDevice:hDC)
                    #else
                        StartPage(oDevice:hDC)
                        hMeta := GetEnhMetaFile(aFiles[nFor])
                        PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                        DeleteEnhMetafile(hMeta)
                        EndPage(oDevice:hDC)               
                     #endif   
                  elseif nItem = 2              // Even Pages
                          if mod(nTipoImp,2)=0
                             #ifdef __CLIPPER__
                                StartPage(oDevice:hDC)
                                hMeta := GetMetaFile(aFiles[nFor])
                                PlayMetaFile( oDevice:hDC, hMeta )
                                DeleteMetafile(hMeta)
                                EndPage(oDevice:hDC)
                             #else
                                StartPage(oDevice:hDC)
                                hMeta := GetEnhMetaFile(aFiles[nFor])
                                PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                                DeleteEnhMetafile(hMeta)
                                EndPage(oDevice:hDC)               
                             #endif   
                          endif
                  elseif nItem = 3              // Odd Pages
                          if mod(nTipoImp,2)=1
                             #ifdef __CLIPPER__
                                StartPage(oDevice:hDC)
                                hMeta := GetMetaFile(aFiles[nFor])
                                PlayMetaFile( oDevice:hDC, hMeta )
                                DeleteMetafile(hMeta)
                                EndPage(oDevice:hDC)
                             #else
                                StartPage(oDevice:hDC)
                                hMeta := GetEnhMetaFile(aFiles[nFor])
                                PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                                DeleteEnhMetafile(hMeta)
                                EndPage(oDevice:hDC)               
                             #endif   
                          endif
                   endif
                   ++nTipoImp
              NEXT
          NEXT

     case nOption == 2                           // Current page

          FOR nXCopia := 1 to nCopias
              StartPage(oDevice:hDC)
              hMeta := oMeta1:hMeta
              #ifdef __CLIPPER__
                 PlayMetaFile( oDevice:hDC, hMeta )
              #else   
                 PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
              #endif   
              EndPage(oDevice:hDC)
          NEXT

     case nOption == 3                           // Range

          FOR nXCopia := 1 to nCopias
              nTipoImp := nFirst
              FOR nFor := nPageIni TO nPageEnd
	           if nItem = 1                  // All Pages
                 StartPage(oDevice:hDC)
                 #ifdef __CLIPPER__
                    hMeta := GetMetaFile(aFiles[nFor])
                    PlayMetaFile( oDevice:hDC, hMeta )
                    DeleteMetafile(hMeta)
                 #else   
                    hMeta := GetEnhMetaFile(aFiles[nFor])
                    PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                    DeleteEnhMetafile(hMeta)
                 #endif   
                 EndPage(oDevice:hDC)
              elseif nItem = 2              // Even Pages
                     if mod(nTipoImp,2)=0
                        StartPage(oDevice:hDC)
                        #ifdef __CLIPPER__
                           hMeta := GetMetaFile(aFiles[nFor])
                           PlayMetaFile( oDevice:hDC, hMeta )
                           DeleteMetafile(hMeta)
                        #else   
                           hMeta := GetEnhMetaFile(aFiles[nFor])
                           PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                           DeleteEnhMetafile(hMeta)
                        #endif   
                        EndPage(oDevice:hDC)
                     endif
              elseif nItem = 3              // Odd Pages
                     if mod(nTipoImp,2)=1
                        StartPage(oDevice:hDC)
                        #ifdef __CLIPPER__
                           hMeta := GetMetaFile(aFiles[nFor])
                           PlayMetaFile( oDevice:hDC, hMeta )
                           DeleteMetafile(hMeta)
                        #else   
                           hMeta := GetEnhMetaFile(aFiles[nFor])
                           PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                           DeleteEnhMetafile(hMeta)
                        #endif   
                        EndPage(oDevice:hDC)
                     endif
              endif
              ++nTipoImp
              NEXT
          NEXT

     endcase

     EndDoc(oDevice:hDC)

     CursorArrow()

     if oDlg != nil
          oDlg:End()
     endif

return nil
Logicamente que debes cambiar la Prev32.dll y poner los dichos controles.

A ver si te sirve (y a los otros que lo desean)

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
Post Reply