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 dos caras?

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 dos caras 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 unos cambios 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 | Expand

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 oDlgreturn nil


Y en la función PrintPrv lo hice asi:

Code: Select all | Expand

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()     endifreturn 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