Page 1 of 1

Enviar .pdf directo a la impresora

Posted: Tue Aug 27, 2024 8:25 pm
by edufloriv
Saludos amigos,

Estoy tratando de enviar archivos .pdf directo a la impresora por defecto, pero mi código ya no funciona, he probado con todas estas opciones:

Code: Select all

*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC Cotizacion_PdfPrint( nOperId , cDocNum , cDocFec )

LOCAL dEmision , cPdfTipo , cPdfRuta , cPdfFile , cPrinter

   IF nOperId > 0
      dEmision := CTOD( cDocFec )
      cPdfRuta := PATHCPE + STR(YEAR(dEmision),4) + '\' + STRZERO(MONTH(dEmision),2) + '\' + STRZERO(DAY(dEmision),2)
      cPdfFile := cPdfRuta + "\" + SIS_RUC + "_00_" + cDocNum + ".pdf"
      IF FILE(cPdfFile)
         cPrinter := GetDefaultPrinter()
         msginfo( cPdfFile + chr(13) + cPrinter )
//         ShellExecute( GetDesktopWindow() , 'printto' , cPdfFile , '"' + cPrinter + '"' , "" , 7 )
//         ShellExecute( 0 , 'printto' , cPdfFile , '"' + cPrinter + '"' ,  , 0 )
         ShellExecute( 0 , "printto" , '"' + cPdfFile + '"' , '"' + cPrinter + '"' , 0 , 0 )
//         wapi_ShellExecute( 0, 'printto' , cPdfFile , cPrinter , , 0 ) 
         MSGINFO( '.pdf enviado a la impresora.')
      ELSE
         msginfo("No existe el archivo "+cPdfFile)
      ENDIF
   ENDIF

RETURN
No me lanza ningún error, siempre termina mostrándome el mensaje ".pdf enviado a la impresora" pero en la impresora no sale nada. Tampoco aparece el documento en la cola de impresión. Si envío una página de prueba desde el menú "Propiedades de la impresora" imprime bien, así que esta descartado que sea problema de configuración. Debo mencionar también que es una impresora compartida instalada fisicamente en otra pc en red. Compilo con HMG 3.5

A la espera de sus comentarios, reciban un cordial saludo amigos.

Re: Enviar .pdf directo a la impresora

Posted: Wed Aug 28, 2024 6:11 am
by edk
Comprueba que las variables cPrinter y cPDFfile toman los valores correctos, luego comprueba cuál es el programa por defecto para abrir archivos PDF y comprueba que puedes imprimir el documento desde el menú contextual del archivo pdf. Prueba a establecer Acrobat Reader como programa predeterminado para los archivos PDF.
Comprueba qué valor devuelve la función ShellExecute, si está por debajo del valor 32 significa error: https://learn.microsoft.com/en-us/windo ... llexecutea
Prueba a cambiar «printto» por «print». Recuerda que la variable cPdfFile debe contener la ruta completa al archivo pdf.
Si estás imprimiendo en la impresora por defecto no necesitas especificarla como parámetro, prueba:

Code: Select all

msgdebug ( ShellExecute( Nil , "print" , '"' + cPdfFile + '"' , , Nil , Nil ) )