点击上方蓝色“ Linux News搬运工”关注我们~

Topics from the Open Printing microconference

By Jake Edge


LPC

在2019 Linux Plumbers Conference会议的第二天进行了首次的Open Printing microconference会议。会议由Open Printing项目的两位核心成员主持,分别是项目负责人Till Kamppeter和项目经理Aveek Basu。他们介绍了目前Linux欢迎里的print(打印)方案以及今后的规划,包括如何支持多功能一体机(打印、复印、扫描等)的扫描功能。他们描述得很美好,尤其是关于打印方面,但是这却和大多数Linux用户的感受不符合。不过Open Printing项目同其他很多开源项目一样,都非常缺少开发者,甚至连会议现场的参加者都显得稀稀拉拉的。

Basu先介绍现在已经有不少与会者的登机牌其实都是Linux环境下打印出来的。这就说明Linux下面的打印支持有多么重要。人们会打印银行文档,交通票据,等等。他在Lexmark工作了11年,都是在做Linux,macOS以及其他类似Unix的环境下的打印功能。Kamppeter则自从2001年起就一直在领导着Open Printing项目。这个项目的目标是要竭尽所能要让Linux等操作系统上的打印功能“开箱即用”,也就是“plug and print”。

Plug and print

过去,要想支持打印功能,首先要从打印机的生产商那里获取打印驱动。这个驱动程序帮助应用程序来跟打印机的firmware交互。因此为了能使用一款新的打印机,用户需要先去生产商的网站获取驱动程序并安装。这些步骤很麻烦,让人不爽。

上图是Till Kamppeter

不过现在情况已经不一样了。Linux环境下的打印应该都可以不再需要驱动程序,而直接使用Internet Printing Protocol (IPP)。打印机可以直接连上网络,然后用户只要按下ctrl-p键,选择好打印机,就能打印 文档了。这些不再需要用户去做配置,一点都不会麻烦。所有现代打印机都支持driverless(不需要驱动程序),这就是过去几年里Open Printing项目达成的成果。

他放了一段视频展示了这个过程。其中运行的是Ubuntu系统,支持最新的IPP driverless功能。Kamppeter就是Ubuntu上打印相关安装包的维护者。视频里面展示了通过CUPS网页系统能看到一台打印机。在打开网络功能之后,在LibreOffice软件的打印对话框里就可以直接显示所有打印机,不需要做配置。如果给某台打印机发送了打印任务,那么就可以从CUPS中的打印队列里看到,也不需要做任何配置。

OpenPrinting项目一直跟IEEE-ISTO Printer Working Group (PWG)紧密合作。PWG是90年代末期建立的一个定义打印标准的组织,起初只是一些打印机供应商的联合组织。PWG提出的最重要的标准就是IPP。在2000年左右,CUPS也被提出了,他就开始把CPUS加入Linux了。目前CUPS是Linux环境里唯一一个得到良好维护的打印方案。

PWG也在为多功能一体机(例如打印+扫描功能)做一些工作。目前一体机其实比纯粹的打印机更普及了。IPP里有扫描结构,所以driverless scanning(免驱动扫描)功能也是可能的。这是一个免费开源的标准,PWG的所有标准都是free and open的。有个Google Summer of Code (GSoC)项目,计划在2020年支持IPP driverless scanning免驱动扫描功能。Open Printing在每年的GSoC项目上都在印度有招募学生,很多人最后都留下来继续参加Open Printing项目。

Apple并购了CUPS支持公司之后也掌控了CUPS项目。在macOS里面,Apple继续使用CUPS,不过会使用一些私有的filter(过滤器)来把PDF转换成打印机使用的特有语言。这样做了之后,Apple就再也没有兴趣维护那些free filter了,因此把这一部分转交给了Open Printing。Kamppeter就创建了cups-filters项目来管理维护这些filter,同时还有不少其他打印相关的CUPS相关的代码(例如cups-browsed)。

Scanning

在这个会议的后半段,Basu介绍了需要如何能支持IPP driverless scanning。他先介绍了目前IPP driverless printing是如何工作的。当把PC机连接到网络上的时候,就会发出一个multicast DNS query (mDNS)来查找网络里的打印机(当然也能查其他的,这里就不多说了)。打印机会回复说能支持driverless操作,同时还会发送它具体的能支持的能力信息(例如颜色,分辨率,是否支持duplex等)。

上图是Aveek Basu

