Mam skrypt powłoki, który pobiera plik PDF jako argument i drukuje go z dodatkowymi opcjami specyficznymi dla drukarki. Jak mogę dodać ten skrypt jako drukarkę wirtualną, którą można wybrać z GUI?
Skrypt powłoki to ręczny skrypt dupleksowy, który pobiera plik PDF, drukuje parzyste strony, wyświetla polecenie użytkownika za pomocą zenity, prosząc użytkownika o przewrócenie stron, a następnie drukuje strony nieparzyste.
Mój obecny przepływ pracy to:
- Plik -> Drukuj -> Zapisz w pliku -> tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
Czy można to zrobić jako:
- Plik -> Drukuj -> my_script_as_virtual_printer
Uwaga: To jest na Linux cynamon mięty 13. Próbowałem, gnome-manual-duplex
ale to nie działa dla mnie.
Okno dialogowe GUI, z którego mogę wydrukować do pliku 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
źródło
printcap
jest to plik konfiguracyjny dla BSD lpr lub lprNG, a nie dla CUPS, który jest obecnie de facto standardem i jest standardem dla Mint.cups-bsd
pakiecie, który jest również dostępny w Mint, domyślnie zainstalowany i dobrze obsługiwany.cups-bsd
nie jest lprng! Jest to tylko opakowanie, które zapewnia funkcjonalność drukowania BSD dla Cups w celu obsługi aplikacji używającychlpr
do drukowania (np. Xpdf).Późno na imprezę, ale chciałem zrobić to samo i nie znalazłem innego rozwiązania.
Napiszę tutaj, jak to rozwiązałem, być może inni uznają to rozwiązanie za przydatne.
kod źródłowy znajduje się na github: https://github.com/dentys03/manual_duplex_linux
Powinien działać na dowolnej drukarce HP. Chyba łatwo przystosowane do innych drukarek.
źródło