📄 pub_prtlib.c
字号:
{ 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 + -