Trang này chứa thông tin chi tiết về một dự án viết nội dung kỹ thuật đã được chấp nhận tham gia Google Season of Docs.
Tóm tắt dự án
- Tổ chức nguồn mở:
- The Linux Foundation
- Người viết nội dung kỹ thuật:
- PIYUSHgoyal16
- Tên dự án:
- Hướng dẫn và nguyên tắc thiết kế cho trình điều khiển máy in/máy quét trong ứng dụng máy in
- Thời lượng dự án:
- Thời hạn tiêu chuẩn (3 tháng)
Mô tả dự án
Tổng quan
Trình điều khiển máy in cổ điển bao gồm các bộ lọc dành riêng cho máy in và tệp PPD (Postscript Printer Description, mô tả các tính năng của máy in và bộ lọc nào cần gọi) phải được thả vào một số thư mục nhất định của hệ thống tệp được thay thế bằng các ứng dụng được gọi là Ứng dụng máy in, mô phỏng máy in mạng IPP.
Hầu hết các máy in đa năng hiện đại đều là máy in IPP cho phép in không cần trình điều khiển. Các máy in này tự quảng cáo thông qua DNS-SD, ứng dụng khách có thể thăm dò thông tin về chức năng của các máy in này thông qua các yêu cầu IPP và các máy in này sử dụng định dạng dữ liệu chuẩn cho các công việc in. Những máy in không cung cấp chức năng này, thường là máy in cũ hoặc máy in chuyên dụng cần có trình điều khiển máy in.
Ứng dụng máy in là một trình nền phát hiện các máy in được hỗ trợ và quảng cáo các máy in đó trên localhost dưới dạng máy in IPP Mọi nơi. Ứng dụng máy in chứa phần mềm để in các công việc đến trên(các) máy in mà ứng dụng hỗ trợ, chuyển đổi dữ liệu sang ngôn ngữ gốc của máy in và cung cấp thông tin về chức năng của máy in cho ứng dụng khách theo yêu cầu. Ứng dụng máy in thậm chí còn có giao diện quản trị web, giống như một máy in mạng thực tế.
Như chúng ta đã biết, Linux đang chuyển sang đóng gói hộp cát (ví dụ: Snap) và hoạt động in cũng đang chuyển theo hướng đó. Trong gói hộp cát, chúng ta không thể sửa đổi nội dung thư mục sau khi tạo. Hệ thống của chúng tôi không còn mô-đun nữa. Chúng tôi không thể chọn gói trình điều khiển máy in để cài đặt. Ứng dụng máy in giải quyết vấn đề về mô-đun này và cho phép chúng ta có được sự tự do tương tự như trong trường hợp của trình điều khiển máy in.
Trình điều khiển máy in và máy quét trong Snaps không chỉ cần thiết cho một ứng dụng chụp nhanh và xử lý CUPS nhanh chóng, mà còn hoạt động trên các hệ thống hoàn toàn cổ điển, nhưng trái ngược với các trình điều khiển đóng gói cổ điển, chúng độc lập với việc phân phối hệ điều hành. Bạn tạo một trình điều khiển máy in Snap và trình điều khiển này hoạt động trên tất cả các bản phân phối hệ điều hành chạy snapd, không cần phải đóng gói trình điều khiển máy in cho từng bản phân phối (và phiên bản của các bản phân phối đó) một cách độc lập và gặp phải vấn đề về phần phụ thuộc. Một ưu điểm khác là khái niệm cũ về tệp PPD đến từ máy in PostScript không còn được sử dụng nữa. Ngoài ra, bằng cách ghép nối hệ thống CUPS và trình điều khiển máy in bằng kết nối IP thay vì thả tệp vào hệ thống CUPS, cả hệ thống CUPS và Ứng dụng máy in đều có thể nằm trong các gói hộp cát riêng biệt.
Nhiệm vụ của tôi là mô tả cách thiết kế trình điều khiển cho máy in và máy quét cho hình thức đóng gói này cũng như cách đóng gói các trình điều khiển đó vào Snap. Mục đích là giúp những người viết trình điều khiển máy in hoặc máy quét, đặc biệt là các nhà sản xuất phần cứng, trong tương lai có thể làm đúng cách.
Có thể tóm tắt quy trình của Ứng dụng máy in bằng sơ đồ quy trình cụ thể:
Cơ sở để tạo Ứng dụng máy in/máy quét như vậy là PAPPL, thư viện cung cấp hầu hết các chức năng cho việc này, nhưng cũng dùng bộ lọc cốc chứa mã được sử dụng cho Ứng dụng máy in. Ý tưởng này vẫn đang được phát triển, chủ yếu trong Google Summer of Code năm nay, nhưng vào ngày 14 tháng 9, khi giai đoạn viết tài liệu bắt đầu, giai đoạn lập trình của GSoC đã kết thúc và đây là lúc OpenPrinting cần hướng dẫn.
Mẫu cho trình điều khiển máy in Xác định cấu trúc cho dữ liệu JOB
Khai báo mảng hằng số cho kích thước nội dung đa phương tiện
Khai báo hàm i) Lệnh gọi lại hoặc khởi tạo Hàm boolean chấp nhận tên trình điều khiển, dữ liệu trình điều khiển, v.v. và đặt các thuộc tính trình điều khiển tương ứng. Nếu thông tin chi tiết được cung cấp là phù hợp, hàm này sẽ trả về true và false nếu không thành công.
ii) hàm Boolean in chấp nhận công việc, các tuỳ chọn cho công việc và thiết bị. Hàm này in một tệp và trả về true nếu thành công và false nếu không thành công.
iii) Hàm Boolean của rendjob chấp nhận công việc, các tuỳ chọn cho công việc và thiết bị. Phương thức này kết thúc công việc và trả về true nếu thành công và false nếu không thành công.
iv) Hàm boolean rendpage chấp nhận công việc, các lựa chọn cho công việc, thiết bị và số trang. Phương thức này kết thúc trang và trả về giá trị true khi thành công và trả về giá trị false khi không thành công.
v) rstartjob Hàm Boolean chấp nhận công việc, các lựa chọn cho công việc và thiết bị. Phương thức này bắt đầu công việc và trả về giá trị true khi thành công và trả về giá trị false khi không thành công.
vi) rstartpage Hàm boolean chấp nhận công việc, các tuỳ chọn cho công việc, thiết bị và số trang. Phương thức này khởi động trang và trả về true nếu thành công và false nếu không thành công.
vii) Hàm Boolean rwrite chấp nhận công việc, các tuỳ chọn cho công việc, thiết bị, số dòng và mảng ký tự. Hàm này ghi dòng và trả về true nếu thành công và false nếu không thành công. viii) các hàm không bắt buộc như xác định (giúp xác định máy in dựa trên hành động được cung cấp), nén(Nén một dòng đồ hoạ), v.v.