Kabuk betiğini sanal yazıcı olarak kullanma


10

Bir PDF dosyasını bağımsız değişken olarak alan ve ek yazıcıya özel seçeneklerle basan bir kabuk komut dosyası var. Bu komut dosyasını GUI'den seçilebilen sanal bir yazıcı olarak nasıl ekleyebilirim?

Kabuk betiği, bir PDF dosyası alan, çift sayfaları yazdıran, kullanıcıdan sayfaları çevirmesini isteyen ve daha sonra tek sayfaları basan bir kullanıcı istemi veren manuel bir dubleks betiğidir.

Mevcut iş akışım:

  1. Dosya -> Yazdır -> Dosyaya kaydet -> tmp.pdf
  2. my_duplex_script tmp.pdf
  3. rm tmp.pdf

Bunu yapmanın herhangi bir yolu var mı:

  1. Dosya -> Yazdır -> my_script_as_virtual_printer

Not: Bu Linux nane 13 tarçın. Denedim gnome-manual-duplexama benim için çalışmıyor.


PDF dosyasına yazdırabileceğim GUI iletişim kutusu Standart GTK yazdırma iletişim kutusu

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

Yanıtlar:


2

Ben bunu hiç denemedim ama tea4cupssen-ebilmek denemek sen-ebil yapmak sen-ebil yapmak sen-ebil yapmak sen-ebil yapmak bir önyükleme sen-ebilmek uygulamak sen-ebil yapmak sen-ebil yapmak sen baskı. Daha sonra bu baskının iptal edilmesini sağlayabilir ve aslında bardaklarla gerçek bir yazıcıya gitmezsiniz, betiğinizin bunun yerine baskıyı yapmasına izin verebilirsiniz.

alıntı

İmkanlar sonsuzdur :

  • Aynı işi CUPS ile mümkün olmayan birkaç yazıcıya aynı anda gönderin.
  • Tüm yazdırma işlerinin PDF arşivlemesini otomatikleştirin.
  • Yinelenen yazdırma işlerini yasakla (örnek yapılandırma dosyasında basit bir örnek gösterilir)
  • 15 dakikada yazdırma muhasebe çözümü oluşturun (EVET, BU GERÇEKTİR)
  • vb...

Tea4cups aşağıdakileri kolaylaştırır:

Tea4CUPS komutları başlatmak için üç yol sunar:

  • filtreler: Bir filtre, giriş verilerini yazıcıya gönderilmeden veya aşağıda tanımlanan ön ve son kancalara sunulmadan önce değiştirebilir. Şu anda yazdırma kuyruğu başına tek bir filtre tanımlanabilir.
  • prehooks: yazdırma işi gerçek yazıcıya gönderilmeden önce bunların başlatılması garanti edilir. -1'den çıkan tüm kancalar yazdırma işini iptal edebilir. Belirli bir yazdırma kuyruğu için herhangi bir sayıda ön kanca tanımlanabilir.
  • posthooks: daha önce bir ön kanca ile iş iptal edilmedikçe, bunların baskı işi gerçek yazıcıya gönderildikten sonra başlatılması garanti edilir. Belirli bir yazdırma kuyruğu için istediğiniz sayıda posthook tanımlanabilir.

2

Bu komut dosyasını GUI'den seçilebilen sanal bir yazıcı olarak nasıl ekleyebilirim?

Reklama sanal yazıcı, tıpkı düzenlemek /etc/printcap. Bu çok kolay değil, çünkü PRINTCAP sözdiziminin alışması gerekiyor.

Bunun nasıl yapılacağına bir örnek burada Samba ile PDF Hizmeti gösterilmiştir :

# /etc/printcap
# PDF Service entry

lp|pdf|PDF Printer:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/pdf:\
        :af=/var/spool/lpd/pdf/acct:\
        :mx#0:sh:\
        :if=/usr/bin/smbprint:

Burada /usr/bin/smbprintkomut dosyası bir baskı filtresi olarak kullanılır. Yazıcının kendisi /dev/null.

Belki yüklemeniz gerekir cups-bsd, ancak genellikle varsayılan yapılandırmadır.


printcapBSD lpr veya lprNG için yapılandırma dosyası olduğunu unutmayın, günümüzde fiili standart olan ve Mint'de standart olan CUPS için değil.
Gilles 'SO- kötü olmayı kes'

Bu nedenle cups-bsd, Mint'te de bulunan paketin varsayılan olarak yüklü ve iyi desteklenmiş olduğundan bahsettim . cups-bsdlprng değil! Baskı için kullanılan uygulamaları lpr(örn. Xpdf) desteklemek için Bardaklar için BSD baskısının işlevselliğini sağlayan yalnızca bir sarıcıdır.

0

Partiye geç, ama aynı şeyi yapmak istedim ve başka bir çözüm bulamadım.

Burada nasıl çözdüğümü yazacağım, belki diğerleri çözümü faydalı bulacaktır.

  • yazdırılacak dosyayı yakalamak için bardaklara filtre uyguladı
  • dosyayı yazdırmak için bir arka uç yaptı
  • güzel ve kolay bir yükleyici yaptı.

kaynak kodu github'da: https://github.com/dentys03/manual_duplex_linux

Herhangi bir HP yazıcıda çalışması gerekir. Sanırım diğer yazıcılar için kolayca uyarlanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.