ARM-LINUX平台下的文本文件打印机打印

一、前言

        在前段时间构建打印系统的过程中,积累了一些打印相关知识,为实现上述目标也制定了计划,本文档就是计划任务具体实现的技术文档。分为如下几个部分:

1.    ARM-LINUX平台下实现文本文件打印方案。

2.    上层服务软件的移植。

3.    打印接口制作。

       在计划最后,还准备实验佳能公司打印机,会编写单独的实验报告,本文档不会详细介绍。

二、ARM-LINUX平台下实现文本文件打印方案

        根据前期工作,已明确使用Ghostscript 和Hpijs方案能实现基于ARM-LINUX平台的USB打印机Demo(Ghostscript 和Hpijs软件的移植可以查看总结的移植文档) 。但这只是个开始,最终目的是面向用户的打印功能(对于用户来说,比较友好的是word、txt、jpg、ppt等格式的文件,Ghostscript只支持ps、eps、PDF等中间格式)。

  1. 打印系统的几个关键词

        (1)打印机设备节点

       即插上USB打印机后,会在dev目录下自动创建lp0的设备节点,如果没有,需要自己创建,否则不能打印。

       Linux操作系统下基于USB打印机通信协议驱动源文件为usblp.c,在移植内核时候需要配置上这个驱动。此驱动相当于一个通道,Linux内核收到需要打印的数据后,通过此协议把数据传送给打印机,当然这些数据是打印机可以识别的。

(2)通用Unix打印系统

        CUPS--Common Unix Printing System,是一个假脱机打印服务程序,由苹果公司维护,遵循GNU GPL。在Linux下进行CUPS驱动开发是遵循GPL协议规定的,也就是说必须开源。作用:

	采用IPP以加强网络打印功能;
	可自动检测网络打印机;
	Web接口设置工具;
	支持PPD(PostScript Printer Description)打印机文件;
	支持大多数打印机使用.

        cups要用到「ppd文件」,需要添加「打印机」到cups中,这个过程中要指定ppd文件(包含在hpijs源码中),这样就可以使用通用的lpr xxx.ps命令来打印了。Cups会自动根据ppd文件中调用之前手动执行的打印命令(gs+hpijs)。

(3)Ghostscript

        Ghostscript--是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件,即开源软件,在CUPS中被认为是一种过滤器。(如果需要深入了解可以查看源代码目录下的文档),下面是gs命令的例子:

gs  -sDEVICE=ijs  -sIjsServer=hpijs  -dIjsUseOutputFD  -sDeviceManufacturer=
"HEWLETT-PACKARD"  -sDeviceModel="deskjet 5550"  -r300x300  -dNOPAUSE
-dSAFER  -sOutputFile="/dev/lp0"   /home/fengel/ReadmeWin.pdf   -c  quit

注意:GS软件支持的中间格式的像PS、EPS、PDF等格式,注意事项也需要查看gs软件源代码目录下的说明文档。下面说明打印PDF时可用参数:

  1. –dFirstPage参数和-dLastPage参数

–dFirstPage=pagenumber1 , -dLastPage=pagenumber2,打印的PDF文档从pagenumber1开始,到pagenumber2结束。

  1. 其他参数查看gs源代码目录下的说明文档。
  2. 如果在Adobe 阅读软件能打开的pdf文件在gs下不能解析,那么最大可能情况就是此pdf文件生成时有错误。

(4)HPIJS

        HPIJS--Hewlett-Packard Inkjet Driver Project,惠普喷墨打印机驱动程序项目。开源软件

        执行完gs -h后,如果没有看到高亮的ijs设备,说明编译的Ghostscript版本没有对HPIJS内置支持,需要更换Ghostscript更高的版本。

        使用gs命令行打印文件时,需要一些参数。如果使用打印机驱动(非内核层面的USB打印机驱动,内核的那个是一个USB通信驱动)为HPIJS,那么如下参数是必须的:

  -sDEVICE=ijs
  -sIjsServer=hpijs
  -dIjsUseOutputFD
  -sDeviceManufacturer=x   (x equals: "HEWLETT-PACKARD", "HP", "APOLLO")
  -sDeviceModel=x          (x equals: "DESKJET 990", "DESKJET 670", etc...)
  -r300x300    -r后面的参数为dpi

         根据需要还要其他参数,这些都可以在hpijs_readme.html文档和gs文档里面查看。

       如果制造商是HP,那么对于HP deskjet1000 J110喷墨打印机使用的-sDeviceModel参数可以为如下:(注意区分大小写,参考hpijs-readme.html)

dj450
     deskjet 5100
     deskjet 5550
     deskjet 5551
     deskjet 5600
     deskjet 5800
     deskjet 9600
     Photosmart 320
     Photosmart 330
     Photosmart 370
     Photosmart 380
     photosmart 7150
     photosmart 7260
     photosmart 7268
     photosmart 7345
     photosmart 7350
     photosmart 7550
     photosmart 7660
     photosmart 7760
     photosmart 7960
     OfficeJet 6100
     OfficeJet 6150
     PSC 2100
     PSC 2150
     PSC 2170
     PSC 2200
     psc 2300
     psc 2400
     psc 2500
     hp business inkjet 1100    打印语言: hp PCL Level 3增强
     HP Business Inkjet 1200

(5)Gutenprint

       对于打印机驱动Hpijs,它只对HP系列的喷墨打印机支持较良好。如何支持其他厂商的打印机,初步方案是移植新发现的gutenprint驱动,以佳能打印机进行实验,Gutenprint中包含了一个ijsgutenprint和hpijs类似的基于ijs的实现,可以支持市面上各个厂商70%打印机型号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值