当用户要打印的时候,打印程序会显示出所有可用的打印机,等用户选定一台打印机之后,PC会利用IPP来查询打印机的具体能力,从而能弹出一个选项设置页面供用户选择。用户选定之后就可以把打印任务发送给设备了。

站在Open Printing的角度上,Basu强烈建议大家都开始试着用一下driverless打印功能;不过站在Lexmark的角度上则不太一样,因为有些老款打印机可以通过firmware升级来支持driverless,而有些不能。所有现代打印机都是支持driverless的,也包括Android设备。Apple也在推动driverless打印。CUPS会有一天关闭PostScript Printer Description (PDD)文件,后续都会使用driverless的方式。

听众有在问哪一年开始大多数打印机都支持driverless了?Basu回答说Lexmark在近5年(甚至7年)以内的打印机都支持,至少可以通过firmware升级来实现。他不确定其他打印机供应商的情况,不过过去四五年内的打印机应该都支持。他建议查看firmware的升级是否有提到driverless支持。每次买打印机的时候,有个很好的方法可以测试,就是试试用手机来打印。Linux支持所有4种的driverless printing的IPP标准,也包括Apple的AirPrint。

所以打印方面看起来进展不错,不过他也提到扫描(scanning)方面则还没有支持好。还需要更多人的投入来改善。目前来说扫描仪用户仍然需要采用老方法去安装供应商的驱动程序。

打印驱动程序只是简单的把用户想做的工作转换成firmware和hardware的语言。比如,用户希望进行彩色打印,驱动程序知道应该给打印机发送什么命令来达到目的。对扫描功能来说有点类似,扫描功能也会有一些用户指定的参数设置,不过它不是发送数据去打印,而是从扫描仪这边获取数据,显示在用户界面上,并保存。

需要和SANE(一个目的是支持扫描功能的项目)开发者一起来把IPP driverless扫描在Linux上支持起来。这个标准早已经定义好,只不过Linux里面现在还没有相关代码架构能够支持。目前没有多少人在做Linux的打印功能,很需要更多的贡献者加入。和SANE项目的合作已经开始了,不过除非有更多人加入扫描功能的开发,否则它的进展会一直远远落后于打印功能。

Driverless扫描大多数工作应该跟driverless打印类似。新的扫描仪应该要在SANE的对话框里能自动显示出来,允许用户挑选扫描仪,设置参数,发起扫描。也像打印功能一样,有IPP request来查询扫描仪的能力,发起扫描任务。而多功能一体机则可以提供两个URI(由"ipp://HOSTNAME"开始的字符串),分别是/ipp/print和/ipp/scan。

有一位与会者问到哪些设备支持driverless扫描功能。Basu回答说有些扫描设备已经支持了Apple的AirScan功能。不过Kamppeter指出这里不一定是使用IPP driverless扫描机制。目前他还不知道哪个扫描仪供应商已经支持了这个标准。这也说明,目前还没有Linux客户端能支持这个标准。所以他很希望明年能有位学生能选择进行这个GSoC项目。不过就算是有学生愿意做,也还是要一位导师的,在做的听众里面如果有人愿意做导师也会非常有帮助。

他们也介绍了driverless打印是怎么能不再依赖驱动程序的。PC侧不再需要有跟特定设备相关的软件代码来做打印,而能够从IPP request里面取得所有需要的信息。raster data(光栅数据)有4种标准格式,可以利用filter来把PDF变成这4种标准格式之一,就能够让输入的PDF数据变成可以发送给CUPS的数据,然后变成IPP命令和raster data进行打印。

Basu认为Open Printing的用户在慢慢增长,因为最近Chrome OS也采用了Open Printing。一位来自Google的参加者说,Google在用CUPS,不过没有使用cups-browsed,而是使用了Google自己的基于mDNS的查找协议以及打印对话框。这是一个开源方案,代码公布到互联网了,虽然基于IPP,不过仍然使用PPD文件。Google仍然在继续开发完善这一部分。

Basu认为,如果Linux的客户端这一侧的软件能准备好,那么可能扫描仪生产商会更有动力去在他们的设备里进行支持。如果软件方面什么都没有,那么相应的开发调试肯定会更加慢。并且,他又强调了开发者偏少,仍然是目前的主要阻碍。

本文仅仅介绍了6个microconference中的2个。此外还有一些讨论,例如GSoC学生Rithvik Patibandla提出的通用打印对话框后端(backend)的讨论,还有Kamppeter介绍的如何在去除PPD文件支持之后能继续支持non-IPP打印机,打印机的设置工具会有哪些变化,等等。Open Printing作为一个小项目(不过确实是一个非常重要的工作),看起来目前进展非常不错。相信如果有更多人参与进来的话,肯定能进展更加迅速。不过如果后续仍然只有很少贡献者,那么我们可能不得不面对这个伤心的境地:Linux的扫描功能支持会大大落后。

