فصل ۲۲ – چاپ و تولید خروجی کاغذی

گرچه بسیاری از کارهای ما دیجیتال است، هنوز هم گاهی لازم داریم سندی را چاپ کنیم.
در لینوکس سیستم چاپ بر پایهٔ استانداردهای آزاد بنا شده است و با درک آن می‌توانیم فایل‌های متنی، تصاویر و اسناد را به چاپگرهای محلی یا شبکه‌ای بفرستیم.

در این فصل یاد می‌گیریم:


معرفی CUPS

سیستم Common UNIX Printing System یا به اختصار CUPS چارچوب استاندارد چاپ در بیشتر توزیع‌های لینوکس است.
CUPS از پروتکل IPP استفاده می‌کند و رابطی وب برای پیکربندی چاپگرها دارد (http://localhost:631).
هر چاپگر مجموعه‌ای از گزینه‌ها مانند اندازهٔ کاغذ، کیفیت چاپ و منبع کاغذ دارد.

برای مشاهدهٔ چاپگرهای نصب‌شده:

lpstat -p
lpstat -d

دستور اول وضعیت چاپگرها را نشان می‌دهد و دومی چاپگر پیش‌فرض را.


ارسال کار چاپ

دو فرمان اصلی lp و lpr هستند که کار مشابهی انجام می‌دهند.
برای چاپ یک فایل متنی ساده:

lp memo.txt

یا با lpr:

lpr memo.txt

گزینه‌های متداول:

مثال پیچیده‌تر:

lp -d office -n 2 -o sides=two-sided-long-edge report.pdf

این دستور فایل report.pdf را به چاپگر شبکه‌ای office می‌فرستد، دو نسخه چاپ می‌کند و چاپ دوطرفه را فعال می‌سازد.


تنظیم گزینه‌های پیش‌فرض چاپگر

هر چاپگر مجموعه‌ای از گزینه‌ها مانند اندازهٔ کاغذ، کیفیت چاپ و سینی کاغذ دارد.
با دستور lpoptions می‌توان مقادیر پیش‌فرض را دید یا تغییر داد:

lpoptions -p office
lpoptions -p office -o media=A4 -o sides=two-sided-short-edge

اگر گزینه‌ای را برای همهٔ چاپگرها تنظیم کنید، از lpoptions -o key=value بدون مشخص کردن نام چاپگر استفاده کنید.
برای بررسی قابلیت‌های هر چاپگر، lpoptions -p office -l فهرستی از پارامترهای پشتیبانی‌شده را نشان می‌دهد. در صورت نیاز به تغییرات سیستمی، مدیر سیستم می‌تواند از lpadmin برای افزودن یا حذف چاپگرها و از lpinfo -m برای مشاهدهٔ درایورهای موجود استفاده کند.


مشاهدهٔ صف چاپ

برای بررسی وضعیت شغل‌ها از lpq یا lpstat -o استفاده می‌کنیم:

lpq
lpstat -o

این فرمان‌ها شمارهٔ شغل، کاربر ارسال‌کننده، اندازهٔ فایل و وضعیت آن را نشان می‌دهند.

اگر بخواهیم شغل چاپ را لغو کنیم، lprm job-id یا cancel job-id را اجرا می‌کنیم.
تنها کاربری که شغل را ارسال کرده یا مدیر سیستم می‌تواند آن را حذف کند.


چاپ فایل‌های متنی

چاپ مستقیم فایل‌های متنی ممکن است نتیجهٔ نامناسبی بدهد؛ بهتر است پیش از چاپ فرمت‌بندی انجام دهیم.
ابزارهایی مانند pr، enscript و a2ps می‌توانند متن ساده را به PostScript تبدیل کنند.

pr -h "Notes" memo.txt | lp

enscript امکانات بیشتری دارد:

enscript -2r -p output.ps script.sh

گزینهٔ -2r دو صفحه در هر برگ چاپ می‌کند و آن را می‌چرخاند؛ -p نام فایل خروجی PostScript را تعیین می‌کند.
فایل PostScript ایجادشده را می‌توان با lp چاپ یا با ps2pdf به PDF تبدیل کرد.


آشنایی با PostScript و PDF

PostScript زبان توصیف صفحه است که توسط پرینترهای پیشرفته پشتیبانی می‌شود.
فایل‌های PostScript متن و گرافیک را با دستورات برداری تعریف می‌کنند.
برنامه‌های بسیاری می‌توانند خروجی PostScript تولید کنند.

فرمت PDF (Portable Document Format) که توسط Adobe توسعه داده شده، از PostScript الهام گرفته و امروزه استانداردی جهانی برای تبادل سند است.
در لینوکس می‌توان با ابزارهایی مانند cups-pdf خروجی چاپ را به فایل PDF تبدیل کرد.

ps2pdf input.ps output.pdf

برای ترکیب چند فایل PDF از pdfunite (از بستهٔ poppler-utils) استفاده می‌شود و برای استخراج صفحات pdfseparate.


چاپ تصاویر و فایل‌های ویژه

برای تصاویر می‌توان از imagemagick یا cupsfilter کمک گرفت:

display photo.jpg &

در برنامهٔ display گزینهٔ «Print» تصویر را به چاپگر می‌فرستد.
همچنین دستور lp -o fit-to-page photo.jpg تصویر را متناسب با صفحه چاپ می‌کند.

برای فایل‌های LibreOffice یا اسناد پیچیده، مناسب است از خود برنامه یا از libreoffice --headless --print-to-file بهره بگیریم.


نکات عیب‌یابی

اگر چاپگر پاسخ نمی‌دهد:

  1. اتصال سخت‌افزاری و روشن بودن چاپگر را بررسی کنید.
  2. با lpstat -t گزارش کامل بگیرید.
  3. در فایل /var/log/cups/error_log پیام‌های خطا را بررسی کنید.
  4. سرویس CUPS را بازراه‌اندازی کنید: sudo systemctl restart cups.

گاهی لازم است صف چاپگر را پاکسازی کنیم:

cancel -a

این فرمان تمام شغل‌های در صف را لغو می‌کند.


مدیریت دسترسی‌ها

CUPS اجازه می‌دهد تعیین کنیم چه کسانی می‌توانند چاپ کنند.
در فایل پیکربندی /etc/cups/printers.conf می‌توان محدودیت‌ها را اعمال کرد یا از رابط وب برای افزودن کاربران مجاز استفاده نمود.
همچنین گروه lpadmin برای مدیریت چاپگرها به کار می‌رود.

برای فعال یا غیرفعال کردن چاپگرها از cupsenable printer و cupsdisable printer استفاده می‌شود. دستور cupsctl نیز تغییرات سطح سیستم مانند فعال کردن رابط وب یا اجبار به استفاده از رمز عبور را مدیریت می‌کند.


جمع‌بندی

با فهمیدن نحوهٔ کار سیستم چاپ در لینوکس می‌توانیم خروجی‌های متنوع را روی کاغذ بیاوریم.
از متون ساده گرفته تا گزارش‌های پیچیده و تصاویر، همه را می‌توان با ابزارهای خط فرمان یا برنامه‌های گرافیکی چاپ کرد.
کلید موفقیت درک صف چاپ، مدیریت شغل‌ها و انتخاب گزینه‌های مناسب برای چاپگر است.


تمرین

  1. یک فایل متنی را با استفاده از pr قالب‌بندی کنید و آن را با lp -n 3 -o sides=two-sided-long-edge به چاپگر پیش‌فرض بفرستید.
  2. با lpoptions اندازهٔ کاغذ چاپگر خود را به A4 تغییر دهید و سپس دستور دیگری اجرا کنید تا مطمئن شوید گزینهٔ جدید اعمال شده است.
  3. یک تصویر را با lp -o fit-to-page چاپ کنید و تفاوت آن را با حالت معمولی بسنجید.

مطالعهٔ بیشتر