Linux Foundation projesi

Bu sayfa, Google Dokümanlar Sezonu için kabul edilen bir teknik yazı projesinin ayrıntılarını içerir.

Proje özeti

Açık kaynak kuruluşu:
Linux Foundation
Teknik yazar:
PIYUSHgoyal16
Projenin adı:
Yazıcı Uygulamaları'nda Yazıcı/Tarayıcı sürücüleri için Eğitim ve Tasarım Yönergeleri
Proje süresi:
Standart uzunluk (3 ay)

Proje açıklaması

Genel bakış

Yazıcıya özel filtrelerden ve PPD'den (Postscript Yazıcı Açıklaması) oluşan klasik yazıcı sürücüleri, yazıcı özelliklerini ve hangi filtrelerin çağrılacağını açıklar. Bunun yerine, dosya sisteminin belirli dizinlerine bırakılması gereken dosyalar yerine bir IPP ağ yazıcısının öyküsü olan Yazıcı Uygulamaları adlı bir dosya kullanılır.

Genel amaçlı modern yazıcıların çoğu, sürücüsüz yazdırmaya olanak tanıyan IPP yazıcılardır. Kendi reklamlarını DNS-SD aracılığıyla tanıtırlar; istemciler, IPP istekleri aracılığıyla kapasite bilgilerini yoklayabilir ve yazdırma işleri için standart veri biçimlerini kullanır. Bu işlevi sunmayan yazıcılarda genellikle eski veya özel yazıcılar için bir yazıcı sürücüsü gerekir.

Yazıcı Uygulaması, desteklenen yazıcıları tespit eden ve bu yazıcıları localhost'ta IPP Everywhere yazıcısı olarak tanıtan bir arka plan programıdır. Yazıcı Uygulamaları, desteklediği yazıcılarda gelen işleri yazdırmak için gereken verileri yazıcının ana diline dönüştüren bir yazılım içerir ve istendiğinde istemcilere yazıcının özellikleri hakkında bilgi sağlar. Yazıcı Uygulaması'nın gerçek bir ağ yazıcısı gibi bir web yönetim arayüzü bile vardır.

Bildiğimiz gibi, Linux korumalı pakete (ör. Snap) geçiş yapıyor ve yazdırma da bu yönde ilerliyor. Korumalı alana sahip bir pakette, oluşturulduktan sonra dizin içeriğini değiştiremeyiz. Sistemimiz artık modüler değil. Hangi yazıcı sürücüsü paketinin yükleneceğini seçemiyoruz. Yazıcı Uygulamaları bu modülerlik sorununu ele alır ve yazıcı sürücülerindeki özgürlüğün aynısını bize verir.

Snap'lerdeki yazıcı ve tarayıcı sürücüleri yalnızca tutturulmuş CUPS ve tutturulmuş uygulama için gerekli değildir, ayrıca tamamen klasik sistemlerde de çalışırlar. Klasik olarak paketlenmiş sürücülerin aksine işletim sistemi dağıtımından bağımsızdırlar. Bir yazıcı sürücüsü Snap'i hazırladığınızda Snap'i çalıştıran tüm işletim sistemi dağıtımlarında çalışır. Her dağıtım (ve sürümleri) için yazıcı sürücülerini ayrı ayrı paketleyip bağımlılık cehenneme girmenize gerek kalmaz. Diğer bir avantaj, PostScript yazıcılardan gelen eski PPD dosyaları konseptinin kullanımdan kaldırılmasıdır. Ayrıca, dosyaları CUPS sistemine bırakmak yerine CUPS sistemini ve yazıcı sürücüsünü IP bağlantısıyla birleştirdiğinizde CUPS sistemi ve Yazıcı Uygulaması ayrı korumalı alanlı paketlerde olabilir.

Görevim, bu paketleme biçimi için yazıcılar ve tarayıcılar için sürücülerin nasıl tasarlanacağını ve Snap'lerde nasıl paketleneceğini açıklamak olacak. Amaç, yazıcı veya tarayıcı sürücüleri yazan herkesin, özellikle de donanım üreticilerinin gelecekte bunu doğru şekilde yapmasına yardımcı olmaktır.

Yazıcı Uygulaması'nın iş akışı, verilen akış şemasıyla özetlenebilir:

Bu tür Yazıcı/Tarayıcı Uygulamaları'nın temelini PAPPL oluşturur. Konsept henüz geliştirme aşamasındadır. Bu yılın Google Summer of Code bölümünde, ancak 14 Eylül'de doküman yazma dönemi başladığında GSoC'nin kodlama dönemi sona ermiş ve OpenPrinting için eğitime ihtiyaç duyuluyor.

Yazıcı Sürücüleri için Şablon İş Verilerinin Yapısını Tanımlama

Medya Boyutları için Sabit Değer Dizisi Bildirme

İşlevleri bildirme i) Geri çağırma veya başlatma Sürücü adını, sürücü verilerini vb. kabul eden bir boole işlevi ve sürücü özelliklerini buna göre ayarlar. Sağlanan ayrıntılar uygunsa hata durumunda true ve false değerini döndürür.

ii) yazdırma İşi kabul eden Boole işlevi, iş ve cihaz seçenekleri. Bir dosya yazdırılır ve başarı durumunda doğru, hata durumunda yanlış değerini döndürür.

iii) rendjob Boole işlevi işi kabul etme, iş için seçenekler ve cihaz. İşi sonlandırır ve başarı durumunda "doğru", başarısız olduğunda "yanlış" değerini döndürür.

iv) oluşturma İşi kabul eden Boole işlevi, iş seçenekleri, cihaz ve sayfa numarası. Sayfayı sonlandırıp başarılı olduğunda "doğru", başarısız olduğunda "yanlış" değerini döndürür.

v) rstartjob Boole işlevi işi kabul ediyor, iş ve cihaz seçeneklerini kabul ediyor. İşi başlatır ve başarı durumunda "doğru", başarısız olduğunda "yanlış" değerini döndürür.

vi) rstartpage İşi kabul eden Boole işlevi, iş seçenekleri, cihaz ve sayfa numarası. Sayfayı başlatır ve başarılı olduğunda "doğru", başarısız olduğunda "yanlış" değerini döndürür.

vii) rwrite İşi kabul eden Boole işlevi, iş seçenekleri, cihaz, satır numarası ve karakter dizisi. Satırı yazar ve başarılı olduğunda "doğru", hata durumunda "yanlış" değerini döndürür. viii) Tanımlama (verilen işleme göre yazıcıların tanımlanmasına yardımcı olur), sıkıştırma(Grafik satırını sıkıştır) vb. isteğe bağlı işlevler