يحتوي هذا المستودع على تطبيق الطابعة لطابعات PostScript التي تستخدم PAPPL لدعم طباعة IPP من أنظمة تشغيل متعددة. بالإضافة إلى ذلك، فهو يستخدم موارد cups-filters 2.x (وظائف التصفية في libcupsfilters وlipppd) وpappl-retrofit (تغليف برامج تشغيل CUPS الكلاسيكية في تطبيقات الطابعة). هذا العمل (أو الآن رمز pappl-retrofit) مشتق من تطبيق hp-printer.
مساهماتك هي موضع ترحيب. الرجاء نشر القضايا وسحب الطلبات.
تطبيق طابعة غير نقطية: تنسيق الوجهة هو PostScript، وهو تنسيق عالي المستوى/متجه. يتم قبول البيانات المدخلة في PostScript أو PDF ويتم إجراء التحويل المطلوب دون أي خطوات بينية للبيانات النقطية.
تطبيق طابعة يستخدم وظائف التصفية الجديدة لمرشحات الأكواب 2.x. وظائف التصفية هي وظائف مكتبة مشتقة من مرشحات CUPS وتحتوي على عقود من التطوير والتحسين بدءًا من تقديم CUPS في عام 2000.
تطبيق طابعة ملائم لبرامج تشغيل CUPS الكلاسيكية، وهو في هذه الحالة أبسط شكل من ملفات PPD فقط لطابعات PostScript. يقوم بإدراج ملفات PPD من المستودعات المضمنة في Snap، وتحميل PPD المطلوب للطابعة الفعلية، واستخراج الخيارات من PPD لعرضها في واجهة الويب، وقبول إعدادات المهمة كسمات IPP، وإدراج كود PostScript المقدم من PPD بشكل صحيح في دفق بيانات الإخراج.
تطبيق طابعة لا يمر عبر المهام الأولية (تنسيق الإدخال هو التنسيق الأصلي للطابعة). للتأكد من أنه يتم دائمًا إدراج كود PostScript لملف PPD في دفق الإخراج، فإننا نسمي التنسيق الأصلي للطابعة "application/vnd.printer-spec" والذي لا يوجد كتنسيق إدخال، لذلك يتم فرض إدخال "application/postscript" من خلال وظيفة التصفية pstops().
تطبيق طابعة قابل للتوسيع: يمكن للمستخدم إضافة ملفات PPD عبر واجهة ويب الإدارة لدعم نماذج الطابعة الإضافية.
المزيد من الخصائص هي:
لتجنب الحاجة إلى إعادة اختراع التعليمات البرمجية للتقسيم إلى عمليات فرعية حتى نتمكن من تمرير البيانات من خلال سلسلة من المرشحات، قمنا بإنشاء وظيفة مرشح لإرسال البيانات إلى الطابعة وتشكيل سلسلة من مرشح التحويل الفعلي وظيفة (واحدة من pstops() و pdftops()) مع وظيفة التصفية هذه باستخدام وظيفة التصفية filterChain().
بالنسبة لإدخال PWG/Apple Raster، نستخدم عمليات الاسترجاعات النقطية بحيث تكون المعالجة متدفقة، مما يسمح بمهام كبيرة وحتى طويلة بلا حدود. نحن نستخدم وظائف libppd لإدراج رمز PostScript الخاص بخيار PPD في دفق الإخراج ووظيفة filterPOpen() لإنشاء واصف ملف لوظائف libppd لإرسال البيانات إلى الجهاز.
يحتوي تطبيق PostScript Printer Application Snap على جميع ملفات PostScript PPD الخاصة بمشاريع foomatic-db وHPLIP المضمنة، لذا فإن معظم ملفات PPD لطابعات PostScript تأتي عادةً مع توزيعات Linux. لتجنب أن يؤدي هذا العدد الهائل من ملفات PPD إلى تضخيم حجم Snap، فإننا نقوم بضغطها بشكل كبير باستخدام pyppd. لاحظ أن بعض ملفات PPD تستخدم مرشحات CUPS معينة للحصول على وظائف إضافية. يتم تضمين هذه المرشحات في Snap، وبالتالي يتم دعم الوظائف الإضافية (في معظم الحالات الطباعة المحمية برمز PIN). يمكن للمستخدم إضافة ملفات PPD إضافية دون الحاجة إلى إعادة إنشاء Snap (انظر أدناه).
نستخدم معرف جهاز IEEE-1284 الخاص بالطابعة لتحديد أنها طابعة PostScript في البداية (عبر حقل CMD:) لمعرفة ما إذا كانت مدعومة على الإطلاق وبعد ذلك فقط نتحقق من خلال الصنع والطراز ما إذا كنا ندعمها بشكل صريح باستخدام PPD. طابعات PostScript التي لا يوجد لها PPD تحصل على PPD عام معين. من خلال التحقق من الحقل CMD: قبل البحث عن الطراز/الطراز، فإننا نؤكد أنه إذا تم توفير PostScript بواسطة وحدة إضافية، فسيتم تثبيت الوحدة بالفعل.
يتم تعيين سمات IPP للمهمة القياسية إلى إعدادات خيار PPD الأكثر ملائمة لها بحيث يمكن للمستخدمين الطباعة من أي نوع من العملاء (مثل الهاتف أو جهاز IoT على سبيل المثال) الذي يدعم فقط سمات IPP القياسية ولا يمكنه استرداد خيارات PPD. يمكن تعيين الأدراج وأحجام الوسائط وأنواع الوسائط والطباعة على الوجهين بسهولة، ولكن عندما يتعلق الأمر بالألوان والجودة، يصبح الأمر أكثر تعقيدًا، حيث تختلف الخيارات ذات الصلة كثيرًا في ملفات PPD. نستخدم هنا خوارزمية تقوم تلقائيًا (من يريد التحرير اليدوي ~ 10000 PPDs للمهام) بالعثور على المجموعة الصحيحة من إعدادات الخيارات لكل مجموعة من print-color-mode
( color
/ monochrome
)، print-quality
( draft
/ normal
/ high
)، print-content-optimize
( auto
/ photo
/ graphics
/ text
/ text-and-graphics
) في ملف PPD الخاص بالطابعة الحالية. لذا، يمكنك الوصول بسهولة إلى الجودة الكاملة لطابعتك أو سرعتها دون الحاجة إلى التعامل مع إعدادات الخيارات الخاصة بالطابعة (لا يزال من الممكن الوصول إلى الخيارات الأصلية عبر واجهة مسؤول الويب).
إن إمكانيات الطابعة لطراز طابعة محدد ("برنامج التشغيل" في تطبيق الطابعة) ليست ثابتة طوال عمر قائمة انتظار الطباعة التي تم إعدادها في تطبيق الطابعة. يمكن للمستخدم تكوين ملحقات الأجهزة (أدراج الورق الإضافية، وحدة الطباعة على الوجهين، وحدات التشطيب، ...) عبر صفحة في واجهة مسؤول الويب، ...) على الطابعة ويقوم تطبيق الطابعة بتحديث بنية بيانات برنامج التشغيل ومن خلال ذلك قدرات الطابعة. يتم تحديث الاستجابة لطلب IPP الخاص بـ get-printer-attributes بشكل مناسب.
PostScript هي لغة برمجة كاملة وتسمح العديد من طابعات PostScript بالاستعلام عن إعدادات الخيارات ووجود ملحقات الأجهزة القابلة للتثبيت والتي تنفذ كود PostScript المناسب. إذا كان من الممكن الاستعلام عن أحد الإعدادات، فإن الشركة المصنعة تضع رمز PostScript المطلوب في ملف PPD، جنبًا إلى جنب مع الخيار القابل للاستعلام. يتم دعم هذه الاستعلامات من خلال واجهة الويب الخاصة بتطبيق الطابعة.
يتم اكتشاف (واستخدام) أجهزة الطابعة المتوفرة مع الواجهات الخلفية لـ CUPS وليس مع الواجهات الخلفية الخاصة بـ PAPPL. بهذه الطريقة يتم استخدام الحلول البديلة لطابعات USB التي تعاني من مشكلات التوافق (وهي قابلة للتحرير) ويمكن إرسال مخرجات PostScript إلى الطابعة عبر IPP وIPPS (المشفرة!) وLPD بالإضافة إلى المقبس (عادةً المنفذ 9100). يمكن تكوين الواجهة الخلفية لـ SNMP (المجتمع ونطاق العنوان).
إذا كان لديك تكوين غير عادي للنظام أو جدار حماية شخصي، فربما لن يتم اكتشاف الطابعة الخاصة بك. في هذه الحالة، يمكن أن يكون الإدخال اليدوي الكامل لـ "طابعة الشبكة" مع حقل اسم المضيف/IP مفيدًا.
في صفحة "إضافة ملفات PPD" في قائمة ملفات PPD الخاصة بالمستخدم التي تمت إضافتها بالفعل، قم بتحديد الملفات المستخدمة بالفعل بواسطة الطابعة التي تم إعدادها في تطبيق الطابعة، لتجنب قيام المستخدم بإزالة هذه الملفات.
سلاسل يمكن قراءتها بواسطة الإنسان لخيارات البائع (يحتاج إلى دعم من PAPPL: الإصدار رقم 58: دعم الترجمة)
التدويل/التعريب (يحتاج إلى دعم من PAPPL: المشكلة رقم 58: دعم الترجمة)
التحقق من مستوى حبر SNMP عبر وظيفة ps_status() (يحتاج إلى دعم من PAPPL: المشكلة رقم 83: يقوم CUPS بإجراء استطلاعات لمستوى حبر IPP وSNMP عبر الواجهات الخلفية، ويجب أن يكون لدى PAPPL وظائف لهذا)
إنشاء خيارات لمرشحات الأكواب، للإنشاء بدون libqpdf و/أو بدون libppd، سيسمح الأول بإنشاء Snap لتطبيق الطابعة هذا دون تنزيل QPDF وإنشاءه
لتشغيل تطبيق الطابعة واستخدامه فقط، ما عليك سوى تثبيته من Snap Store:
sudo snap install --edge ps-printer-app
ثم اتبع الإرشادات أدناه لإعداده.
لإنشاء Snap بنفسك، قم بتشغيل الدليل الرئيسي لهذا المستودع
snapcraft snap
سيؤدي هذا إلى تنزيل كافة الحزم المطلوبة وإنشاء تطبيق طابعة PostScript. لاحظ أن PAPPL (الإصدار 1.0 القادم) ومرشحات الأكواب (الإصدار 2.0 القادم) يتم سحبهما مباشرة من مستودعات GIT الخاصة بهما، حيث لا توجد إصدارات مناسبة حتى الآن. يمكن أن يؤدي هذا أيضًا إلى حقيقة أن تطبيق الطابعة هذا لن يتم إنشاءه بعد الآن فجأة.
ملاحظة: يوجد خطأ في Ubuntu Groovy (20.10) يمنعه من إنشاء Snaps، راجع هذه المناقشة في منتدى Snapcraft. لقد تم حل المشكلة بالفعل ولكنها لم تصل إلى Groovy بعد.
يجب أن يعمل أي إصدار أقدم (مثل 20.04) أو أحدث (مثل 21.04).
لتثبيت تشغيل Snap الناتج
sudo snap install --dangerous ps-printer-app_1.0_amd64.snap
سيتم تشغيل تطبيق الطابعة تلقائيًا كخادم خفي.
أدخل واجهة الويب
http://localhost:8000/
استخدم واجهة الويب لإضافة طابعة. أدخل اسمًا، وحدد الطابعة التي تم اكتشافها، ثم حدد الطراز والطراز. قم أيضًا بتعيين الملحقات المثبتة والوسائط المحملة والإعدادات الافتراضية للخيار. يمكن أيضًا الحصول على تكوين الملحقات والإعدادات الافتراضية للخيارات من الطابعة.
ثم اطبع ملفات PDF أو PostScript أو JPEG أو Apple Raster أو PWG Raster باستخدام
ps-printer-app FILE
أو الطباعة باستخدام CUPS وCUPS (وأيضًا تصفح الكؤوس) لاكتشاف الطابعات التي تم إعدادها باستخدام تطبيق الطابعة هذا والتعامل معها كطابعات IPP بدون برامج تشغيل (IPP Everywhere وAirPrint).
يمكنك أيضًا إضافة ملفات PPD دون إعادة إنشاء Snap، إما باستخدام زر "إضافة ملفات PPD" في واجهة الويب أو عن طريق نسخ ملفات PPD يدويًا:
sudo cp PPDFILE /var/snap/ps-printer-app/common/ppd/
بعد نسخ (أو إزالة) ملفات PPD يدويًا، تحتاج إلى إعادة تشغيل الخادم أو في واجهة الويب، في صفحة "إضافة ملفات PPD"، انقر فوق الزر "تحديث" في الأسفل. يؤدي هذا إلى إضافة التغييرات إلى قائمة برامج التشغيل الداخلية.
في صفحة "إضافة طابعة" في القائمة المنسدلة لتحديد برنامج التشغيل، يتم وضع علامة "USER-ADDED" على ملفات PPD التي أضافها المستخدم. عند إعداد طابعة مع التحديد التلقائي لبرنامج التشغيل، يُفضل استخدام ملفات PPD التي يضيفها المستخدم.
لا يمكن أن يكون PPDFILE
الموجود في سطر الأوامر أعلاه ملف PPD واحدًا فحسب، بل يمكن أن يكون أي عدد من ملفات PPD الفردية، وملفات .tar.gz
التي تحتوي على ملفات PPD (في بنية دليل عشوائية) وملفات تنفيذية لتكوين PPD والتي يتم وضعها عادةً في /usr/lib/cups/driver
. يمكنك أيضًا إنشاء بنيات دليل فرعية عشوائية في /var/snap/ps-printer-app/current/ppd/
تحتوي على أنواع الملفات المذكورة. تأكد فقط من عدم وضع أي ملفات تنفيذية هناك والتي تفعل أي شيء آخر غير إدراج ملفات PPD وإنشائها.
لاحظ أنه باستخدام واجهة الويب، يمكنك فقط إدارة ملفات PPD الفردية (غير المضغوطة أو المضغوطة باستخدام gzip
) في /var/snap/ps-printer-app/current/ppd/
نفسه. لا يتم عرض الأرشيفات أو الملفات التنفيذية أو الدلائل الفرعية ولا يتم قبول التحميلات المناسبة. وهذا يمنع بشكل خاص إضافة الملفات التنفيذية بدون حقوق الجذر.
يجب أن يكون أي ملف PPD مضافًا لطابعات PostScript، نظرًا لأن ملفات PPD غير PostScript مخصصة لبرامج تشغيل CUPS ولذلك فإنها ستحتاج إلى ملفات إضافية حتى تعمل، ولا يدعم تطبيق الطابعة هذا هذه الملفات. تعرض صفحة "إضافة ملفات PPD" تحذيرات إذا تم تحميل هذه الملفات.
يرى
ps-printer-app --help
لمزيد من الخيارات.
استخدم الوسيطة "-o log-level=debug" للتسجيل المطول في نافذتك الطرفية.
يمكنك إضافة ملفات إلى /var/snap/ps-printer-app/common/usb/
للحصول على قواعد USB إضافية. قم بتحرير الملفات الموجودة فقط للاختبارات السريعة، حيث يتم استبدالها عند كل تحديث لـ Snap (لتقديم قواعد جديدة).
يمكنك تحرير الملف /var/snap/ps-printer-app/common/cups/snmp.conf
لتكوين اكتشاف طابعة شبكة SNMP.
يمكنك أيضًا إجراء إنشاء "سريع وقذر" دون الانطباق ودون الحاجة إلى تثبيت PAPPL وcups-filters 2.x وpappl-retrofit في نظامك. أنت بحاجة إلى دليل يحتوي على أحدث لقطة GIT لـ PAPPL، وأحدث لقطة GIT لمرشحات الأكواب، وأحدث لقطة GIT لـ pappl-retrofit (الفروع الرئيسية لكل منها). يجب تجميعها جميعًا ( ./autogen.sh; ./configure; make
)، ولا يلزم التثبيت. قم أيضًا بتثبيت ملفات الرأس لجميع المكتبات المطلوبة (يجب أن يؤدي تثبيت "libcups2-dev" إلى القيام بذلك).
في الدليل باستخدام ps-printer-app.c، قم بتشغيل سطر الأوامر
gcc -o ps-printer-app ps-printer-app.c $PAPPL_SRC/pappl/libpappl.a $CUPS_FILTERS_SRC/.libs/libppd.a $CUPS_FILTERS_SRC/.libs/libcupsfilters.a $PAPPL_RETROFIT_SRC/.libs/libpappl-retrofit.a -ldl -lpthread -lppd -lcups -lavahi-common -lavahi-client -lgnutls -ljpeg -lpng16 -ltiff -lz -lm -lusb-1.0 -lpam -lqpdf -lstdc++ -I. -I$PAPPL_SRC/pappl -I$CUPS_FILTERS_SRC/ppd -I$CUPS_FILTERS_SRC/cupsfilters -I$PAPPL_RETROFIT_SRC/pappl/retrofit -L$CUPS_FILTERS_SRC/.libs/ -L$PAPPL_RETROFIT_SRC/.libs/
يوجد أيضًا ملف Makefile، ولكن هذا يحتاج إلى تثبيت PAPPL وcups-filters 2.x وpappl-retrofit في نظامك.
يجري
./ps-printer-app --help
عند تشغيل الإصدار غير المقطوع، يتم البحث عن ملفات PPD بشكل افتراضي في
/usr/share/ppd/
/usr/lib/cups/driver/
/var/lib/ps-printer-app/ppd/
يتم استخدام المسار الأخير عند إضافة ملفات PPD باستخدام صفحة "إضافة ملفات PPD" في واجهة الويب.
يمكنك ضبط متغير البيئة PPD_PATHS
للبحث في أماكن أخرى بدلاً من ذلك:
PPD_PATHS=/path/to/my/ppds:/my/second/place ./ps-printer-app server
ما عليك سوى وضع قائمة مفصولة بنقطتين بأي عدد من المسارات في المتغير، ودائمًا ما يتم استخدام آخر مسار في صفحة "إضافة ملفات PPD". يوصى بإنشاء برنامج نصي مجمع.
يستخدم تطبيق الطابعة هذا الواجهات الخلفية لـ CUPS وليس PAPPL، مما يعني أنه بالنسبة لطابعات USB يتم استخدام الحلول البديلة لـ CUPS USB لمشاكل التوافق، ويمكن أيضًا استخدام طابعات الشبكة مع بروتوكولات IPP وIPPS وLPD، كما أن اكتشاف الطابعة SNMP قابل للتكوين.
يمكن تحرير قواعد USB Quirk في /usr/share/cups/usb
وملف /etc/cups/snmp.conf
إذا لزم الأمر.
تأكد من تثبيت CUPS (على الأقل واجهاته الخلفية).
تحتاج أيضًا إلى Ghostscript لطباعة مهام PDF.
للوصول إلى صفحة الاختبار testpage.ps
استخدم متغير البيئة TESTPAGE_DIR:
TESTPAGE_DIR=`pwd` PPD_PATHS=/path/to/my/ppds:/my/second/place ./ps-printer-app server
أو لإنشاء صفحة اختبار بنفسك (PostScript، PDF، PNG، JPEG، Apple Raster، PWG Raster):
TESTPAGE=/path/to/my/testpage/my_testpage.ps PPD_PATHS=/path/to/my/ppds:/my/second/place ./ps-printer-app server
حقوق الطبع والنشر لتطبيق طابعة PostScript © 2020 محفوظة لـ Till Kamppeter.
وهو مشتق من تطبيق طابعة HP PCL، وهو نموذج عمل أول لتطبيق طابعة نقطية يستخدم PAPPL. وهو متاح هنا:
https://github.com/michaelrsweet/hp-printer-app
حقوق الطبع والنشر لتطبيق طابعة HP PCL © 2019-2020 بواسطة Michael R Sweet.
تم ترخيص هذا البرنامج بموجب ترخيص Apache الإصدار 2.0 مع استثناء للسماح بالارتباط ببرنامج GPL2/LGPL2 (مثل الإصدارات الأقدم من CUPS). راجع ملفات "الترخيص" و"الإشعار" لمزيد من المعلومات.