Software "Imprimirlo más tarde"

Software "Imprimirlo más tarde"

A veces, cuando trabajo en mi computadora portátil, quiero poner en cola algunos documentos para imprimirlos más tarde, ya que no estoy conectado a una impresora en ese momento.

Sin embargo, las colas de impresión reales no están diseñadas para esto; Inmediatamente intentan imprimir el documento y, de repente, comienzan a imprimir tan pronto como me conecto a la red, lo cual generalmente no es lo que quiero hacer. Además, a veces quiero cambiar el orden de los documentos en la cola, lo cual no es muy fácil, especialmente una vez que algunos de ellos han comenzado a imprimirse.

Además, a veces la impresión falla porque, por ejemplo, la impresora se queda sin papel o tóner y quiero volver a imprimir el documento en una impresora diferente. Esto no es sencillo con, por ejemplo , CUPSo system-config-printer; Generalmente tengo que regresar, volver a abrir el lector de PDF y empezar de nuevo. Ninguno de los lectores de PDF que conozco te permite mantener una lista de documentos para imprimir más tarde, pero esta podría ser una característica oculta de un lector de PDF en algún lugar que no conozco.

De todos modos, esto es lo que quiero poder hacer:

  • Especifique una lista de archivos PDF que quiero imprimir.
  • Mantenga esa lista en el disco para poder cerrar la aplicación o reiniciar sin perder la lista completa.
  • Especifique las impresoras a las que quiero enviarlos por adelantado sin estar realmente conectado a esas impresoras en ese momento.
  • Especifique opciones de impresión como color, dúplex y número de copias.
  • Cambie esas asignaciones de impresora y opciones de impresión más adelante.
  • Espere hasta que presione un botón o ejecute un comando para imprimir los documentos.
  • Mantenga una lista separada de los documentos que ya se han impreso, en caso de que la impresión no funcione o quiera reimprimirlos más tarde.

Sé que podría piratear algo junto con un script de shell lpry una lista de rutas en un archivo de texto, pero no puedo evitar sentir que este problema ya se ha resuelto de una manera más sólida y elegante.

Puntos extra:

  • No es necesario que los documentos estén abiertos en un lector de PDF. Quiero imprimirlos, no explorarlos, y no hay razón para que sean la misma aplicación.
  • Más de una lista.
  • También funciona con Postscript, DjVu y otros formatos de descripción de páginas.
  • Arrastra y suelta desde los administradores de archivos.

¿Alguna sugerencia?

Respuesta1

Lo que hago es lo siguiente: no es tan versátil como me pediste, pero funciona casi bien. Necesita tener todas sus impresoras definidas y luego necesita estos dos scripts:

  1. stop_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsdisable "$i"
        echo " " paused.
    done
    
  2. start_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsenable "$i"
        echo " " restarted.
    done
    

Tienes que ponerlos en tu camino (por ejemplo ~/bin) y hacerlos ejecutables con chmod +x.ADVERTENCIA: No tengo ninguna impresora con espacios en sus nombres. Los scripts no se prueban en ese caso (pero estoy seguro de que uno de nuestros gurús de scripts de shell arreglará los scripts en un instante ;-)...)

Ahora puedes emitir:

[romano:~] % stop_printers
Printer PDF:  paused.
Printer ColorDEA:  paused.
Printer Deskjet_6980:  paused.
Printer fotocop5:  paused.

Y podrás imprimir desde donde quieras, la impresora quedará en pausa:

impresora de evince

Puedes ver tu cola:

[romano:~] % lpq -PDeskjet_6980
Deskjet_6980 is not ready
Rank    Owner   Job     File(s)                         Total Size
1st     romano  439     Bones_3+RG.pdf — Flesh depth  125952 bytes

(AFAIK, las colas de impresión son persistentes después de los reinicios). Y cuando quieras imprimir:

[romano:~] % start_printers         
Printer PDF:  restarted.
Printer ColorDEA:  restarted.
Printer Deskjet_6980:  restarted.
Printer fotocop5:  restarted.

Al utilizarlo, lprmpuede eliminar un trabajo si es necesario; lprponer en cola un documento a través de la línea de comando, y si desea "listas" diferentes, nadie prohíbe definir la misma impresora varias veces con nombres diferentes.

También puedes reanudar cada impresora manualmente, solo es cuestión de ejecutarla cupsenable <printername>desde el indicador.

Lo que no creo que pueda hacer con esta solución es cambiar las opciones de impresión después del hecho; tendrá que quitar y volver a poner en cola el documento para esto.

Respuesta2

Mi paquete (enchufe descarado),duplexprhace algo de lo que desea e incluye funciones bash que pueden ser útiles para desarrollar su propia versión. (Está codificado en bash, por lo que debería ser relativamente fácil de modificar y lo ayudaré si puedo).

Está diseñado para emular la impresión dúplex en impresoras que no son dúplex e implementa su propia gestión sencilla de la cola de impresión. Tiene interfaces gui y cli.

La versión actual solo imprime en dúplex y solo funciona con impresoras que no son dúplex, pero se está trabajando en una nueva versión que manejará impresoras con hardware dúplex, que esencialmente es solo administración de impresoras y colas sin el software de emulación dúplex. (Tengo una versión alfa disponible de un script que ya funciona si alguien quiere contactarme directamente a través del proyecto, etc.)

El sistema imprime en la impresora predeterminada actual, pero los scripts dplx y dúplex aceptan argumentos adicionales que se pasan a lp y se pueden usar para configurar cualquier opción que lp comprenda, como impresora y otras propiedades.

Actualmente, el sistema maneja archivos PDF, PostScript y texto sin formato.

Lo único que haránoLo que debe hacer es imprimir los archivos que se crearon utilizando la opción Imprimir en archivo desdedentroAcroread. Esos archivos simplemente no funcionan con lp y nunca he podido llamar la atención de ninguna de las personas anteriores para descubrir cuáles son los problemas.

Personalmente, imprimo casi todo "sin conexión" (usando las opciones Imprimir en archivo que admiten la mayoría de las aplicaciones), incluso cuando mis impresoras están disponibles. Me ayuda a concentrarme en lo que estoy haciendo. Más tarde, cuando llego a un punto de interrupción adecuado, imprimo lotes de trabajos.

Tener una cola de impresión también es muy útil cuando quieres imprimir otra copia de algo sin tener que regenerarla y es esencial para solucionar errores de la impresora, como atascos o quedarse sin tóner.

Respuesta3

No parece haber una solución completa para este problema, pero aquí hay una función que agregué .bashrcy que es similar aLa respuesta de Romanoarriba, con la comodidad adicional de autocompletar.

all-printers() {
    if [ "$*" = "" ]
    then
        # Print usage."
        printf "Usage:\n"
        printf "all-printers start\n"
        printf "all-printers stop\n"
        return 1
    elif ! [ "$1" = "stop" -o "$1" = "start" ]
    then
        printf "Unrecognized command: $1\n"
        return 1
    fi

    cut -f 1 -d '|' /etc/printcap |
    grep -v '^#' |
    while read printer_name
    do 
        if [ "$1" = "stop" ]
        then
            cupsdisable "$printer_name"
            printf "$printer_name stopped.\n"
        elif [ "$1" = "start" ]
        then
            cupsenable "$printer_name"
            printf "$printer_name started.\n"
        fi
    done
}
complete -W 'stop start' all-printers

información relacionada