¿Automatizar la impresión con opciones?

Estoy tratando de imprimir un archivo (un pdf), sin intervención. No es específico de Automator, puedo manejar applescript o terminal o lo que sea. Los detalles de lo que quiero son:

  • Imprimir en una impresora específica
  • Imprimir en un tamaño de página específico (no estándar)
  • Rotación automática (opcional)
  • Ajustar a escala, imprimir toda la página (Termina siendo 109 a 112 %. 110 % funciona)

Puedo hacer esto manualmente a través del menú de impresión de Vista previa, solo que el tamaño de la página no es el predeterminado, pero quiero automatizarlo, arrastrar y soltar, de alguna manera.

Cosas que probé:

  1. Si imprimo desde Finder, usa Vista previa, pero está fuera de tamaño y el tamaño de página es incorrecto.
  2. Si lo arrastro a la impresora en ~/Library/Printers/printername, es como usar LP, pero sin las opciones.
  3. Las opciones de impresión de Applescript están mal documentadas.
  4. Los "elementos del buscador de impresión" de Automator son como el número 1.
  5. "Imprimir imágenes" de Automator es como Vista previa, pero "Escalar para ajustar" no funciona como lo hace Vista previa, no puedo elegir el tamaño de página y "Rotar automáticamente" no funciona en absoluto.
  6. Si imprimo desde la terminal a través de LP o LPR, puedo configurar el tamaño de página y la orientación/ajuste a la página, pero no puedo escalarlo al 110 %. Esto es lo más parecido a lo que quiero.

¿Cómo puedo hacer esto? No debería ser tan difícil, quiero hacer lo que la GUI puede hacer, no como si quisiera funciones adicionales.

En el peor de los casos, ¿cómo puedo emular el control del mouse o del teclado del menú de impresión de Vista previa? Todo lo que se necesitaría es 1. abrir el archivo, 2. abrir el menú de impresión, 3. cambiar a un tamaño predeterminado o de página, ya que todas las demás opciones, incluida la escala, son predeterminadas , 4. presionar imprimir/ingresar.

Para emular el control del mouse o del teclado (y un montón de otras funciones sin las que se preguntará cómo ha podido vivir), puede consultar Better Touch Tool .

Respuestas (2)

Dividamos el problema en dos partes: escalado e impresión.

Escalada

Puede escalar un PDF en la línea de comando. Considere la posibilidad de crear un PDF temporal a escala para imprimir.

Consulte cómo escalar el contenido de PDF y las dimensiones de la página desde la línea de comandos para conocer los enfoques sugeridos. La respuesta más votada sugiere usar cpdf con un comando como:

cpdf -scale-page "1.1 1.1" in.pdf -o out.pdf

Una herramienta alternativa es sips. Esta herramienta se incluye con OS X y es sorprendentemente capaz.

Impresión

Como ha descubierto, el sistema de impresión de OS X es el Sistema de impresión común de Unix (CUPS). CUPS incluye la herramienta de línea de comandos lprque puede aceptar todas las configuraciones y opciones que necesita.

Para imprimir el PDF a través de la línea de comando, consulte:

Para enumerar las impresoras disponibles, utilice:

lpstat -p -d

Para imprimir un archivo PDF en la impresora predeterminada, utilice:

lpr file.pdf
¿Sería posible usar a pipey hacer todo el asunto a la vez? como: cpdf -scale-page "1.1 1.1" in.pdf | lpr ?
Con cpdfeso podría ser posible. Con sipsello tendría que ir a través de un archivo. Sospecho que un script de bash corto o incluso un droplet de AppleScript envolvería bien el comando.
Teniendo en cuenta que CPDF puede recortar y escalar en un solo comando y luego canalizar a LP, esto debería ser lo mejor para mí. Tendré que probarlo.

Lo que terminé haciendo fue usar openy osascriptjunto con una herramienta pdfcropdel usuario del foro de MacRumor, Oligarch (Wayback Machine backup to archive )

./pdfcrop /path/to/file.pdf -u in -p 6.68 1.82 -a tr -o 0.14 0.23 > ./0.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.30 1.82 -a tr -o 0.14 0.23 > ./1.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.38 1.78 -a tr -o 3.43 0.24 > ./2.pdf && \
open ./1.pdf ./2.pdf && \
osascript -e 'tell application "Finder" to delete POSIX file "'/path/to/file.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./1.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./2.pdf'"'
  1. Toma el archivo original y crea tres copias. Uno con el pdf recortado (cuadro de recorte, ninguno destructivo) que conservo, y dos recortados a tamaño (cuadro de medios) que son temporales.
  2. Luego los abre con Vista previa, como dos páginas/archivos en la misma ventana.
  3. Luego le dice a Finder a través de Applescript que elimine los archivos temporales, en un Finder, muévalos a la papelera. Lo mismo que si yo ⌘-Deletelos archivos.
  4. Una vez en Vista previa, puedo ⌘-Pimprimir ambos archivos. Lo único que debo hacer es cambiar el tamaño del papel, Preview maneja la escala.

Obviamente, no hace todo lo que quiero, pero ayuda a reducir la cantidad de recortes manuales y de ir y venir para asegurarme de que se imprima todo lo que necesito imprimir.

Dado que CPDF puede escalar y recortar, debería ser más fácil hacerlo todo a través de la línea de comandos. Solo necesito probarlo.