Estimado Armando,
FiveWin s铆 proporciona funciones para controlar la impresi贸n duplex (doble cara) desde la aplicaci贸n. No es solo cuesti贸n de la impresora.
Funciones disponibles en FiveWin
1. IsDuplexPrinter()
Verifica si la impresora seleccionada soporta impresi贸n a doble cara. Internamente revisa el flag DM_DUPLEX en la estructura DEVMODE del driver:
hb_retl( lpDevMode->dmFields & DM_DUPLEX );
2. PrnDuplex( nValue )
Permite obtener y establecer el modo duplex. Si se pasa un par谩metro, establece el valor; siempre retorna el valor anterior:
HB_FUNC( PRNDUPLEX ) // ( nValue ) --> nOldValue
{
...
dmDuplex = lpDevMode->dmDuplex;
if( hb_pcount() > 0 )
lpDevMode->dmDuplex = ( short ) hb_parni( 1 );
hb_retni( dmDuplex );
...
}
Los valores posibles para nValue son las constantes de Windows:
- DMDUP_SIMPLEX (1) - una sola cara
- DMDUP_VERTICAL (2) - doble cara, volteo por el borde largo
- DMDUP_HORIZONTAL (3) - doble cara, volteo por el borde corto
3. DeviceCapabilities() con DC_DUPLEX
Tambi茅n puede consultar las capacidades del dispositivo directamente, como muestra el ejemplo en samples/misc/devcaps.prg:
#define DC_DUPLEX 7
if DeviceCapabilities( "Epson Stylus Color", DC_DUPLEX ) == 0
MsgInfo( "No DC_DUPLEX supported by this driver" )
endif
Resumen
Hay dos condiciones que deben cumplirse:
- La impresora debe soportar duplex (hardware). Esto se verifica con IsDuplexPrinter() o DeviceCapabilities().
- La aplicaci贸n debe activar el modo duplex (software). Esto se hace llamando a PrnDuplex( nValue ) antes de imprimir, y luego ResetDC() para aplicar el cambio al DC de la impresora. 0-cite-3
Un ejemplo de uso ser铆a:
PRINT oPrn NAME "Mi Documento" PREVIEW
if IsDuplexPrinter()
PrnDuplex( 2 ) // DMDUP_VERTICAL - doble cara borde largo
oPrn:ResetDC()
endif
PAGE
// ... contenido p谩gina 1 ...
ENDPAGE
PAGE
// ... contenido p谩gina 2 (se imprimir谩 al reverso) ...
ENDPAGE
ENDPRINT
En conclusi贸n: no basta con que la impresora soporte duplex; su aplicaci贸n debe indicarle expl铆citamente al driver que active ese modo usando las funciones que FiveWin ya provee.