У меня есть сценарий оболочки, который принимает файл PDF в качестве аргумента и распечатывает его с дополнительными параметрами принтера. Как я могу добавить этот скрипт в качестве виртуального принтера, который можно выбрать из графического интерфейса?
Сценарий оболочки представляет собой ручной дуплексный сценарий, который принимает файл PDF, печатает четные страницы, выдает пользователю приглашение с помощью zenity, прося пользователя перевернуть страницы, а затем распечатывает нечетные страницы.
Мой текущий рабочий процесс:
- Файл -> Печать -> Сохранить в файл -> tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
Есть ли способ сделать это так:
- Файл -> Печать -> my_script_as_virtual_printer
Примечание: это на Linux mint 13 cinnamon. Я пытался, gnome-manual-duplex
но это не работает для меня.
Диалоговое окно с графическим интерфейсом, из которого я могу печатать в файл PDF
my_duplex_script
#!/bin/bash
lp_args=
while getopts o: opt
do
case "$opt" in
o) lp_args="$lp_args -o $OPTARG" ;;
\?) echo >&2 Invalid argument; exit 1 ;;
esac
done
shift `expr $OPTIND - 1`
file=$1
page_count=$(pdfinfo "$file" | grep Pages | awk '{print $2}')
is_odd=`expr $page_count % 2`
if [ $is_odd -eq 1 ]
then
#outputting blank
echo | lp -s -t "$file"-blank
fi
#printing even reversed
lp -s -o page-set=even -o outputorder=reverse $lp_args -t "$file"-even "$file"
if zenity --question --text="Flip and reinsert the entire stack when printing has finished." --ok-label="Proceed" --cancel-label="Cancel"
then
#printing odd reversed
lp -s -o page-set=odd -o outputorder=reverse $lp_args -t "$file"-odd "$file"
else
echo >&2 User abort
exit 1
fi
exit 0
источник
printcap
это файл конфигурации для BSD lpr или lprNG, а не для CUPS, который в настоящее время является стандартом де-факто и является стандартом для Mint.cups-bsd
пакет, который также доступен на Mint, установлен по умолчанию и также хорошо поддерживается.cups-bsd
это не lprng! Это только оболочка, которая обеспечивает функциональность печати BSD для чашек, чтобы поддерживать приложения, которые используютlpr
для печати (например, xpdf).Поздно на вечеринку, но я хотел сделать то же самое, и я не нашел никакого другого решения.
Я напишу здесь, как я решил это, возможно, другие найдут решение полезным.
Исходный код находится на GitHub: https://github.com/dentys03/manual_duplex_linux
Он должен работать на любом принтере HP. Я думаю, легко адаптируется для других принтеров.
источник