Иногда, когда я работаю над своим ноутбуком, я хочу стоять в очереди несколько документов для печати позже, так как я не подключен к принтеру в то время.
Однако очереди реального принтера не разработаны для этого; они сразу пытаются распечатать документ, и все внезапно начинают печатать, как только я вхожу в сеть, которая обычно не является, что я хочу сделать. Кроме того, иногда я хочу изменить порядок документов в очереди, которая не очень легка, особенно после того как некоторые из них начали печатать.
Кроме того, иногда печатая сбои, потому что, например, принтер исчерпывает бумагу или тонер, и я хочу переиздать документ другому принтеру. Это не просто с, например. CUPS
или system-config-printer
; Я обычно должен возвращаться, вновь открыть средство чтения PDF и запускаться снова. Ни один из читателей PDF, которых я знаю, не позволил Вам сохранить список документов для печати позже, но это могло бы быть скрытой функцией читателя PDF где-нибудь, что я не знаю о.
Так или иначе вот то, что я хочу смочь сделать:
Я знаю, что мог взломать что-то вместе со сценарием оболочки, lpr
, и список путей в текстовом файле, но я не могу сдержать чувство, что эта проблема была уже решена более устойчивым и изящным способом.
Бонусные очки:
Какие-либо предложения?
Мой пакет (бесстыдный разъем), duplexpr делает часть из того, что Вы хотите, и включает функции удара, которые могут быть полезными в прокрутке Вашей собственной версии. (Это кодируется в ударе, таким образом, должно быть относительно легко изменить, и я помогу, если я могу.)
Это разработано для эмуляции двусторонней печати на недвухсторонних принтерах и реализует свое собственное простое управление очередью печати. Это имеет и gui и интерфейсы cli.
текущая версия только печатает в дуплексе и только работает с недвухсторонними принтерами, но новая версия находится в работах, которые обработают принтеры с дуплексными аппаратными средствами, которые по существу являются просто принтером и управлением очереди без дуплексного программного обеспечения эмуляции. (Я имею альфа-версию в наличии сценария, который уже работает, если кто-либо хочет связаться со мной непосредственно с помощью проекта и т.д.)
системная печать к текущему принтеру по умолчанию, но dplx и дуплексные сценарии принимают дополнительные аргументы, которые передаются альбому и могут использоваться для установки любых опций, которые альбом понимает, такие как принтер и другие свойства.
система в настоящее время обрабатывает PDF, PostScript и файлы простого текста.
одна вещь это будет не , делают распечатать файлы, которые были созданы с помощью опции Print to File от в Acroread. Те файлы просто не работают с альбомом, и я никогда не мог привлечь внимание любого из восходящих людей для выяснения, каковы проблемы.
Лично, я печатаю почти все "офлайн" (использующий опции Print to File, который большая часть поддержки приложений), даже когда мой принтер (принтеры) доступен. Это помогает мне сконцентрироваться на том, что я делаю. Позже, когда я достигаю подходящей точки останова, я печатаю пакеты заданий.
Наличие очереди печати также действительно хорошо, когда Вы хотите распечатать другую копию чего-то, не имея необходимость повторно создавать его, и это важно для контакта с ошибками принтера как заторы или исчерпывание тонера.
Кажется, нет полного решения для этой проблемы, но здесь функция, которую я добавил к моему .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
То, что я делаю, является следующим---, это не столь универсально, как Вы спросили, но это работает почти хорошо. У Вас должны быть все свои принтеры, определенные, и затем Вам нужны эти два сценария:
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
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.
И можно распечатать от того, везде, где Вы хотите, принтер будет приостановлен:
Вы видите свою очередь:
[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>
от подсказки.
то, Что я не думаю, что можно сделать с этим решением, изменяет опции печати после факта---, необходимо будет исключить из очереди и повторно ставить в очередь документ для этого.