精华内容
下载资源
问答
  • java调用本地打印机

    2014-11-10 08:50:53
    java调用本地打印机java调用本地打印机java调用本地打印机java调用本地打印机
  • linux命令行使用打印机

    千次阅读 2020-03-03 12:22:46
    linux命令行使用打印机(资料整理) 设置默认打印机 lpoptions -d printerName(配置的打印机名称) 第一部分 lp --打印文件 lp指令用来打印文件,也可以修改存在的打印任务。使用该指令可以指定打印的页码、副本等。 此...

    linux命令行使用打印机(资料整理)

    设置默认打印机

    lpoptions -d printerName(配置的打印机名称)

    第一部分

    lp --打印文件

    lp指令用来打印文件,也可以修改存在的打印任务。使用该指令可以指定打印的页码、副本等。

    此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

    1、语法

    lp [ -E ] [ -U 'HR ] [ -c ] [ -d destination[/instance] ] [ -h hostname[:port] ] [ -m ] [ -n num-copies ]

    [ -o option[=value] ] [ -q priority ] [ -s ] [ -t title ] [-H handling ] [ -P page-list ] [ – ] [ file(s) ]

    lp [ -E ] [ -U 'HR ] [ -c ] [ -h hostname[:port] ] [ -i job-id ] [ -n num-copies] [ -o option[=value] ]

    [ -q priority ] [ -t title ] [ -H handling ] [ -P page-list ]

    2、命令列表

    命令说明
    标记选项的结尾;使用它打印以(-)开头的文件。
    -E使用加密模式
    -U 'HR设置用户名
    -c向后提供兼容
    -d destination目标打印机
    -h hostname[:port]远程打印机
    -i job-id指定要修改的打印任务
    -n设置打印副本的次数1~100
    -m打印完成之后发送邮件
    -o "name=value [name=value …]"设置打印选项
    -q priority设置打印级别1~100,100最大,默认50
    -s静默模式
    -t “name”设置打印任务名字
    -u 'HR以指定的名字提交作业。
    -H hh:mm设置打印开始时间。可以是时间格式,也可以是hold,等待打印;immediate,立即打印;restart,重新启动打印任务;resume,挂载打印任务。

    lpq --查看打印队列

    lpq指令用来显示当前打印队列的状态。如果命令行中没有指定打印机或类,则将显示默认目标上排队的作业。

    此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

    1、语法

    lpq [ -E ] [ -U username ] [ -h server[:port] ] [ -P destination[/instance] ] [ -a ] [ -l ] [ +interval ]

    2**、命令列表**

    命令说明
    -E使用加密模式
    -a显示所有打印机的任务
    -h指定远程服务器
    -U设置别名
    -P设置目标打印机
    -l以长格式汇报信息

    cancel --取消打印任务

    cancel指令用来取消已经存在的打印任务。

    此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

    1、语法

    cancel [ -E ] [ -U 'HR ] [ -a ] [ -h hostname[:port] ] [ -u 'HR ] [id ] [ destination ] [ destination-id ]

    2、命令列表

    命令说明
    -E使用加密模式
    -a取消所有打印任务
    -h指定远程服务器
    -U设置别名
    -u取消被指定用户拥有的打印任务

    lprm --删除打印任务

    lprm指令用来删除当前打印队列上的任务,如果没有指定,那么就删除当前打印任务。您可以指定一个或多个职务ID编号来取消这些职务,或者使用选项”-”取消所有作业。

    此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

    1、语法

    lprm [ -E ] [ -U 'HR ] [ -h server[:port] ] [ -P destination[/instance]] [ - ] [ job ID(s) ]

    2、命令列表

    命令说明
    -E使用加密模式
    -P指定打印机
    -h指定远程服务器
    -U设置别名

    lpstat --查看打印任务

    lpstat指令用来显示当前任务、打印机的状态。如果没有参数,那么就显示打印队列。

    此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

    1、语法

    lpstat [选项]

    2、命令列表

    命令说明
    -E使用加密模式
    -H显示远程打印机的名字和端口
    -R显示任务的顺序
    -U设置别名
    -W设置要显示哪个任务
    -a显示允许打印的打印机队列
    -c显示打印机类
    -d显示默认打印机
    -h server[:port]指定备用服务器
    -l显示打印机、类或作业的长列表。
    -o显示指定打印机的队列
    -p显示指定打印机,无论打印机是否激活
    -r显示CUPS是否在运行
    -s显示状态总和
    -t显示所有的状态。等价于"-r", “-d”, “-c”,"-v", “-a”, “-p”,"-o"一起使用
    -u [user(s)]显示由指定用户排队的打印作业列表。如果未指定用户,则列出当前用户排队的作业。
    -v [printer(s)]显示打印机及其连接的设备。如果没有指定打印机,则列出所有打印机。

    以上摘自:http://blog.chinaunix.net/uid/29270124/list/1.html?year=201903

    第二部分

    列出当前系统已安装的所有打印机

    lpstat -p
    

    列出当前系统的默认打印机

    lpstat -d
    

    显示打印队列

    lpstat
    

    删除打印任务

    lprm job-id
    

    使用默认打印机打印文件

    lpr file-name
    

    使用指定打印机打印文件

    lpr -P printer-name file-name
    

    显示默认打印机选项

    lpoptions -l
    

    显示指定打印机选项

    lpoptions -p printer-name -l
    

    指定纸张大小、方向

    lpr -o landscape -o fit-to-page -o media=A4 file-name
    

    使页面自动缩放至纸张大小

    lpr -o fit-to-page file-name
    

    指定打印份数

    lpr -#number-of-copies file-name
    

    只打印奇数页

    lpr -o page-set=odd file-name
    

    只打印偶数页

    lpr -o page-set=even file-name
    

    设置页码范围

    lpr -o page-ranges=1-4,5,6-12 file-name
    

    设置标语页

    lpr -o job-sheets=start,end file-name
    

    其中,start与end可以替换为classified、confidential、secret、standard、topsecret与unclassified。

    例子,缩放页面以自适应纸张且只打印奇数页的命令如下:

    lpr -o page-set=odd -o portrait -o fit-to-page -o media=A4 file-name
    

    以上摘自:https://www.cnblogs.com/quantumman/p/11992587.html

    附:

    摘自:https://www.cnblogs.com/murongmengjie/p/7380512.html

    cupsd 通用打印程序守护进程

    cpusd【-c conig-file】【选项】

    -c config-file  设置配置文件,默认配置文件是 /etc/cpus/cpusd.conf

    -f  进行前台打印

    -h  显示帮助信息

    -t  测试配置文件中的语法错误

    启动cups守护进程  service cpus start

    关闭cups守护进程  service cups stop

    重新启动cups守护进程  service cups restart

    禁用xerox(复印)打印机功能  cups disable xerox

    cupsaccept 指示打印系统接受发往指定目标打印机的打印任务

    启用打印机以接受打印请求  cupsaccept  printer-name

    iPadmini  配置lp打印服务

    iPadmini【选项】

    -p printer 命令下面的所有options所引用的printer。如果printer不存在,就创建它

    -d【dest】  使现有目标dest称为新的系统默认目标

    -p  指定打印机的名称

    -E  使打印机开始打印

    -m  指定安装的pdd文件

    -v  指定打印所用的设备URL

    带有-p选项的iPadmini命令,可以将打印添加到cups中    ipadmin -p 打印机名称 -E -V URL 设备 -m pdd文件

    iPadmini命令通过定义打印机和设备来配置lp打印服务,它被用于:添加和更改打印机

    从服务上删除打印机

    设置或者更改默认目的地

    为打印机故障定义警告

    安装打印机

    为远程打印服务定义打印机

    lp 打印文件

    lp命令用于将文件打印请求发送到打印机进行打印

    lp【选项】文件

    -c  lp命令运行的时候立即复制要打印的文件

    -d  制定将作业发送到的打印队列

    -m  打印完之后发送邮件

    -s  禁止自动返回作业数目

    -n  指定打印输出的副本数目

    使用文件的一个副本打印/etc/motd文件的30个副本,并且要用邮件通知用户完成作业  lp -c -m -n30 -dlp0:lpd0 /etc/motd

    排队Myfile文件并返回作业编号  lp myfile

    排队myfile文件并禁止返回作业编号  lp -s myfile

    在连接到设备dlp0的打印机lp0上打印文件 /etc/motd   lp /etc/motd

    适用后端标志 -f -a并带上作业标题blah打印文件 /etc/motd 文件  lp -t “blah” -o -f -o -a  /etc/motd

    lpstat  显示行式打印机的状态信息

    lpstat【选项】

    -a  显示打印机的接收状态

    -c  显示打印类

    -p  显示打印状态,启用或禁止俩状态

    -s  显示默认打印机

    -E  与打印机连接时加密

    -d  显示默认打印机

    -t  显示所有状态信息

    -l  显示长格式

    显示所有打印队列的状态    lpstat

    要显示所有打印机的长状态  lpstat -l

    显示打印队列lp0中的一个作业号  lpstat -p lp0

    查看可用打印的列表  lpstat  -p  -d

    lpr 排队打印作业

    lprm  从打印队列中删除任务

    lpc  控制打印机

    lpq  检查假脱机队列

    lpinfo  显示驱动和设备

    lpmove  将作业从一个队列移动到另一个队列

    cancel  取消已存在的打印任务

    cupsdisable  禁用指定的打印机或类

    cupsreject  指示打印系统拒绝发往指定目标打印机的打印任务

    cupsenable  启动指定的打印机

    展开全文
  • linux打印机打印 我们朝着传闻已久的无纸化... 这是因为大多数Linux发行版(以及MacOS)都使用通用Unix打印系统( CUPS ),其中包含当今大多数打印机的驱动程序。 这意味着Linux打印机提供了比Windows更广泛的...

    linux装打印机打印

    我们朝着传闻已久的无纸化社会迈出了重要的一步,但是我们仍然需要不时打印文档的硬拷贝。 如果您是Linux用户,并且有一台没有Linux安装盘的打印机,或者您正在寻找新设备,那么您很幸运。 这是因为大多数Linux发行版(以及MacOS)都使用通用Unix打印系统( CUPS ),其中包含当今大多数打印机的驱动程序。 这意味着Linux为打印机提供了比Windows更广泛的支持。

    选择打印机

    打开打印数据库。 这是检查各种打印机与Linux兼容性的好资源。

    这是与Linux兼容的Canon打印机的一些“打开打印”结果。

    Canon printers listed on Open Printing site

    下面的屏幕快照是Open Laser针对Hewlett-Packard LaserJet 4050的结果-根据数据库,它应该“完美”地工作。 列出了推荐的驱动程序以及一般说明,让我知道它可以与CUPS,行式打印守护程序(LPD),LPRng等一起使用。

    HP printer details from Open Printing site

    在所有情况下,最好在购买打印机之前检查制造商的网站并询问其他Linux用户。

    检查您的连接

    有几种将打印机连接到计算机的方法。 如果您的打印机是通过USB连接的,则在Bash提示符下发出lsusb可以很容易地检查连接。

     $  lsusb 
    

    该命令返回总线002设备004:ID 03f0:ad2a惠普—信息不多,但是我可以告诉打印机已连接。 通过输入以下命令,可以获取有关打印机的更多信息:

     $  dmesg | grep -i usb 
    

    结果更加冗长。

    Results of dmesg command

    如果您尝试将打印机连接到并行端口(假设您的计算机具有并行端口,这些天很少见),则可以使用以下命令检查连接:

     $  dmesg | grep -i parport 
    

    返回的信息可以帮助我为打印机选择正确的驱动程序。 我发现,如果我坚持使用流行的名牌打印机,那么大多数时候我会得到很好的结果。

    设置打印机软件

    Fedora Linux和Ubuntu Linux都包含简单的打印机设置工具。 Fedora维护着一个出色的Wiki,可以解决打印问题。 这些工具可以从GUI的“设置”中轻松启动,也可以通过在命令行上调用system-config-printer轻松启动。

    Printer Settings

    惠普的支持Linux打印的HP Linux Imaging and Printing (HPLIP)软件可能已安装在Linux系统上; 如果没有,您可以下载最新版本以进行分发。 打印机制造商EpsonBrother也有包含Linux打印机驱动程序和信息的网页。

    您最喜欢的Linux打印机是什么? 请在评论中分享您的意见。

    翻译自: https://opensource.com/article/18/11/choosing-printer-linux

    linux装打印机打印

    展开全文
  • Android调用打印机

    2019-07-22 09:47:00
    打印机其实和Android没有什么大的关系,和linux内核关联才是比较强的。 最终的结果是要在Android实现驱动打印机,但是一般调试一个新的驱动的流程是这样的:1.先在linux PC上进行测试。2.在标准嵌入式linux上进行...

            打印机其实和Android没有什么大的关系,和linux内核关联才是比较强的。

           最终的结果是要在Android实现驱动打印机,但是一般调试一个新的驱动的流程是这样的:1.先在linux PC上进行测试。2.在标准嵌入式linux上进行调试。3.改装到Android中去。

           为什么这么安排?因为资源是递减的,可以在第一阶段确定设备有无问题,以及该设备在linux工作流程;在第二阶段是因为标准的嵌入式linux还是遵循GNU规定的,包括大部分,这个阶段验证该设备能否在ARM架构的上顺利编译通过;第三阶段就是实用阶段了,因为最终要在这个不是怎么遵守GNU规定的Android系统上运行的。

     

    第一阶段

           我测试了3台打印机:1.Canon iP2780 2.Canon MX428 3.HP Deskjet 1000。由于的我作业系统就是Linux,在Linux PC上很快就逐个搞定。第1台用的是这里的驱动(包括deb包和部分开源源码)加上这个《iP2700 series IJ Printer Driver Ver. 3.30 for Linux (操作说明)》,机器就可以正常使用了;第2台和第一台驱动模式都是一样的只不过在这里;第3台用的是这里的一级一级选择最终下载文件是:hplip-3.14.1.run,直接执行会把所缺失的东西全部安装,可以成功使用。

           如果我仅仅是一个使用者,那么到现在可以就结束了。但是我是一个开发者,我最终的目标是移植到Android中,所以我的目的地不在这里,我要继续深度挖掘。要挖掘的点很多,这里说一个最迫切的就是如何用命令打印一个文件?这个问题似乎很奇怪,但是我也不知道如何做。不过最终找到了就是:lp或者lpr加文件名,就可以打印出一个文件了。例如:

    lp ~/hello.pdf

     

           找这么一个命令我就花费了几个小时的时间,这里我就有一种很强的预感,前边的路很还很遥远。(整理文章的顺序和实验的步骤会稍有不同,其实这个命令在《iP2700 series IJ Printer Driver Ver. 3.30 for Linux (操作说明)》是有的,但是这个“操作说明”是后来才看到的)。

           现在看来我不应该草率进行去进行第二个阶段,应该好好的研究一下Linux的打印系统。总结文章就按照最好的流程来吧。先说我是怎么了解了linux的打印系统的。

           意外发现的这个本书《Linux系统管理技术手册》,真是对我了解Linux的打印系统帮助是最大的,涵盖的知识面也是最全的,以后的阶段中用到的自认为是新的东西,其实这本书上都详细讲解了。讲解打印不是讲解如何打印就好了,而是详细的讲解了打印机的原理,要经过哪些步骤,打印机语言等等,如果是国人写的书一般会说“此内容不在本书要讨论的范围内”一句概括。那一章我反复看了一周时间才算有些眉目。

           一切终归一张图:

           其实到目前为止我应该好好规划一下我要设计的东西,实现中我急功近利了,并没有做完全的规划就进行了第二阶段。

    小规划:

           打印机选择:推荐选择HP的,激光的喷墨的都可以,HP是全力支持Linux的。

           打印系统的选择:

                  大的架构是CUPS,主要的模块有:

                         后台:

                         过滤器:

                         PPD:

           其实在图中随便从上到下连一条线,就可以组合成一套打印系统。下面进入第二阶段吧。 

           在测试过程中还意外发现CUPS一个bug,或者是我还没有已经有解决方案我还没有发现而已。那就是CUPS缺少错误处理, 一台打印机,如果出现墨盒用完,墨盒实效等等问题的时候,CUPS是没有告知用户的。比如我的HP Deskjet 1000,在使用CUPS打印时出现了这个情况:打印机无响应,用lpstat -t查看到的状态是“Rendering completed”。这就找不到问题所在了,不过同样的情况下在Windows下找到了答案:

     

    第二阶段

           调试Canon的打印机的时候我选择了这样的架构:CUPS+cnijfilter-source-3.30-1.tar.gz.

    1.配置Linux内核(作用:生成设备节点)

    make menuconfig 选上USB打印机选项:
           Device Drivers  --->
                          [*] USB support  ---> 
                                       <*>   USB Printer support     
    (配置成功后,插入打印机后设备节点会出现在/dev/usb/目录下一般名字"lp0")  

     2.交叉编译CUPS 1.3.9

    #!/bin/sh
    
    # 1.下载源码
    wget http://www.cups.org/software/1.3.9/cups-1.3.9-source.tar.gz &&
    
    # 2.解压并打开
    tar xvzf cups-1.3.9-source.tar.gz && cd cups-1.3.9 &&
    
    # 3.配置
    ./configure --host=arm-linux --target=arm-linux --build=i686-linux CC=arm-linux-gcc CXX=arm-linux-g++ LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar --disable-gnutls --disable-gssapi --disable-dbus --prefix=/ &&
    
    # 4.修改Makefile使其不编译man
    sed -i '22s/locale man monitor/locale monitor/' ./Makefile &&
    
    # 5.编译并安装
    make && make install DSTROOT=/work/rootfs/rootfs_qtopia_qt4 &&
    
    echo "cups build install ok!"

     

    3.交叉编译ghostscript 8.15

    #!/bin/sh
    
    DESTDIR=/work/rootfs/rootfs_qtopia_qt4
    
    # 1.下载源码
    wget http://iweb.dl.sourceforge.net/project/ghostscript/GPL%20Ghostscript/8.15/ghostscript-8.15.tar.gz &&
    
    # 2.解压源码
    tar xvzf ghostscript-8.15.tar.gz &&
    
    # 3.分别拷贝为PC版本和ARM版本
    cp ghostscript-8.15 ghostscript-8.15-arm -r && mv ghostscript-8.15 ghostscript-8.15-pc &&
    
    # 4.编译PC版本
    # -DHAVE_SYS_TIME_H是解决warning: implicit declaration of function 'gettimeofday'
    cd ghostscript-8.15-pc && ./configure && make XCFLAGS=-DHAVE_SYS_TIME_H=1 && cd ../ &&
    
    # 5.配置arm版本
    cd ghostscript-8.15-arm && ./configure --host=arm-linux &&
    
    # 6.修改Makefile中STDLIBS=-lm 为STDLIBS=-lm -static
    sed -i '257s/STDLIBS=-lm/STDLIBS=-lm -static/' ./Makefile &&
    
    # 7.拷贝PC版本工具
    mkdir obj && cp ../ghostscript-8.15-pc/obj/genarch ../ghostscript-8.15-pc/obj/genconf ../ghostscript-8.15-pc/obj/echogs ./obj/ &&
    
    # 8.编译
    make XCFLAGS=-DHAVE_SYS_TIME_H=1 &&
    
    # 9.安装(这个版本不支持make install的DESTDIR指定根目录所以要手动拷贝,以后要调整目录)
    mkdir -p ${DESTDIR}/usr/local/share/ghostscript/8.15/ &&
    cp -r lib ${DESTDIR}/usr/local/share/ghostscript/8.15/ &&
    cp -r Resource ${DESTDIR}/usr/local/share/ghostscript/8.15/ &&
    cp bin/gs ${DESTDIR}/bin/

     

    4.交叉编译gutenprint 5.2.9

    #!/bin/sh
    
    # 1.下载源码 项目地址:http://sourceforge.net/projects/gimp-print/files/gutenprint-5.2/5.2.9/
    wget http://softlayer-ams.dl.sourceforge.net/project/gimp-print/gutenprint-5.2/5.2.9/gutenprint-5.2.9.tar.bz2 &&
    
    # 2.解压
    tar xvjf gutenprint-5.2.9.tar.bz2 &&
    
    # 3.分别拷贝为PC版本和ARM版本 
    cp -r gutenprint-5.2.9 gutenprint-5.2.9-arm && mv gutenprint-5.2.9 gutenprint-5.2.9-pc &&
    
    # 4.编译PC版本
    cd gutenprint-5.2.9-pc && ./configure && make && cd ../ &&
    
    # 5.配置arm版本 
    cd gutenprint-5.2.9-arm && ./configure --host=arm-linux --target=arm-linux --build=i686-linux CC=arm-linux-gcc CXX=arm-linux-g++ LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar --with-gimp2=no --without-gimp2 --enable-cups-ppds --enable-cups-level3-ppds --without-ghostscript --without-foomatic --disable-libgutenprintui2 &&
    
    # 6.拷贝PC版本工具 
    make || cp ../gutenprint-5.2.9-pc/src/xml/.libs/extract-strings ./src/xml/.libs/ &&
    
    # 7.编译并安装
    make && make install DSTROOT=/work/rootfs/rootfs_qtopia_qt4 &&
    
    echo "gutenprint build install ok!"

     

    5.交叉编译hpijs-2.1.4

     

    #!/bin/sh
    
    # 1.下载源码 项目地址:http://sourceforge.net/projects/hpinkjet/files/
    wget http://superb-dca2.dl.sourceforge.net/project/hpinkjet/hpijs/2.1.4/hpijs-2.1.4.tar.gz
    
    # 2.解压源码
    tar xvzf hpijs-2.1.4.tar.gz && cd hpijs-2.1.4
    
    # 3.配置
    ./configure --host=arm-linux --target=arm-linux --build=i686-linux CC=arm-linux-gcc CXX=arm-linux-g++ LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar
    
    # 4.修正语法错误 dj3320.cpp第403行和registry.cpp第249行 开头的char改为const char
    sed -i '249s/\tchar\t/\tconst char\t/' registry.cpp
    sed -i '403s/ char/ const char/' dj3320.cpp
    
    # 5.编译并安装
    make && make install DESTDIR=/work/rootfs/rootfs_qtopia_qt4

     

    6.启动各个模块

           以上是我编译的源码所有记录,它们每个都是可以单独运行验证的。

    启动cups:$ /etc/init.d/cups start

    CUPS可以将/etc/cups/cupsd.conf的日志级别LogLevel设置为debug,这样如果启动失败会将原因打印到/var/log/cups/error_log中。我没有遇到什么大的bug,遇到的都是缺少目录问题。

     

    7.最简的打印系统ghostscript+hpijs

           这个方案主要是参考了《基于嵌入式Linux的打印控制系统的设计》,这个是比较适合嵌入式打印机的,不占资源,不需要一些相比比较鸡肋的功能。保存了一份到资源中,下载(注:最好是自己源码编译,不保证对所有cpu可用,必须是ARM架构且在ARMv7以上)直接可以用。可以直接安装主到Android中或者普通的嵌入式Linux中。

     

    8.无系统的打印机实现

           这个是更简的,就是没有操作系统的控制器来操作打印机,是我在调试这个HP Deskjet 1000意外发现一个牛人实现的《USB HOST+HP DeskJet 1000打印机》。当然我是真实的实验了他提供的BIN文件,他用是TQ2440,我在MINI2440上直接测试也是没有问题的,打印出来的内容是“HP802黑色墨盒加墨方法”,这两款开发板都是采用的S3C2440这个ARM的CPU。虽然没有提供源码,不过也算是提供了一种可能,如果以后有这方面的需求可以顺这条路研究下去。

     

    第三阶段 移植到Android中预留

    1. 最简打印移植到Android中

           首先强扭过去,库不用担心,都是才用的静态链接编译的。关键是“文件系统层次结构标准”Android没有遵守,经过实验强制建立了两个目录,才能正常使用/usr和/tmp目录。
           需要优化的几点:1.关于/tmp目录的调整 2.关于/usr目录的调整 3.设备节点的动态创建,。。。。
                   1.关于/tmp目录的调整 在stackoverflow上讨论出一个解决方案是用/data/local/tmp来代替;
                   2.关于/usr目录的调整 重新编译ghostscript调整的/system/usr/..目录;
                   3.设备节点 还没有调试;

        4.打印中英文字库的问题;

    Fix /tmp目录问题:

           为了按照功能区别开来,最终选用/data/misc/printer/tmp/目录作为/tmp目录。将gs代码gp_unifs.c中tmp/目录更换。

           $ sed -i '74s/"\/tmp\/"/"\/data\/misc\/printer\/tmp\/"/' ./src/gp_unifs.c

    Fix /usr目录问题:

      一般是usr是在根目录下的,Android中是在/system/上的,ghostscript编译时要进行调整,调整的结果是在配置时添加:--prefix=/system/那么ghostscript就会把资源文件调整到/system/usr/share/....目录下,这样刚好可以解决问题。

    Fix设备节点问题:

      根据《Android与标准Linux对比》经验和实验得出:Android中用ueventd+VOLD来完成了普通Linux中udev的工作,前者负责创建设备节点,后者用于处理。插入打印机后,会自动创建设备节点/dev/usb/lp0。、
    ueventd默认创建出来的是只有root用户才能够访问的权限,Android中改变权限的方法是在uevent.${BOARD}.rc中添加如下:

    #For USB printer
    /dev/usb/lp0 0666 system system

    再次查看设备节点权限,正常。


    Fix字体问题:

      一直测试打印的都图片,打印中英文的时候会报错,根据具体报错原因打到解决方法。

    #!/bin/sh
    # 说明:本脚本下载并打包GS所需字库
    # 版本:2013-01-17
    # 将打包好的字库放到
    # Android: /system/usr/share/ghostscript/8.15/Resource/ 中解压
    # Linux : /usr/local/share/ghostscript/8.15/Resource/ 中解压
    # * 解决了常用中英文打印所需的字库
    
    DESTDIR=${PWD}/system
    
    # 1.下载gs-fonts源码 项目地址:http://sourceforge.net/projects/gs-fonts/
    wget http://superb-dca2.dl.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/ghostscript-fonts-std-8.11.tar.gz &&
    
    # 2.解压gs-fonts源码
    tar xvzf ghostscript-fonts-std-8.11.tar.gz &&
    
    # 3.下载gs-9.04,获取其中的字库 项目地址:http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/9.04/
    wget http://softlayer-ams.dl.sourceforge.net/project/ghostscript/GPL%20Ghostscript/9.04/ghostscript-9.04.tar.bz2 &&
    
    # 4.解压gs-9.04源码
    tar xvjf ghostscript-9.04.tar.bz2 &&
    
    # 5.建立字库目录 Font
    test -d ./Font && rm -rf ./Font ; mkdir ./Font &&
    
    # 6.拷贝字库到Font目录中
    # 拷贝gs-fonts
    cp -rf fonts/* ./Font &&
    # 拷贝gs-9.04的字库 
    cp -rf ghostscript-9.04/Resource/Font/* ./Font &&
    
    # 7.打包字库
    tar cvzf Font.tar.gz Font &&
    
    echo "Fonts ok!"

     

      字体的问题解决了,Android中也有自己的字体位于/system/fonts中,其中ttf格式居多,而这里用的大多都是pfb格式的。


    ---------------------
    作者:kangear
    来源:CSDN
    原文:https://blog.csdn.net/kangear/article/details/18141741 

    转载于:https://www.cnblogs.com/DreamRecorder/p/11224070.html

    展开全文
  • 一、Linux打印系统发展路线图 在Unix世界里,PostScript语言是主要用于打印的接口。所有主要的应用程序都会输出通用的PostScript页面,而这些PostScript经过打印系统处理后再被打印出来。打印在Uni...
    一、Linux打印系统发展路线图

      在Unix世界里,PostScript语言是主要用于打印的接口。所有主要的应用程序都会输出通用的PostScript页面,而这些PostScript经过打印系统处理后再被打印出来。打印在Unix世界的演化中总是围绕着PostScript页面描述语言展开的。该语言是由Adobe公司开发的,它是一个成熟的、用于描述一个文档每一页面内容的程序语言。如今很多打印机中都有一个嵌入式的PostScript解释器,它负责使用PostScript将页面在打印纸上再现出来。现在,所有桌面Linux应用程序都有一个打印选项,可以生成PostScript数据来打印整页的文档。这种方法和其它面向桌面的操作系统有很大的不同,大部分Unix系统是提交任务至队列中,并且希望它能够正确地打印出来。但是并没有一种统一的收集打印机信息或工作状态的方法,这严重影响了那些需要提供打印能力的Linux应用程序。在Linux中,虽然PostScript是产生打印文档的事实上的标准,但打印机本身却并不需要知道PostScript,因为这需要使用到相对比较昂贵的技术。

      在一般情况下,尤其是在低端打印机中,PostScript数据要被翻译成打印机本地的页面描述语言。这是通过使用一个特殊的转换过滤器来完成的。一般而言,一个过滤器实际上就是一个特殊的程序,它可以处理输入的数据,并且输出经过加工的数据。现在,Linux打印系统中使用着各种不同的过滤器:转换过滤器、I/O过程器(负责将数据传送至设备)、处理过滤器(转换文档数据)。打印系统的基础是一个假脱机程序(Spooler)。它可以管理打印任务队列,而一个队列通常和一个打印机相关联,并且用户提交的任务都是按照先进先出的原则来处理的。当一个打印任务被处理时,任务中的数据在送达打印机前一般都要通过一定数量的过滤器。

      使用PostScript页面描述语言进行打印的优点是极大的简化的设计,不用像Windows系统一样安装各种打印机驱动程序。但是它的缺点是许多打印机(特别是低端打印机)不能解析PostScript输出,Linux系统对此的解决方法是从打印机队列调用Ghostscript(url.gif
    http://www.ghostscript.com )软件包支持你的打印机。要查看Ghostscript在你的Linux发行版本上支持什么打印机列表,可以在命令行下键入:



    $gs --help



      gs命令会列出一份它支持的打印机和输出设备的名单。gs命令使用-r选项设置打印分辨率。调整ghostscript的输出结果,假如gs 的输出不能让人满意,还有一些办法::输出的位置及大小。位置,大小,还有图像在页面上的视觉比例是由ghostscript中的打印机驱动程序所控制的. 如果你发现打印出来太短, 太长或是大了两倍, 你可能会想要看一下驱动程序的原始模组并且调整任何所能想到的参数。

      一代的BSD LPD打印系统,这个打印系统源自于伯克利的Unix发行版,BSD LPD是用于Linux发行版(比如Slackware)的第一个打印系统。现在仍然有发行版(Debian、Slackware)还会带有这种假脱机打印程序。BSD打印系统核心的功能仅限于队列任务。它由一个后台程序(lpd)及一些位于/etc目录下的配置文件组成,在这些配置文件中有着队列和属性的一些定义。在相应的目录下,还有一系列基本的用于提交、删除和处理任务使用的命令(lpd、lprm、lpc)。BSD LPR是BSD打印系统重要一个部分,因为它定义了LPD网络协议,而该协议是用于提交任务至远程LPD后台程序的,并且它允许Unix工作站实现一个打印服务器的功能。现在,所有的网络打印机都支持这个协议。由于它使用范围非常广泛,所有其它打印系统都要求至少可以和其它的LPD后台程序进行会话。 下面是如何在printcap文件中定义一个远程队列的例子。在这个例子中,任务将会被即时传送至远程监控程序的队列之中,并且不会在本地机进行处理。

    remote:
     :sd=/var/spool/lpd/remote: :rm=printserver.domain.tld:
     :rp=queue:
     :mx#0:

      LPD协议传送数据被分成两个部分。首先会生成一个描述任务的控制文件,并且传送该文件。该控制文件包含有源用户、文件名和所有与工作相关的信息。接着就会传送数据文件,它的格式完全取决于目前正在使用的打印语言。

      第二个使用较广、较有影响力的基于BSD的打印系统是LPRng(LPR Next Generation),该系统实际上重写了原来的BSD LPR系统,但原有概念都保留了下来。保留了printcap文件的格式,但是它还引入了一些新的属性以使配置过程更加灵活。过滤器定义可以被独立出来,并且还可以定义真正的I/O过滤器。用户也可以通过在本地机主目录下编写printcap文件来定义自己的队列。LPRng打印系统的优点:1、不需数据库环境就可以执行lpr lpc lprm命令。2、打印队列可以自动转向。3、打印工作可以自动保留。4、多重打印机可以使用同一打印队列。5、客户端不需这些SUID root。6、可以大幅度提高安全性检查。7、可以使用Printconf工具维护配置文件(/etc/printcap)。LPRng还提供了模拟Unix System V风格的打印命令(lp、lpstat等)。随LPRng发行的还有IFHP过滤器,它可以用在队列中,用于自动转换一些数据格式(比如打印ASCⅡ文本或图像)。

      通用Unix打印系统(CUPS) 是比较新的打印系统。CUPS 软件为 Unix/Linux 用户提供了以有效而可靠的方式来管理打印的方法。它生来就支持 IPP(因特网打印协议),IPP协议的四个主要目的是:1、帮助用户寻找为了上可用的打印机。2、 传送打印作业。3、传送打印机状态信息。4、取消打印作业。并有 LPD、SMB(服务器消息块,例如与 Microsoft Windows 连接的打印机)和 JetDirect 接口。CUPS采用的另外一个标准是PPD(PostScript Printer Definition)文件格式,这是Adobe另外一个用于PostScript打印机的标准。从以上可以看出CUPS打印系统是目前Linux打印系统中最好的选择,从Red hat Linux 9.0开始它取代了LPRng成为Linux缺省安装的Linux打印系统。Linux支持许多种类的打印机,从老式的针式打印机,到最新的激光打印机,都可以使用。了解目前Linux 支持什么打印系统非常重要,下面我们看看几个主流Linux发行版本使用的打印系统。CUPS还采用了很多过滤器用于传送数据至打印机的方法。与BSD类的假脱机程序不同的是,这是通过一种更加智能的方式来完成的。下面是在CUPS中可用的部分过滤器:

      1.后端过滤器。它可以提供最终数据进行传送的端点。这些过滤器可用于并口、TCP/IP套接字连接、LPD和其它端点的连接。

      2.文档转换过滤器。该过滤器是作为CUPS一个标准配置一起发行的。它可以转换图像、ASCⅡ文本、PDF文件和HP-GL/2矢量文档至PostScript。

      3.接口过滤器。它可以将文档从PostScript转换至其它过渡的文件格式。

      表-1 主流Linux发行版本使用的打印系统

    发行版本和产品序列号 默认安装打印系统 可以兼容打印系统
    RedHat Enterprise Linux 4.0 CUPS LPRng
    CentOS 4.2 CUPS LPRng
    Mandrake Linux LE2005 CUPS LPRng
    Debian GNU/Linux 3.1r0 BSD LPD CUPS, LPRng
    Slackware Linux 10.2 LPRng 无
    SuSE Linux 9.3 CUPS 无
    Turbo Linux 10F CUPS 无
    Gentoo 2005.0 CUPS 无

      CUPS是跨桌面的,也就是说你可以在GNOME或KDE下安装你的打印机工作。CUPS主要功能:

      Print 将文件发送到特定的URI的打印机 Validate 设定打印优先级别

      Creat 将文件作为打印作业处理 Cancal 取消打印作业

      Pause 暂停打印作业 Resume 恢复打印作业

      Purge 清除打印作业

      下面我们看如何为你的Linux系统配置打印系统。以Red Hat Enterprise Linux 4.0为例。

      二、打印机驱动程序查询和安装

      一般来说我们购买的普通打印机附带的光盘中没有Linux的驱动,如果我们不知道是否可以在Linux下使用。这时可以查看:url.gif
    http://www.linuxprinting.org/ 站点,这里包含了大量关于在 Linux 上打印的信息。点击网页右列的:Printer Listings。进入查询界面后输入打印机厂商和型号后,即可进行查询。通常会得到四个查询结果:

      1、perfectly(完全支持Linux下打印,并且可以使用打印机所有功能和打印分辨率)。

      2、mostly(大部分功能支持Linux下打印,有一些小缺陷)。

      3、partially(只有一部分功能支持Linux下打印,许多功能不能实现例如彩色打印机只能打印黑白图像)

      4、paperweight(完全不支持Linux下打印)。笔者使用的是HP 的designjet430Cannon查询结果截图如下:



    图1 打印机查询结果



      HP designjet430查询结果是:perfectly ,有三个企鹅标志。经过测试打印图像时能达到硬件的最大分辨率:1440*1440 dpi。 url.gif
    http://www.linuxprinting.org/ 网站提供的驱动程序的后缀是.PPR文件,最简单的安装方法是使用系统提供的打印机管理工具,双击“添加打印机”在选择驱动程序时指向下载的PPR文件即可。

      三、配置CUPS打印系统

      如果系统是从以前的使用 LPRng打印系统 的 Red Hat Linux版本升级而来的,升级过程不会使用 CUPS 来替代 LPRng 系统仍会继续使用 LPRng。要使用CUPS首先需要停止原来的打印守护进程,启动CUPS服务一共分成3个步骤:

      1、停止原来的打印守护进程:



    # chkconfig –level 2345 lpd off



      2、启动CUPS守护进程:



    # chkconfig –level 2345 cups on



      3、切换打印系统,运行命令:



    # redhat-switch-printer



      切换界面见图-2(另外如果需要恢复使用LPRng打印系统, 以上过程是可逆的。






    图-2切换CUPS和LPRng打印系统

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-123307/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10294527/viewspace-123307/

    展开全文
  • 更新:我切换到Linux服务器,并在适当的驱动程序上使用CUPS。 这使您可以从CLI完全控制打印机(双面打印,装订等)。 用法示例: package main import ( "log" "github.com/jadefox10200/goprint" ) func main ...
  • NWJS(NodeJS)调用打印机 - 打印小票

    千次阅读 2020-06-27 22:01:25
    调用小票打印机打印小票,功能和超市收银结算功能相同 使用NWJS包装VueJS前端代码实现exe安装包和可执行文件 2 调查 经过调查,主要有如下几种思路。 2.1 思路1:使用IP+Port方式调用网络打印机 代码如下,只...
  • B/S架构条码打印,直接调用打印机指令编程(在TSC系列条码机上测试通过);TSC打印机指令语言为TSPL,研究了几天,终于实现了在尾部页面调用客户端条码打印机的实现方法,当时写程序的时候,找遍了互联网都没有完整...
  • 系统调用号相当重要,一旦分配就不能再又任何变更,否则编译好的应用程序就会崩溃。此外,如果一个系统调用被删除,它所占用的系统调用号也不允许被回收利用,否则,以前编译过的代码会调用这个系统调用,但
  • 导读:在 Linux 命令行进行打印的内容比单单一个 lp 命令多得多,让我们来看一些可用选项。 本文字数:4305,阅读时长大约:5分钟https://linux.cn/...
  • 工作中linux安装打印机和扫描仪

    千次阅读 2019-05-23 16:55:14
    CentOS 连接联想打印机,联想Lenovo M7650DNF打印机Linux下驱动很难找,看到一篇日志说是联想的打印机可能跟brother的驱动相似。 设置过程是:系统-管理-打印-新建,在网络打印机中选择Lenovo M7650DNF型号,然后...
  • 本文将记录在linux操作系统中实现系统调用监测功能的...系统调用linux系统中提供给用户态进程的一组可以与硬件设备(如CPU、磁盘、打印机等)进行交互的接口。对于用户态程序员来说它就和一个API函数差不多,同样...
  • 初探Linux系统

    千次阅读 2019-06-09 22:29:52
    初探Linux系统前言学习的框架认识Linux系统文件树流图文件树结构释义:电子书链接 前言 linux是一个很强大开源的系统,笔者作为一个嵌入式Linux学习者,同样被Linux的开源文化深深的吸引着。对于大部分职业可能...
  • 第10章 系统调用接口 系统调用接口的功能 内核为用户与硬件设备(例如CPU磁盘打印机等)交互提供了一个接口该接口被称为系统调用接口它的功能是 使用户编程更加容易把用户从学习硬件设备的低级编程特性中解放出来 可以...
  • linux centos fedaro 安装LBP2900打印机 1、下载驱动 wget ...
  • 1、打印机的组成:打印机有自己的CPU、内存、操作系统甚至硬盘,如果是一台网络打印机的话,那么它还应该运行着自己的web服务器,用户可以访问其网站进行配置和管理。2打印机的语言:打印机使用页面描述语言(Page ...
  • Linux总结

    千次阅读 多人点赞 2020-01-14 20:36:45
    二 、初探Linux 2.1 Linux简介 2.2 Linux诞生简介 2.3 Linux的分类 三 、Linux文件系统概览 3.1 Linux文件系统简介 3.2 文件类型与目录结构 四 、Linux基本命令 4.1 目录切换命令 4.2 目录的操作命令(增删改...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的...应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...
  • Linux下hp打印机驱动hplip分析

    千次阅读 2019-04-24 09:57:05
    每种通信通信都有关于打印机状态值的定义,另外从这款打印机的DeviceId可以看出应该同时也是支持PJL的,这里先只说第5种LEDM通信方式.LEDM的大体通信方式是基于HTTP,通信USB传输一个HTTP的GET指令,然后再通过USB读取...
  • 用于从Node.js和Electron打印PDF文件的实用程序。 :white_heavy_check_mark: 在Windows和类似Unix的操作系统上工作。 :white_heavy_check_mark: 支持和等标签打印机。 安装 安装: yarn add pdf-to-printer 或 ...
  • 随着项目功能模块的结束,项目进行最后的测试阶段,准备上线,打印机无法上服务器,虽然佳博打印机可以设置Linux打印(我放弃了),于是我尝试把打印机的单模块脱离项目,在本地运行利用服务器请求本地打印机进行...
  • linux下通过USB端口进行打印,某些时候我们需要检测打印机是否正常工作,这时就可以通过命令行执行打印操作。  首先,接上USB打印机。上电后,查看/dev/usb/lp0的设备是否存在。  接着,设置打印机的访问权限。...
  • UNIX/Linux系统调用下的文件操作

    千次阅读 2019-07-29 09:59:57
    在UNIX/Linux系统下,几乎所有资源都是以文件形式提供了,所以在UNIX/Linux系统下一切皆文件,操作系统把它的服务、功能、设备抽象成简单的文件,提供一套简单统一的接口,这样程序就可以像访问磁盘上...
  • 系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。下面...
  • java中调用打印机打印本地文件

    万次阅读 2017-09-08 11:23:30
    package com.iba.cxx.adm.controller; import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequest
  • 要求调用客户端的打印机打印pdf文件,我的项目部署在linux上的,但是要求调用本地客户端的打印机打印
  • Linux 下系统调用的三种方法

    千次阅读 2019-03-14 22:28:36
    系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。下面...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    第一章 Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统概述 1.1 Linux系统简介 1.1.1 什么是Linux 1.1.2 Linux系统的产生 1.1.3 Linux...
  • linux命令大全

    千次阅读 2015-12-24 08:44:14
    Linux命令大全完整版 目 录 目 录... I 1. linux系统管理命令... 1 adduser1 chfn(change finger information)1 chsh(change shell)1 date. 2 exit3 finger4 free. 5 fwhois5 gitps(gnu ...
  • 系统调用(System Call)是操作系统为在用户运行的进程与硬件设备(如CPU,磁盘,打印机等)进行交互提供的一组接口。当进程需要发生系统调用时,CPU通过软中断切换到内核态开始执行内核系统调用函数。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,034
精华内容 7,213
关键字:

linux程序调用打印机

linux 订阅