?? 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 + -