linux打印机源码,linux C 如何实现打印功能

在c程序中,需要把一些信息通过打印机输出,如何实现,哪位好人有类次的源码??

|

Linux中的打印程序有两种,一种是系统打印,也就是lp命令(一般系统配置好打印机以后,这个命令就可以直接使用),要求打印机直接接在装有Linux系统的机器上,另一种是终端打印,就要要求打印机是接在终端的串口上.

那么lp是系统自带的,我们可以简单地使用system("lp filename");就可以实现打印机打印文件了

另外一种需要我们自己再写一个程序,这个程序可以是sh,也可以是C语言:

sh程序:比如locp.sh

if [ $# = 0 ]

then

exit -1           /*如果参数为0个,直接退出*/

else

echo "33[5i"    /*打开这个端口,很什么打印机无关,一般打印机端口都是这个*/

cat $*            /*显示文件名,其实就是在这个端口显示这个文件,打印机就会自动打印了*/

echo "33[4i"    /*关闭端口*/

exit 0            /*正常退出*/

fi

C程序:比如locp.c  (时间仓促,格式未整理,注释未加,未测试)

编译使用: cc -o locp locp.c

#include

#include

#include

int main ( int argc ,char * argv [])

{

FILE *rpt_ptr;

FILE *print_ptr;

char buf[10240];

char v_begin[]= "^[[5i";

char v_end[] = "^[[4i";

int num =0;

if ( argc != 2 )

{

printf("Usage : locp filename n");

return -1;

}

print_ptr = fopen ( "/dev/tty","wt");

if ( print_ptr == NULL )

{

printf("打开终端失败.n");

exit -1;

}

rpt_ptr = fopen ( argv[1],"rt");

if ( rpt_ptr == NULL )

{

printf("文件 %s 不存在或没有读权限 n",argv[1]);

fclose(print_ptr);

exit -1;

}

fputs ( v_begin,print_ptr);

while (fgets(buf,10240,rpt_ptr) != NULL)

{

/*

if ( num > 20 )

{

fputs ( v_end,print_ptr);

fflush(print_ptr);

sleep(10);

fputs ( v_begin,print_ptr);

num =0;

}

num ++;

*/

num = strlen ( buf );

/*

if ( buf[num - 1] == '^M' )

{

buf[num-1] = '';

}

*/

fputs ( buf,print_ptr);

fflush(print_ptr);

}

// fputs ( "^L",print_ptr);

fputs ( v_end,print_ptr);

fflush(print_ptr);

fclose(rpt_ptr);

fclose(print_ptr);

return 0;

}

c程序中使用system("locp filename");即可

|

在unix体统当中,打印机会被当作文件,如果是普通的文本文件的打印,读取文件内容,然后输出到文件/dev/lp0(lp1...2)中去就可以了。

如果是PDF,Word等等这类特殊格式的文件,在输出到打印机之前应该由打印驱动程序将内容转化为所见即所得的二进制流,再输出到打印机中。

相关的打印驱动恐怕要你从网上寻找,像很多windows的文件,很少有linux的打印驱动模块的,恐怕你要自己研究文件格式然后开发。

如果不愿意传输到windows打印服务器 而 非要在linux下打印的话,建议相关的打印模块用java开发,或许能从网上找到相关的源代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: 不需要设置共享打印机,就可以在局域网、远程打印到指定要共印的打印机上局域网内使用。现在开始演示使用方法:1、启动和配置服务器!2、端口自定义为佳,以保网络安全!3、服务器单一共享打印设置完成,若有多台打印机要共享,则添加多个服务器,但每个服务器的端口要不一样。4、测试启动客户端5、服务器这框里头,最初是没有东西的。需要定义服务器信息,格式是:服务器名称(自定义),IP地址,端口。6、用户名是与服务器用户列中一样的用户信息7、如果连接成功,左边将显示所连到此服务的服务器名称和共享的打印机名称。8、工具框中有几个自动的按钮,按下了表示此功能启用,再点一下切换不启用.9、此时客户端的状态已就绪。可以支持远程打印了。下面演示两种打印方法1)、捕获打印到文件时的状态生成打印记录。由于我这里没有连接真正的打印机,则报错要你干预。真正的打印机就直接输出纸质材料了。2)、手动添加文件。此办法主要用于已经接收到别人的PRN、PRT、XPS文件所进行的操作。这里需要注意,自己选择的是非XPS文件,全部用PRN类型打印,只有XPS文件才用XPS类型打印。需要提醒的是,别人的或者自己原有的PRN文件,是要与之前输出的打印机一样的,打印结果才正常,不然会出现乱码现像。但XPS则不用之前输出的打印打印。所以。在生成文件时XPS是通用的,PRNPRT文件是与打印机一对一的才能打印的。特此说明。3)、想再次打印,则 要点[重新打印]工具按钮。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值