[I would like to thank LWN's travel sponsor, the Linux Foundation, for travel assistance to Lisbon for LPC.]

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议修改再创作~

长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~

LWN: Linux下的打印机和扫描仪支持得怎样了?相关推荐

  1. linux怎么64位,在linux下如何查看CPU是否支持64位

    在linux下如何查看CPU是否支持64位的方法是: # grep "flags" /proc/cpuinfo flags           : fpu tsc msr pae ...

  2. linux下使用打印机

    实验室的打印机是联想的,型号LJ3650DN,不幸的是没有对应的linux驱动.中国的电子产品就不说啥啊.没驱动,打印个东西太费事了,在网上看到有人说联想家的打印机是使用兄弟打印机的技术,并且有人尝试 ...

  3. Linux下hp打印机驱动hplip分析

    Hplip分析 版本号是2.14,源代码位置:http://hplipopensource.com. 图的来源:http://hplipopensource.com/node/128. 实践中使用的打 ...

  4. linux下默认有哪些语言支持,修改 Linux操作系统下的显示默认支持语言

    要领 一:运用 VI 最先 备份你的/etc/sysconfig/i18n文件: 命令: cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak 运用 :ls / ...

  5. matlab下载光盘刻录,最新的linux下dvd刻录软件,支持DVD+RW、DVD-RW光盘刻录。

    标签: 最新 最新linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应 ...

  6. 在linux下安装windows系统--仅仅支持efi主板+gtp+U盘安装

    本人已经安装成功: 材料: 1. U盘 2.电脑,bios支持efi shell 3.win8-x86-64位安装镜像cn_windows_8_1_x64_dvd_2707237.iso 4.EFI_ ...

  7. linux下小企鹅输入法,支持五笔

    http://www.fcitx.org/ 下载: fcitx-3.0.0rc-1.i386.rpm 安装: 要先看本文档前面的准备工作,然后把准备工作做好,再来安装这个包: #rpm -vih fc ...

  8. 嵌入式linux svn,Linux下配置subversion使其支持svn+ssh方式访问

    普通访问(略) svn://访问方式(svnserve -d -r /opt/svnrepos) ssh配置(假设用户为svn:svnusers) chmod 700 /home/svn/.ssh c ...

  9. linux 下 添加 4G 模块的支持

    1)修改 drivers/usb/serial/option.c static const struct usb_device_id option_ids[] = { ...{ USB_DEVICE_ ...

最新文章

  1. 揪出“凶手”——实战WinDbg分析电脑蓝屏原因
  2. biztalk 2010 映射
  3. 第四讲 deque
  4. Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
  5. 360浏览器linux版本_360安全浏览器崩溃解决方案
  6. mysql sohu_【MySQL中间件之SOHU-DBProxy】
  7. 【转】阿里技术专家详解 DDD 系列 第一讲- Domain Primitive
  8. 动态规划应用--“杨辉三角”最短路径 LeetCode 120
  9. 创建一个Flash站点的十大技巧
  10. 【java基础知识】linux运行或停止jar包程序
  11. 【论文阅读】Network In Network
  12. 【Alpha】Scrum Meeting 1
  13. 网上书店系统源代码java_java版网上书城系统
  14. W型加密栅栏密码解密
  15. word表格删除空白行java_Java批量删除Word中的空白段落
  16. pdf怎样删除其中一页简单教程
  17. laragon mysql版本_laragon mysql8 安装
  18. 神经网络训练样本的标签,训练图像识别神经网络
  19. 「津津乐道播客」#397 厂长来了:怎样用科技给法律赋能?
  20. 使用OBS录屏有很大的电流回声

热门文章

  1. vue项目下常用的npm命令
  2. 【转】从零开始React服务器渲染
  3. 双十一买什么蓝牙耳机好?2022热销蓝牙耳机排行榜
  4. python微信聊天机器人,再也不怕被夸情商高了
  5. 2015是美国并购市场最火爆的一年
  6. 监控.net 网站 Glimpse
  7. 如何把数字证书导入到Windows根证书存储区
  8. vue跨域解决的几种方案
  9. ARM,AMD,X86,AArch64的概念
  10. 3dMax 倒角剖面(房子外沿)