Программное обеспечение “Print it later”

Иногда, когда я работаю над своим ноутбуком, я хочу стоять в очереди несколько документов для печати позже, так как я не подключен к принтеру в то время.

Однако очереди реального принтера не разработаны для этого; они сразу пытаются распечатать документ, и все внезапно начинают печатать, как только я вхожу в сеть, которая обычно не является, что я хочу сделать. Кроме того, иногда я хочу изменить порядок документов в очереди, которая не очень легка, особенно после того как некоторые из них начали печатать.

Кроме того, иногда печатая сбои, потому что, например, принтер исчерпывает бумагу или тонер, и я хочу переиздать документ другому принтеру. Это не просто с, например. CUPS или system-config-printer; Я обычно должен возвращаться, вновь открыть средство чтения PDF и запускаться снова. Ни один из читателей PDF, которых я знаю, не позволил Вам сохранить список документов для печати позже, но это могло бы быть скрытой функцией читателя PDF где-нибудь, что я не знаю о.

Так или иначе вот то, что я хочу смочь сделать:

  • Укажите список PDFs, который я хочу распечатать.
  • Сохраните тот список на диске так, чтобы я мог закрыть приложение или перезагрузку, не теряя весь список.
  • Укажите принтер (принтеры), к которому я хочу отправить им заранее, не будучи на самом деле подключенным к тем принтерам в то время.
  • Укажите параметры печати как цвет, дуплекс и количество копий.
  • Измените те присвоения принтера и распечатайте опции позже.
  • Ожидайте, пока я не нажму кнопку или выполню команду для фактической печати документа (документов).
  • Сохраните отдельный список документов, которые были уже распечатаны, в случае, если печать не работает, или я хочу переиздать их позже.

Я знаю, что мог взломать что-то вместе со сценарием оболочки, lpr, и список путей в текстовом файле, но я не могу сдержать чувство, что эта проблема была уже решена более устойчивым и изящным способом.

Бонусные очки:

  • Не требуйте, чтобы документы были открыты в читателе PDF. Я хочу распечатать их, не просмотреть их, и нет никакой причины, они должны быть тем же приложением.
  • Больше чем один список.
  • Также работа для Постскриптума, DjVu и других форматов описания страницы.
  • Перетаскивание из файловых менеджеров.

Какие-либо предложения?

12
задан 14 July 2015 в 01:07

3 ответа

Мой пакет (бесстыдный разъем), duplexpr делает часть из того, что Вы хотите, и включает функции удара, которые могут быть полезными в прокрутке Вашей собственной версии. (Это кодируется в ударе, таким образом, должно быть относительно легко изменить, и я помогу, если я могу.)

Это разработано для эмуляции двусторонней печати на недвухсторонних принтерах и реализует свое собственное простое управление очередью печати. Это имеет и gui и интерфейсы cli.

текущая версия только печатает в дуплексе и только работает с недвухсторонними принтерами, но новая версия находится в работах, которые обработают принтеры с дуплексными аппаратными средствами, которые по существу являются просто принтером и управлением очереди без дуплексного программного обеспечения эмуляции. (Я имею альфа-версию в наличии сценария, который уже работает, если кто-либо хочет связаться со мной непосредственно с помощью проекта и т.д.)

системная печать к текущему принтеру по умолчанию, но dplx и дуплексные сценарии принимают дополнительные аргументы, которые передаются альбому и могут использоваться для установки любых опций, которые альбом понимает, такие как принтер и другие свойства.

система в настоящее время обрабатывает PDF, PostScript и файлы простого текста.

одна вещь это будет не , делают распечатать файлы, которые были созданы с помощью опции Print to File от в Acroread. Те файлы просто не работают с альбомом, и я никогда не мог привлечь внимание любого из восходящих людей для выяснения, каковы проблемы.

Лично, я печатаю почти все "офлайн" (использующий опции Print to File, который большая часть поддержки приложений), даже когда мой принтер (принтеры) доступен. Это помогает мне сконцентрироваться на том, что я делаю. Позже, когда я достигаю подходящей точки останова, я печатаю пакеты заданий.

Наличие очереди печати также действительно хорошо, когда Вы хотите распечатать другую копию чего-то, не имея необходимость повторно создавать его, и это важно для контакта с ошибками принтера как заторы или исчерпывание тонера.

1
ответ дан 23 November 2019 в 03:42

Кажется, нет полного решения для этой проблемы, но здесь функция, которую я добавил к моему .bashrc, который подобен ответ Rmano выше с дополнительным удобством автоматического заполнения.

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
0
ответ дан 23 November 2019 в 03:42

То, что я делаю, является следующим---, это не столь универсально, как Вы спросили, но это работает почти хорошо. У Вас должны быть все свои принтеры, определенные, и затем Вам нужны эти два сценария:

  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
    

необходимо поместить их в путь (например ~/bin) и сделать их исполняемым файлом с chmod +x. ПРОТЕСТ : у Меня нет принтера с пробелами на их имена. Сценарии не тестируются в этом случае (но я уверен, что один из гуру нашего сценария оболочки исправит сценарии во флэш-памяти ;-)...)

Теперь, можно выйти:

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

И можно распечатать от того, везде, где Вы хотите, принтер будет приостановлен:

printer from evince

Вы видите свою очередь:

[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, очереди печати являются персистентными через перезагрузки). И когда Вы хотите распечатать:

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

Используя lprm можно удалить задание, если Вы должны; lpr для постановки в очередь документа через командную строку, и если Вы хотите различные "списки" никто не запрещает определение того же принтера несколько раз с различными именами.

можно также возобновить каждый принтер вручную, это - просто вопрос выполнения cupsenable <printername> от подсказки.

то, Что я не думаю, что можно сделать с этим решением, изменяет опции печати после факта---, необходимо будет исключить из очереди и повторно ставить в очередь документ для этого.

10
ответ дан 23 November 2019 в 03:42

Другие вопросы по тегам:

Похожие вопросы: