Bagaimana cara menambahkan printer palsu, dummy, null di CUPS?

12

Saya sedang menulis perangkat lunak yang mendukung banyak printer. Untuk mengujinya, saya perlu menambahkan beberapa printer ke server CUPS saya. Bagaimana saya bisa melakukan itu?

Saya ingin menambahkan beberapa printer palsu yang akan mengirim pekerjaan langsung ke / dev / null. Dengan begitu, saya bisa menonton daftar "pekerjaan selesai" di antarmuka CUPS dan mengamati apakah perangkat lunak saya menggunakan printer yang benar untuk setiap pekerjaan.

Denilson Sa Maia
sumber
bukankah ini benar "lpadmin -p lp0 -E -v / dev / null -m raw"
Ashika Umanga Umagiliya
1
Lihat juga membuat printer tiruan .
Wilfred Hughes

Jawaban:

11

Salah satu solusinya adalah memasang cangkir-pdf . Ia menambahkan printer virtual yang menulis file PDF. Ada beberapa tutorial di web tentang cara menginstal dan mengkonfigurasinya; sejak saya menggunakan Gentoo, saya sudah membaca Gentoo-wiki , yang juga menyebutkan wiki Sabayon .

piala-pdf printer virtual memiliki file konfigurasi /etc/cups/cups-pdf.conf, dan secara default semua file PDF ditulis /var/spool/cups-pdf/${USER}.

(NB: Di Ubuntu ia menulis ke ~ / PDF /)

Namun ada beberapa batasan:

  • Karena hanya ada satu file konfigurasi, beberapa printer PDF akan disimpan ke direktori yang sama.

  • Tidak mungkin untuk mencetak data "mentah" (menggunakan, misalnya, lpr -o raw). Bahkan mengirim file PDF sebagai pekerjaan mentah tidak akan berhasil. Pekerjaan cetak mentah akan menghasilkan file PDF kosong hanya dengan halaman kosong.

Bahkan dengan keterbatasan ini, itu berfungsi dengan baik untuk kebutuhan saya.


Catatan Kaki: jika pengguna menggunakan Gnome, atau mencetak melalui aplikasi GTK +, maka sudah ada pseudo-printer "Cetak ke File" pada dialog cetak. Jadi, mengapa pengguna tetap ingin menambahkan printer PDF virtual? Berikut ini beberapa alasan:

  • "Cetak ke File" itu khusus untuk GTK +, dan tidak tersedia untuk aplikasi non-GTK +. (mungkin KDE memiliki fitur serupa, tapi saya tidak yakin)
  • Memungkinkan untuk membuat PDF dari "aplikasi" Flash yang dirancang untuk dicetak. Misalnya, PocketMod .
  • Menambahkan printer virtual ke CUPS memungkinkan pengujian pengujian menggunakan skrip shell atau perangkat lunak lain yang berbicara langsung dengan CUPS. Ini berguna khusus untuk pengembang saat menguji aplikasi mereka.
  • Dimungkinkan untuk "berbagi" printer virtual ini dengan jaringan lokal. Tidak sepenuhnya bermanfaat, tetapi mungkin.
  • Dimungkinkan untuk melampirkan perintah pasca-pemrosesan untuk dieksekusi tepat setelah file PDF telah disimpan.
Denilson Sa Maia
sumber
9

Forum Piala memiliki jawaban yang lebih lengkap / akurat untuk pertanyaan ini.

Jawabannya adalah perangkat URI harus diatur ke file: / dev / null

Jadi dalam pengaturan Ubuntu saya:

  • Perangkat URI: file: / dev / null
  • Membuat dan Model: Printer Mentah Lokal

Yang bekerja untuk saya dengan sempurna.

Saya mencari di forum Piala lagi dan menemukan ini:

Setup Printer Null Commandline di Forum Piala

Di cupsd.conf Anda:

FileDevice yes

Setup Printer

lpadmin -p nowhere -E -v file:/dev/null

Menguji Printer

