当前位置:  技术问答>linux和unix

linux C 如何实现打印功能

    来源: 互联网  发布时间:2016-02-18

    本文导语:  在c程序中,需要把一些信息通过打印机输出,如何实现,哪位好人有类次的源码?? | Linux中的打印程序有两种,一种是系统打印,也就是lp命令(一般系统配置好打印机以后,这个命令就可以直接使用),...

在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开发,或许能从网上找到相关的源代码。

    
 
 

您可能感兴趣的文章:

  • linux下通过crond实现自动执行程序
  • Linux和Unix相对WIN、NETWARE有什么好处?他们之间有什么区别?WIN、NETWARE能实现的功能LINUX和UNIX能实现吗?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • linux内存文件系统ramfs实现原理
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • Linux 共享内存介绍及实现代码
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • linux下grep命令实现查找多个关键字(与关系和或关系)
  • 我想做linux下的还原备份,实现与还原精灵虚拟还原等一样的功能,应该怎么做?另外现在有实现这种功能的成熟产品是哪一种?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 关于linux c程序实现自动实现telnet的问题
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 请问高手linux中用md5来实现一串字符串的加密,用c++/c实现
  • 在linux实现在任意给定的目录查找文需要的件的程序? 下面的实现思路可不可以呢????
  • 请问:有没有人在Linux下实现过计费网关?
  • linux与window打印共享的问题 iis7站长之家
  • 如何在linux下实现event事件机制
  • Linux音频, Linux下能否实现 实时语音聊天 ?
  • 请问在linux下面,有没有硬盘整理的功能,或者有什么软件可以实现硬盘整理的功能?
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • LINUX文本方式比图形方式有哪些功能限制,是不是服务器的功能都有,
  • Linux/Unix的功能??选择windows还是linux?
  • 老板要用linux服务器共享一些CAD文件,并且要同步更新,linux有这功能吗?
  • 如何知道linux 内核是带有路由功能的?
  • 请问Linux下有没有类似Windows光盘Autorun的功能?
  • linux下怎样调用jpeg的硬件解码功能?
  • linux下手机报警功能源代码
  • 请教linux下面的--help功能如何实现???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux c字符串中不可打印字符转换成16进制
  • 如何配置linux,使windows系统可以直接打印到linux的打印机上??
  • 有谁在linux串口下用ESCPOS指令控制打印机打印,碰到问题,请赐教
  • Redhat7.2安装打印机?我的Linux机器已经加入到域里面,Linux机和Window机可以互看共享文件,打印机装在域内一台WIndow机(Public)上(
  • Linux/Unix打印系统 CUPS
  • Linux下 如何程序调用打印机?
  • LINUX下的C怎样操作打印机?
  • linux 下怎能么用Windows 下的打印机?
  • linux下连windowsd打印机?
  • linux终端或仿真终端如何打印图形??
  • linux 串口打印
  • 我的linux不断在linux命令行处打印如下警告信息,怎么消除?
  • 急!LINUX下打印程序的问题
  • 我已在linux下设置打印机为共享,如何在win200下访问
  • linux与window打印共享的问题
  • 很简单的基础问题:请问Linux中怎样连接网络打印机?
  • linux下如何调用系统自带的打印机设置对话框
  • linux下如何在code中打印出汉字
  • 大虾,Linux8.0中打印机如何设置?在线等待!!
  • 怎么连接网络打印机啊(都在linux下)
  • linux9下怎样使用联想打印机!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3