Android 打印小结

来源:互联网 发布:淘宝搜索排名查询 编辑:程序博客网 时间:2024/06/06 07:19

引言

打印机接口

通常要打印文件,需要在PC上安装特定打印机的驱动软件。
那么,该驱动的作用是什么?该驱动的作用就是将打印数据生成打印机可以识别的打印数据流(Print Data Stream)。
接着,为什么需要发送打印数据流而不是直接将打印数据直接发送给打印机呢?同时,打印数据流是如何生成的呢?

首先,不同的文件使用不同的文件格式进行存储,打印机作为一种专用设备,不可能是被所有通用文件格式,所以打印机的生成商定义了打印机所支持的数据格式。并且,处于各自技术保护的目的,每个打印机厂商所支持的打印数据格式都不尽相同。目前商用打印机主要支持的打印数据格式是一种称作打印描述语言的协议(Print Description Language),该协议定义了请求打印的设备与打印设备传输数据的接口。该接口被主要的打印机厂商所实现,易普生公司的实现是EPSON、HP公司的实现是PCL(.pcl文件)、Adobe公司的实现是PostScript(.ps文件)。各大厂商为了使自己的打印机能够有更广泛的用户,因此,在支持自己的特定PDL的同时也部分支持其他厂商的PDL(支持情况根据具体的设备有不同的差异,详见:1)。其次,打印数据流是如何生成的呢?通常的打印数据流是打印的原始数据与PDL的混合。PC上的打印机驱动做的就是这件事。

说明:易普生和HP公司的主营业务是硬件设备,特别是办公设备,那么Adobe公司与打印机有什么关系呢?因为Adobe公司的创始人最初不是做软件的,而是做打印机的。后来Photoshop的发明者加入该公司,现在的Adobe公司的创始人对其投资。现在Adobe公司的主要业务是图像图像吹软件,并取得了巨大的成功。从这点上看,Adobe公司的创始人的投资是正确的。

说明:该文章讨论的技术平台版本与硬件版本如下:

Android SDK Level 14Printer HP Officejet 100 Mobile Printer - L114a

一、Android客户端打印技术现状

云打印

在Android KitKat之前,Google推出云打印,用户将需要打印的数据上传到服务器并填写好联系信息,打印好的图片邮寄给用户。
这是一种商业模式而非技术手段。也就是说在Android KitKat之前,Google一直没有推出Android打印的技术方案。除了Google推出的云打印方案,还存在很多第三方公司,也提供类似的方案(参考:2)。

打印框架

KitKat发布,Google推出了打印框架。该框架作为需要使用打印服务的应用于实现打印服务的应用之间的接口,通过该框架方便了开发者对打印功能的使用。其中,需要使用打印服务的应用使用打印框架API申请服务,具体的打印服务由打印机原始设备生产生提供。本质上,该框架方便了应用打印功能的使用,但实际上打印中最为关键的打印数据流的创建仍然是打印机生产商提供的APK来完成。(参考:3)

第三方

除了各大打印机生产厂商提供的打印APK,还有部分第三方也提供具有打印功能的应用,比如 PrinterShare这款应用。该应用的实现原理不明,猜测可能是其获取到了各个厂商的PDL的支持情况,并且拥有特定PDL的开发参考数据。

市场上的产品

以金山公司的 WPS为例,该应用支持常用办公文件的打印,打印提供两种选项:第一,使用系统的打印服务,即之前提到的KitKat之后的打印框架;第二,生成.ps文件。需要说明的一点是,该文件的内容是PostScript,根据前面的描述可知,该文件并不被所有打印机支持。所以,该应用的做法是,通过使用打印框架提供打印功能,同时提供对部分打印机的支持。此外,通过搜索可以发现,目前市场上关于打印类的应用非常少。(参考:4)

二、可行方案

通过前面的了解,确定两种方案

  • 方式一:应用操作 excel 文件填入数据,打印功能由第三方应用实现
  • 方式二:使用PDL实现打印

方式一

  1. 应用更新并下载打印模板(.xsl文件)
  2. 应用通过第三方SDK操作模板文件,将相应的数据填入
  3. 打印目标文件生成完成后,用户通过第三方应用实施打印
    第三方应用:
    1)厂商提供的APK,支持某些型号的打印机(支持范围不广)
    2)第三方提供的APK,比如PrintShare(支持的范围较广,参考:5)
    关于打印机的选择,支持的打印机要求:
    a. 便于携带
    b. 插件支持
    c. 价格在一定范围

方式二

  1. 同方式一,但是下载的文件是.txt文件
  2. 应用将模板txt与数据拼合
  3. 应用生成打印数据流通过蓝牙发往打印机

比较

打印方式 打印效果 开发和维护难度 应用的使用难度 方式一 好 简单 比较复 方式二 不好 复杂 低

打印效果方面,方式一的打印效果几乎与通过PC打印效果一直,方式二的打印效果存在字体模糊、样式不能被完全体现等问题。
技术实现方面,方式一可利用现有的比价成熟的excel文件操作SDK,方式二需要处理格式转换、文件拼接以及打印数据生成等问题。

实际选用:方式二。

三、HP PCL 3 打印语言

具体内容参考手册:PCL3_developers_guide.pdf

下面简要介绍一下该语言的基础知识

  1. 改语言由指令构成,类似汇编语言,每种功能通过特定的指令实现。比如,字号的设置通过某条指令实现
  2. 该指令存在多个版本,目标打印机使用的版本是 PCL 3 GUI,其是 PCL的第三版,相对 PCL 3对图形打印有较好的支持,其语言指令是PCL 3的超集。

四、参考

  1. HP打印机对各种PDL的支持情况(更新至2015年1月27日)

  2. OceanLabs提供的云打印方案

  3. Android 4.4 引入大打印框架

  4. 打印应用 App

  5. PrintShare

  6. 使用PrintShare打印PDF文件

0 0