who |lp -d nowhere
Andrew Russell
sumber
Saya hanya melihat cetakan saya sekarang: detail halus, warna-warna cerah itu langsung melompat dari halaman pada saya. ... hey waitaminute ....
Andrew Russell
Terima kasih. Saya membutuhkan printer tiruan di Mesin Virtual saya untuk screenshot beberapa instruksi. :)
njallam
7

Anda dapat membuat printer yang output untuk /dev/nulldengan lpadmin:

$ sudo lpadmin -p myprinter -E -v file:///dev/null

Ini akan ditulis untuk /etc/cups/printers.conf, tetapi Anda juga dapat melihat printer dengan lpstat:

$ sudo lpstat -s
myprinter accepting requests since Thu 22 Jan 2015 11:04:46 AM GMT
system default destination: myprinter
device for myprinter: ///dev/null

Perhatikan bahwa Anda mungkin perlu mengaktifkan FileDevice di /etc/cups/cupsd.conf pada distro Linux lama .

Untuk menjadikan printer baru Anda sebagai default, gunakan lpoptions:

$ sudo lpoptions -d myprinter
Wilfred Hughes
sumber
Bagaimana cara menghapusnya?
Richard
@Richard Use lpadmin -x myprinteratau antarmuka web.
Torkel Bjørnson-Langen
2

Salah satu solusi terbaik adalah menggunakan ippserver. Muncul dengan CUPSv2.2.2dan lebih tinggi. Anda juga bisa mendapatkan proyek dari sini: Implementasi sampel IPP .

Menurut deskripsi pada halaman manual :

ippserver adalah server Internet Printing Protocol (IPP) sederhana yang sesuai dengan spesifikasi IPP Everywhere dan IPP Shared Infrastructure Extensions (INFRA). Ini dapat digunakan sebagai server cetak mandiri dan / atau server infrastruktur yang sangat mendasar antara klien IPP standar dan proksi IPP yang sesuai dengan spesifikasi INFRA.

Untuk menggunakannya, yang perlu Anda lakukan adalah menjalankan ippserver "My cool printer", dan itu akan membuat printer virtual dengan nama My cool printeruntuk Anda. Ini berjalan seperti server web dan mendengarkan pada port tertentu.

Jika Anda membutuhkan banyak printer, Anda dapat menjalankan server pada banyak port menggunakan ippserver "My other cool printer" -p 8888.

Anda bahkan dapat menyediakan atribut printer menggunakan file atribut. Misalnya, printer Anda mendukung cetakan berkualitas tinggi secara default, Anda dapat menambahkan atribut berikut dalam file atribut:

ATTR enum print-quality-default high

dan jalankan server menggunakan:

ippserver "My high quality cool printer" -a attributes-file.txt

Referensi:

  1. Sampel PWG IPP
  2. Halaman manual CUPS ipptoolfile
Sahil Arora
sumber
1

Diambil dari http://inai.de/linux/adm_virtualprinter :

Printer virtual dalam CUPS

Untuk membuat printer di CUPS yang mengirimkan data tidak ada (seperti /dev/null), ada banyak cara. Halaman ini menggunakan socket:// metode ini.

Siapkan xinetd terlebih dahulu

Yang kita butuhkan adalah layanan TCP Discard pada port 9. Xinetd sudah built-in, jadi kita bisa menggunakannya. Pastikan bahwa definisi berikut tersedia dalam file konfigurasi xinetd, biasanya /etc/xinetd.d/discard. Itu harus berisi layanan seperti berikut:

    buang layanan
        type = INTERNAL
        id = buang-aliran
        socket_type = stream
        protokol = tcp
        pengguna = root
        tunggu = tidak
        disable = no
        BENDERA = IPv6 IPv4 
Jalankan rcxinetd reloaduntuk membaca kembali file konfigurasi dan mengaktifkan discardlayanan baru . Atau gunakan rcxinetd startjika xinetd belum aktif.

Printer CUPS

Sekarang buka frontend web CUPS dan tambahkan printer baru. Sebagai tujuan, gunakan socket://localhost:9/, sebagai printer memilih sesuatu yang tampak fitur, misalnya "HP 2500C Foomatic / pcl3". Hanya itu yang ada untuk itu.

Ramblar Golar
sumber