Halaman ini berisi detail project penulisan teknis yang diterima untuk Google Season of Docs.
Ringkasan proyek
- Organisasi open source:
- The Linux Foundation
- Penulis teknis:
- PIYUSHgoyal16
- Nama proyek:
- Tutorial dan Panduan Desain untuk Driver Printer/Pemindai di Aplikasi Printer
- Durasi project:
- Durasi standar (3 bulan)
Project description
Ringkasan
Driver printer klasik yang terdiri dari filter khusus printer dan file PPD (Postscript Printer Description, menjelaskan kemampuan printer dan filter yang akan dipanggil) yang harus ditempatkan di direktori tertentu dalam sistem file diganti dengan yang disebut Aplikasi Printer, yaitu emulasi printer jaringan IPP.
Sebagian besar printer serbaguna modern adalah printer IPP yang memungkinkan pencetakan tanpa driver. Mereka mengiklankan diri melalui DNS-SD, klien dapat melakukan polling informasi kemampuan mereka melalui permintaan IPP, dan menggunakan format data standar untuk tugas pencetakan. Printer yang tidak menyediakan fungsi ini, biasanya printer lama atau khusus, memerlukan driver printer.
Aplikasi Printer adalah daemon yang mendeteksi printer yang didukung dan mengiklankan printer tersebut di localhost sebagai printer IPP Everywhere. Aplikasi Printer berisi software untuk mencetak tugas yang masuk di printer yang didukungnya, mengonversi data ke bahasa asli printer, dan memberikan info tentang kemampuan printer kepada klien jika diminta. Aplikasi Printer bahkan memiliki antarmuka administrasi web, seperti printer jaringan yang sebenarnya.
Seperti yang kita ketahui, Linux beralih ke paket dengan sandbox (misalnya Snap) dan pencetakan juga beralih ke arah tersebut. Dalam paket dengan sandbox, kita tidak dapat mengubah konten direktori setelah di-build. Sistem kita tidak lagi modular. Kami tidak dapat memilih paket driver printer yang akan diinstal. Aplikasi Printer mengatasi masalah modularitas ini dan memberi kita kebebasan yang sama seperti dalam kasus driver printer.
Driver printer dan pemindai di Snap tidak hanya merupakan persyaratan untuk CUPS yang di-snap dan aplikasi yang di-snap, tetapi juga berfungsi di sistem yang sepenuhnya klasik, tetapi berbeda dengan driver yang dikemas secara klasik, driver ini tidak bergantung pada distribusi OS. Anda membuat Snap driver printer dan driver tersebut berfungsi di semua distribusi OS yang menjalankan snapd, sehingga tidak perlu memaketkan driver printer untuk setiap distribusi (dan versinya) secara terpisah dan mengalami masalah dependensi. Keuntungan lainnya adalah konsep lama file PPD yang berasal dari printer PostScript dihentikan. Selain itu, dengan menggabungkan sistem CUPS dan driver printer melalui koneksi IP, bukan dengan meletakkan file ke dalam sistem CUPS, sistem CUPS dan Aplikasi Printer dapat berada dalam paket sandbox terpisah.
Tugas saya adalah menjelaskan cara mendesain driver untuk printer dan pemindai untuk bentuk pengemasan ini dan cara mengemasnya ke dalam Snap. Tujuannya adalah untuk membantu siapa saja yang menulis driver printer atau pemindai, terutama produsen hardware, di masa mendatang untuk melakukannya dengan cara yang benar.
Alur kerja Aplikasi Printer dapat diringkas dengan diagram alir yang diberikan:
Dasar untuk membuat Aplikasi Printer/Pemindai tersebut adalah PAPPL, library yang menyediakan sebagian besar fungsi untuk hal ini, tetapi juga filter cups yang berisi kode yang akan digunakan untuk Aplikasi Printer. Konsep ini masih dalam pengembangan, terutama di Google Summer of Code tahun ini, tetapi pada 14 September, saat periode penulisan dokumentasi dimulai, periode coding GSoC telah berakhir dan saat itulah OpenPrinting memerlukan tutorial.
Template untuk Driver Printer Menentukan Struktur untuk Data JOB
Mendeklarasikan Array Konstanta untuk Ukuran Media
Mendeklarasikan fungsi i) Callback atau init Fungsi boolean yang menerima nama driver, data driver, dll., dan menetapkan atribut driver yang sesuai. Jika detail yang diberikan sesuai, fungsi ini akan menampilkan true (benar) dan false (salah) jika gagal.
ii) fungsi Boolean cetak yang menerima tugas, opsi untuk tugas dan perangkat. Metode ini mencetak file dan menampilkan true jika berhasil dan false jika gagal.
iii) rendjob Fungsi Boolean yang menerima tugas, opsi untuk tugas, dan perangkat. Fungsi ini akan mengakhiri tugas dan menampilkan true jika berhasil dan false jika gagal.
iv) rendpage Fungsi Boolean yang menerima tugas, opsi untuk tugas, perangkat, dan nomor halaman. Operator ini mengakhiri halaman dan menampilkan nilai benar (true) jika berhasil, dan menampilkan salah (false) jika gagal.
v) rstartjob Fungsi Boolean yang menerima tugas, opsi untuk tugas dan perangkat. Operator ini memulai tugas dan menampilkan nilai true (benar) jika berhasil dan false (salah) jika gagal.
vi) rstartpage Fungsi Boolean yang menerima tugas, opsi untuk tugas, perangkat, dan nomor halaman. Fungsi ini memulai halaman dan menampilkan true jika berhasil dan false jika gagal.
vii) fungsi rwrite Boolean yang menerima tugas, opsi untuk tugas, perangkat, nomor baris, dan array karakter. Fungsi ini menulis baris dan menampilkan nilai benar jika berhasil dan salah jika gagal. viii) fungsi opsional seperti mengidentifikasi (membantu dalam mengidentifikasi printer berdasarkan tindakan yang diberikan), compress(Mengompresi garis grafik), dll