⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pub_prtlib.c

📁 本原码主要是综合业务系统里面的一个打印程序
💻 C
📖 第 1 页 / 共 3 页
字号:
    {           PubErr(-1,__FILE__,__LINE__,PXYM,"报表打印dycs格式错");        return -1;    }    tmpptr ++;    LineFlag = atoi(tmpptr);    tmpptr = strstr(tmpptr,"|");    if(tmpptr == NULL)    {           PubErr(-1,__FILE__,__LINE__,PXYM,"报表打印dycs格式错");        return -1;    }    tmpptr ++;    TBL_Space = atoi(tmpptr);     tmpptr = strstr(tmpptr,"|");    if(tmpptr == NULL)    {           PubErr(-1,__FILE__,__LINE__,PXYM,"报表打印dycs格式错");        return -1;    }    tmpptr ++;    VarFlag = atoi(tmpptr);    tmpptr = strstr(tmpptr,"|");    if(tmpptr == NULL)    {           PubErr(-1,__FILE__,__LINE__,PXYM,"报表打印dycs格式错");        return -1;    }    tmpptr ++;    sLeftMargin = atoi(tmpptr);    tmpptr = strstr(tmpptr,"|");    if(tmpptr == NULL)    {           PubErr(-1,__FILE__,__LINE__,PXYM,"报表打印dycs格式错");        return -1;    }    tmpptr ++;    if(*tmpptr != '|' && *tmpptr != 0x00)    {       strcpy(sYscs,tmpptr);       if(sYscs[strlen(sYscs) - 1] == '|')          sYscs[strlen(sYscs) - 1] = 0x00;    }    else       sYscs[0] = 0x00;       if(strlen(tDyrw.dyts) == 0)  /*没有打印提示*/           iRet = Pub_TablePrint(pTrInfo -> bbdyjxh, strFmtFile, strDataFile,\            strOutFile, TBLNUM_col, TBLNUM_row, PageNum,LineFlag,\            TBL_Space,VarFlag, sYscs, sLeftMargin, NULL, tDyrw.cdkz);    else        iRet = Pub_TablePrint(pTrInfo -> bbdyjxh, strFmtFile, strDataFile,\            strOutFile, TBLNUM_col, TBLNUM_row, PageNum,LineFlag,\            TBL_Space,VarFlag, sYscs, sLeftMargin, tDyrw.dyts, tDyrw.cdkz);    if(iRet < 0)    {        PLOG("_table_deal()调用Pub_TablePrint()错");          return -1;    }        /*下传文件*/        if(strlen(pTrInfo -> xcwj) == 0)        strcpy(pTrInfo -> xcwj, strOutFile);    else    {        strcat(pTrInfo -> xcwj, "+");        strcat(pTrInfo -> xcwj, strOutFile);    }       return 0;} /*************************函数名称   _pzdy_print()函数功能   后台打印 凭证打印处理(含批量) 入参       tDyrw    打印任务结构           lZjls    交易流水号 出参       无 返回       0        成功           其他     失败**************************/static int _pzdy_deal(struct edyrw tDyrw ,long lZjls){    FILE * fp;    char strDataFile[200];    char strOutFile[200];    char strFmtFile[200];    char strDataBuf[1024];    int iMaxCount, iCount, iPageFlag;    int iRet;    PubStrTrim(tDyrw.sjwjm);    PubStrTrim(tDyrw.gswjm);    PubStrTrim(tDyrw.dywjm);    PubStrTrim(tDyrw.dyts);    PubStrTrim(tDyrw.dycs);       /*判别打印数据文件是否存在*/    sprintf(strDataFile,"%s/%s%-6.6ld",getenv("PRINTERDIR"),tDyrw.sjwjm,lZjls);    if((fp = fopen(strDataFile, "r")) == NULL)    {        if(errno == 2)        {            PubErr(0,__FILE__,__LINE__,"000", "打印数据文件[%s]不存在",                   strDataFile);            return 0;        }        else        {            PubErr(-1,__FILE__,__LINE__,PXYM,"读打开文件[%s]错[%s]",\                   strDataFile, strerror(errno));            return -1;        }    }    /*生成打印文件*/    sprintf(strDataFile,"%s%-6.6ld", tDyrw.sjwjm, lZjls);    sprintf(strFmtFile,"%s.frm", tDyrw.gswjm);    if(strlen(tDyrw.dywjm) == 0)   /*未配置打印文件名*/        sprintf(strOutFile,"%s%-6.6ld.prn", tDyrw.sjwjm, lZjls);    else        sprintf(strOutFile,"%s%-6.6ld.prn", tDyrw.dywjm, lZjls);        iCount = 0;    iPageFlag = 0;    PubStrTrim(tDyrw.dycs);    iMaxCount = atoi(tDyrw.dycs);    if(iMaxCount <= 0)        iMaxCount = 1000000;       while((fgets(strDataBuf, sizeof(strDataBuf) -1, fp)) != NULL)     {        if(iCount == iMaxCount - 1)        {               iCount = -1;            iPageFlag = 1;        }        else            iPageFlag = 0;                    if(strlen(tDyrw.dyts) == 0)            iRet = Pub_TspzPrint(pTrInfo -> bbdyjxh, strFmtFile, strDataBuf,\                 strOutFile, iPageFlag, NULL, tDyrw.cdkz);        else            iRet = Pub_TspzPrint(pTrInfo -> bbdyjxh, strFmtFile, strDataBuf,\                 strOutFile, iPageFlag, tDyrw.dyts, tDyrw.cdkz);        if(iRet < 0)        {            PLOG("_pzdy_deal()调用Pub_TspzPrint()错");            return -1;        }                      iCount ++;    }                      /*下传文件*/        if(strlen(pTrInfo -> xcwj) == 0)        strcpy(pTrInfo -> xcwj, strOutFile);    else    {        strcat(pTrInfo -> xcwj, "+");        strcat(pTrInfo -> xcwj, strOutFile);    }    return 0;}/************************函数名称  _getprtdata()函数功能: 获取打印单个数据入参:  pPrtData  打印数据串指针       pVal      打印数据单值       plPos     位置指针出参:  pVal       plPos返回:  无 *************************/static void _getprtdata(char *pMsg,char *pVal, long *plPos){   long lPos;    /*位置变量*/   lPos = *plPos;   if(*(pMsg + lPos) == 0)   {       *pVal = 0x00;       return ;   }   for(;*(pMsg + lPos) != '|' && *(pMsg + lPos) != 0x00;)   {      *pVal = *(pMsg + lPos);      lPos ++;      pVal ++;   }   *pVal = 0x00;   if(*(pMsg + lPos) != 0x00)      *plPos = lPos + 1;   else      *plPos = lPos ;   return ;}/******************************函数名称      _adjust_rowlen()函数功能      调整行距为 n/120 inch 入参        出参       返回          无******************************/static void _adjust_rowlen(char n, FILE *fp) /*调整行距为 n/120 inch*/{    int i;                  /*临时变量*/     int  nn;                /*临时变量*/     static char    hj[8];   /*行距*/    static char    nu[8];   /*行距补偿*/    static char   nnn[4];   /*临时变量*/    char str[42];           /*临时串*/    char *pstr;             /*临时指针*/    char prtcmd[10];        /*打印命令*/     PubStrTrim(stPsbxx[PZDYJ].devdu);    strcpy(str,stPsbxx[PZDYJ].devdu);    pstr=(char *)mem_copy(hj,str,'|');    PubStrTrim(hj);    pstr=(char *)mem_copy(nu,pstr,'|');    PubStrTrim(nu);    for (i = 0; hj[i]!='\0'; i++)        fprintf(fp, "%c", hj[i]);    if( nu[0]<'0' || nu[0]>'9' )    {        nn=n*nu[0];        fprintf(fp, "%c", nn);    }    else    {        nn=n*atoi(nu);        sprintf(nnn,"%2.2d",nn);        fprintf(fp, "%c%c", nnn[0],nnn[1]);    }        return;}/*****************************函数名称      _read_prtdata()函数功能      读后台下传的打印数据文件 入参          strDataFile  下传打印数据文件名出参          pData         数据内容地址 返回          0            成功              -1           失败******************************/static int _read_prtdata(char *strDataFile, char **pData) {    char strBuf[200];  /*临时串*/    long lFileSize;    /*文件大小*/    FILE *fp;          /*文件指针*/    /*读下传数据文件*/    sprintf(strBuf,"%s/%s", getenv("PRINTERDIR"), strDataFile);    if((fp = fopen(strBuf, "r")) == NULL)    {        PubErr(-1,__FILE__,__LINE__,PXYM,"读打开文件%s错[syserr=%s]",              strBuf,strerror(errno));        return -1;    }    fseek(fp,0,SEEK_END);    lFileSize = ftell(fp);    if(lFileSize == 0)    {            PubErr(-1,__FILE__,__LINE__,PXYM,"文件%s内容为空",strBuf);        fclose(fp);        return -1;    }    *pData = malloc(lFileSize + 1);    memset(*pData,0,lFileSize + 1);    fseek(fp,0,SEEK_SET);    if(fread(*pData,lFileSize,1,fp) < 0)    {        PubErr(-1,__FILE__,__LINE__,PXYM,"读文件%s错[syserr = %s]",               strBuf,strerror(errno));        fclose(fp);        return -1;    }        fclose(fp);     return 0;}       /******************************函数名称      _read_fmtdata()函数功能      读打印格式文件 入参          strFmtFile    打印格式数据文件名出参          p      格式数据链表头 返回          0      成功               其他   失败******************************/static int _read_fmtdata(char *strFmtFile, SOCKDATA **p) {    char strBuf[200];    /*临时串*/    char strFmtBuf[100]; /*格式串*/    char strTmpBuf[20];  /*临时串*/    FILE *fp;            /*文件指针*/    /*套打位置格式*/    SOCKDATA SockData, *ptSockDataHead, *ptSockData, *ptSockData1;         ptSockDataHead = NULL;    /*格式参数链表头*/        PubStrTrim(stPsbxx[PZDYJ].user);    sprintf(strBuf,"%s/%s%s.prt",\            getenv("PRTFMTDIR"), strFmtFile, stPsbxx[PZDYJ].user);    fp=fopen(strBuf,"r");    if (fp==NULL)    {        if(errno == 2)           {            sprintf(strBuf,"%s/%s%s.prt",\                getenv("PRTFMTDIR"), strFmtFile, "oki");            fp=fopen(strBuf,"r");            if (fp==NULL)            {                PubErr(-1,__FILE__,__LINE__,PXYM,"读打开文件%s错[syserr=%s]",                      strBuf, strerror(errno));                return -1;            }         }        else        {            PubErr(-1,__FILE__,__LINE__,PXYM,"读打开文件%s错[syserr=%s]",                   strBuf, strerror(errno));            return -1;        }     }    while((fgets(strFmtBuf, sizeof(strFmtBuf), fp)) != NULL)    {        memset(&SockData, 0x00, sizeof(SOCKDATA));                 PubStrTrim(strFmtBuf);        if(strFmtBuf[0] == 0x00 || strFmtBuf[0] == LF || strFmtBuf[0] == CR)            continue;        strcpy(strTmpBuf, strtok(strFmtBuf,","));        SockData.sPosX = atoi(strTmpBuf);        strcpy(strTmpBuf, strtok(NULL,","));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -