پروژه بنیاد لینوکس

این صفحه حاوی جزئیات یک پروژه نگارش فنی است که برای فصل اسناد Google پذیرفته شده است.

خلاصه پروژه

سازمان منبع باز:
بنیاد لینوکس
نویسنده فنی:
پی یوش گویال16
نام پروژه:
دستورالعمل‌های آموزشی و طراحی برای درایورهای چاپگر/اسکنر در برنامه‌های چاپگر
طول پروژه:
طول استاندارد (3 ماه)

شرح پروژه

نمای کلی

درایورهای چاپگر کلاسیک متشکل از فیلترهای مخصوص چاپگر و PPD (توضیح چاپگر پس‌اسکریپت، قابلیت‌های چاپگر را توصیف می‌کند و کدام فیلترها را فراخوانی می‌کند) فایل‌هایی که باید در فهرست‌های مشخصی از سیستم فایل حذف شوند، با اصطلاحاً برنامه‌های چاپگر جایگزین می‌شوند. چاپگر شبکه IPP

اکثر چاپگرهای همه منظوره مدرن، چاپگرهای IPP هستند که امکان چاپ بدون درایور را دارند. آنها خود را از طریق DNS-SD تبلیغ می کنند، مشتریان می توانند اطلاعات قابلیت آنها را از طریق درخواست های IPP نظرسنجی کنند، و از فرمت های داده استاندارد برای کارهای چاپی استفاده می کنند. چاپگرهایی که این قابلیت را ندارند، معمولاً چاپگرهای قدیمی یا تخصصی به درایور چاپگر نیاز دارند.

A Printer Application دیمونی است که چاپگرهای پشتیبانی شده را شناسایی می کند و آن چاپگرها را در localhost به عنوان یک چاپگر IPP Everywhere تبلیغ می کند. Printer Applications شامل نرم افزاری برای چاپ کارهای دریافتی بر روی چاپگر(های) مورد پشتیبانی آن، تبدیل داده ها به زبان مادری چاپگر است و در صورت درخواست، اطلاعات مربوط به قابلیت های چاپگر را در اختیار مشتریان قرار می دهد. برنامه چاپگر حتی دارای یک رابط مدیریت وب مانند یک چاپگر شبکه واقعی است.

همانطور که می دانیم، لینوکس به سمت بسته بندی سندباکس (مثلاً اسنپ) حرکت می کند و چاپ نیز در این مسیر حرکت می کند. در یک بسته sandboxed، ما نمی‌توانیم محتویات دایرکتوری را پس از ساخته شدن تغییر دهیم. سیستم ما دیگر ماژولار نیست. ما نمی توانیم بسته درایور چاپگر را برای نصب انتخاب کنیم. برنامه های چاپگر این مشکل ماژولار بودن را برطرف می کنند و همان آزادی را در مورد درایورهای چاپگر به ما می دهند.

درایورهای چاپگر و اسکنر در Snaps نه تنها برای یک CUPS قطع شده و یک برنامه snapped لازم است، بلکه بر روی سیستم های کاملاً کلاسیک نیز کار می کنند، اما برخلاف درایورهای بسته بندی شده کلاسیک، آنها مستقل از توزیع سیستم عامل هستند. شما یک درایور چاپگر Snap می‌سازید و روی همه توزیع‌های سیستم‌عامل که snapd را اجرا می‌کنند کار می‌کند، بدون نیاز به بسته‌بندی درایورهای چاپگر برای هر توزیع (و نسخه آن‌ها) به طور مستقل و وارد جهنم وابستگی می‌شود. مزیت دیگر این است که مفهوم قدیمی فایل های PPD که از چاپگرهای PostScript می آیند متوقف شده است. علاوه بر این، با جفت کردن سیستم CUPS و درایور چاپگر توسط یک اتصال IP به جای انداختن فایل‌ها در سیستم CUPS، هم سیستم CUPS و هم برنامه چاپگر می‌توانند در بسته‌های سندباکس جداگانه قرار بگیرند.

وظیفه من شرح چگونگی طراحی درایورهای چاپگرها و اسکنرها برای این نوع بسته بندی و نحوه بسته بندی آنها در اسنپ خواهد بود. هدف این است که در آینده به هر کسی که درایورهای چاپگر یا اسکنر می نویسد، به ویژه سازندگان سخت افزار، کمک شود تا این کار را به روش صحیح انجام دهند.

گردش کار برنامه چاپگر را می توان با فلوچارت داده شده خلاصه کرد:

مبنای ایجاد چنین برنامه‌های چاپگر/اسکنر PAPPL است، کتابخانه‌ای که بیشترین قابلیت‌ها را برای این کار فراهم می‌کند، اما همچنین فیلترهای فنجانی حاوی کد برای استفاده برای برنامه‌های چاپگر است. این مفهوم هنوز در دست توسعه است، عمدتاً در تابستان کد امسال گوگل، اما در 14 سپتامبر، زمانی که دوره نوشتن اسناد شروع می شود، دوره کدنویسی GSoC قبلاً به پایان رسیده است و این زمانی است که OpenPrinting به آموزش نیاز دارد.

الگوی درایورهای چاپگر ساختار داده های شغلی را تعریف کنید

آرایه ثابت را برای اندازه رسانه اعلام کنید

اعلان توابع i) Callback یا init یک تابع بولی که نام درایور، داده های درایور و غیره را می پذیرد و ویژگی های درایور را به ترتیب تنظیم می کند. اگر جزئیات ارائه شده مناسب باشد، در صورت شکست، true و false را برمی گرداند.

ii) کار پذیرش تابع بولی، گزینه‌های کار و دستگاه را چاپ کنید. یک فایل را چاپ می کند و در صورت موفقیت true و در صورت شکست false را برمی گرداند.

iii) rendjob تابع Boolean کار پذیرش، گزینه های کار و دستگاه. کار را تمام می کند و در صورت موفقیت true و در صورت شکست false برمی گرداند.

iv) کار پذیرش تابع بولی، گزینه‌های کار، دستگاه و شماره صفحه. صفحه را به پایان می رساند و در صورت موفقیت true و در صورت شکست false را برمی گرداند.

v) rstartjob تابع بولی کار پذیرش، گزینه های کار و دستگاه. کار را شروع می کند و در صورت موفقیت true و در صورت شکست false برمی گرداند.

vi) rstartpage تابع Boolean کار پذیرش، گزینه های کار، دستگاه و شماره صفحه. صفحه را شروع می کند و در صورت موفقیت true و در صورت شکست false را برمی گرداند.

vii) کار پذیرش تابع بولی، گزینه‌های کار، دستگاه، شماره خط و آرایه کاراکتر را بنویسید. خط را می نویسد و در صورت موفقیت true و در صورت شکست false را برمی گرداند. viii) توابع اختیاری مانند شناسایی (کمک به شناسایی چاپگرها بر اساس عملکرد ارائه شده)، فشرده سازی (فشرده کردن یک خط گرافیکی) و غیره