Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré con Ghostscript que permite imprimir un PDF sin confirmación del usuario. Personalmente prefiero PDFtoPrinter del cual ya hasta tengo un plugin.
Veamos cómo usar Ghostscript (gswin64) para automatizar la impresión de PDF.
Instalando Ghostscript
Revisa bien las licencias para que sepas cuál versión elegir, ya que depende de tu proyecto. Las licencias se eligen en: https://artifex.com/licensing/
Una vez que hayas elegido la licencia procede a su descarga en: https://www.ghostscript.com/releases/gsdnld.html
Cuando lo hayas instalado puedes agregar la ubicación C:\Program Files\gs\gs10.04.0\bin
a la PATH para invocar a gswin64c.exe
desde cualquier lugar. Yo recomiendo hacerlo, así no tendrás que escribir la ubicación completa cuando quieras imprimir un PDF desde la línea de comandos.
Imprimir PDF
Si agregaste gswin64.exe
a la PATH, la sintaxis es:
gswin64c.exe -dBATCH -dNOPAUSE -dQUIET -sDEVICE=mswinpr2 -sOutputFile="\\spool\Nombre de la impresora" "Ubicación PDF"
En caso de que no lo hayas agregado a la PATH sería así:
C:\Program Files\gs\gs10.04.0\bin\gswin64c.exe -dBATCH -dNOPAUSE -dQUIET -sDEVICE=mswinpr2 -sOutputFile="\\spool\Nombre de la impresora" "Ubicación PDF"
Por ejemplo, para imprimir el PDF llamado Documento 5.pdf
que se encuentra en mi escritorio en la impresora llamada Microsoft Print to PDF
:
gswin64c.exe -dBATCH -dNOPAUSE -dQUIET -sDEVICE=mswinpr2 -sOutputFile="\\spool\Microsoft Print to PDF" "C:\Users\parzibyte\Desktop\Documento 5.pdf"
Si el PDF no existe nos va a dar el siguiente error:
Error: /undefinedfilename in (C:\\Users\\parzibyte\\Desktop\\Documento 5.pdfs)
Operand stack:Execution stack:
%interp_exit .runexec2 –nostringval– –nostringval– –nostringval– 2 %stopped_push –nostringval– –nostringval– –nostringval– false 1 %stopped_push
Dictionary stack:
–dict:748/1123(ro)(G)– –dict:0/20(G)– –dict:85/200(L)–
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 10.04.0: Unrecoverable error, exit code 1
Si la impresora no existe se va a mostrar un cuadro de diálogo.
Así es como puedes imprimir un PDF de manera silenciosa y sin confirmación del usuario.