社区
图表区
帖子详情
水晶报表预览和打印字体不一致
burningsnow_w_y
2012-04-01 04:27:24
服务器,Win2003 sp2,水晶报表2008,Web方式,.net4.0
开发环境Win7
因打印的报表中有部分生僻字,用了Win7自带的GBK楷体,测试预览和打印正常
发布后,将Win7字体复制到服务器端
运行后预览正常,打印出来变成宋体,请问如何解决
...全文
334
4
打赏
收藏
水晶报表预览和打印字体不一致
服务器,Win2003 sp2,水晶报表2008,Web方式,.net4.0 开发环境Win7 因打印的报表中有部分生僻字,用了Win7自带的GBK楷体,测试预览和打印正常 发布后,将Win7字体复制到服务器端 运行后预览正常,打印出来变成宋体,请问如何解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fsk_wyf
2012-04-19
打赏
举报
回复
//监控线程喂狗
void FeedMsgMonitorCounter( VOID ){static UINT32 ulCounter = 0;
/* 每5秒喂狗一次 */if ( 0 == ulCounter%50 ){
Monitor_AddThreadCounter(MSG_QUEPROC_THREAD);}ulCounter++; return;}
//处理接收到的定时消息
UINT32 ProcMsgDealTimerMsg(x2){y6;ScanTxRqTab();ScanRxRqTab();FeedMsgMonitorCounter();j2;}
//消息处理主函数
UINT32 ProcMsgDealQMsg(x2){x5;y6;switch ( pstMsg->enModuleNo ){case CCU_SMS_MODULE :
ulRet = ProcSendToSMSMsg(pstMsg);break; case SMS_CCU_MODULE : ulRet = ProcRevFromSMSMsg(pstMsg);
break; case CCU_TIME_MODULE : ulRet = ProcMsgDealTimerMsg(pstMsg); break; default:
ulRet = CCU_ERR_MPI_NOT_SUPPORT_ENUM_VALUE; break; } l5;}
// 消息管理线程入口函数
void ProcMsgDealQue( VOID ){ INT32 iRet = CCU_ERR;x2 = z9;MSGDEAL_QUEUE_MSG stQMsg = {0};
for ( ; ; ){ iRet = ADA_QueueSynRead(g_iMsgDealQueId, (VOID *)&stQMsg, MAX_MSG_DEAL_QUEUE_MSG, 0);
if ( CCU_OK == iRet) { CCU_MemCpy(&pstMsg, (CHAR*)stQMsg.mText, sizeof(PCCU_MSG_T));
if (z9 == pstMsg) { continue; } ProcMsgDealQMsg(pstMsg); y8; pstMsg = z9;
CCU_MemSet(&stQMsg,0,sizeof(MSGDEAL_QUEUE_MSG)); } }}
//初始化全局变量
x8nitMsgDealData( VOID ){x5;ulRet = InitMsgDealTxRqTab();j6;ulRet = InitMsgDealRxRqTab();j6;j2;}
//创建消息管理模块消息队列
x8nitMsgDealQueue( VOID ){key_t key; INT32 iRet = -1;key = QUE_IPC_START_POS_MSGDEAL;
/* 创建通道消息队列 */iRet = ADA_QueueCreate(key, &g_iMsgDealQueId);if (CCU_OK != iRet)
{ return CCU_ERR;} j2;}
x8nitMsgDealPthread( VOID ){ UINT32 ulRet = 0; pthread_t MsgDealThread;
ulRet = ADA_CreatThread((FUNC_ENTRY)ProcMsgDealQue, NULL, CCU_NORMAL_STACK_SIZE, &MsgDealThread);
if ( 0 != ulRet ){ l5;}
/* 注册监控服务线程ID */Monitor_CreateThreadMonitorCB(MSG_QUEPROC_THREAD);j2;}
//消息管理模块初始化
x8nitMsgDeal( VOID )
{x5;ulRet = InitMsgDealData();j6; ulRet = InitMsgDealQueue();
j6;ulRet = InitMsgDealPthread();j6; g_ulMsgInitOkFlag = CCU_TRUE;j2;}
UINT32 udpr(VOID)g_ulEthMsgRevFlag UINT32 pnps(VOID)g_ulSendpnpFlag
UINT32 pnpr(VOID)g_ulRevPnpFlag UINT32 ccurqs(VOID)g_ulSendCCUMsgFlag
UINT32 ccurss(VOID)g_ulRevCCUMsgFlag
fsk_wyf
2012-04-19
打赏
举报
回复
//处理接收到的SMS消息
UINT32 ProcRevFromSMSMsg(x2){x5;PETH_MSG_T z8 = z9;y6; z8 = (PETH_MSG_T)pstMsg->z8;
CHECK_PARA1_NULL_RN(z8, CCU_ERR_MPI_INVALID_PARAMS);switch ( z8->ucMsgDir){
case SEND_TO_SMS_RQ : ulRet = ProcRevFromRsMsg(z8); break;case SEND_TO_SMS_RS :
ulRet = ProcRevFromRqMsg(z8); break;default:
ulRet = CCU_ERR_MPI_NOT_SUPPORT_ENUM_VALUE; break; } CHECK_FREE(CCU_MEM_INFO, z8);l5;}
//扫描请求发送控制表
UINT32 ScanTxRqTab( VOID ){ x8=0;l8=h1; x9 = h5;l6=z9;z3 { if ( CCU_TRUE == y2.ucIsUsed )
{/* 如果重发次数到,删除此单元 */ if ( y2.ucReSendCnt >= MSG_DEAL_RESEND_CNT) {
DeleteMsgFromTxRqTab(y2.pstEthMsg); } else{ y2.ucWaitTimer++;
if ( y2.ucWaitTimer >= MSG_DEAL_WAIT_TIMER){ y2.ucReSendCnt++; y2.ucWaitTimer = 0;
/* 如果表单元消息指针为空,初始化该表单元,一般不会进入此分支 */
if ( z9 == y2.pstEthMsg ){ y2.ucIsUsed = CCU_FALSE; y2.ucReSendCnt = 0;
y2.ucWaitTimer = 0; continue;}uwLen = y2.pstEthMsg->k6; ulLen = GET_ETH_FRAME_LEN(uwLen);
pstMsg = (ETH_MSG_T*)k9;if ( z9 == pstMsg ) { continue;}
CCU_MemCpy(pstMsg, y2.pstEthMsg, (INT32)ulLen);/* 转换字序,待重发 */z2 = ntohs(z2);
z4 = ntohl(z4); z5 = ntohl(z5);z6 = ntohs(z6); z7 = ntohs(z7);
pstMsg->uwChkSum = ntohs(pstMsg->uwChkSum);pstMsg->ulCompleteCode
= ntohl(pstMsg->ulCompleteCode);y3.ulResId = ntohl(y3.ulResId);y3.uwLength = ntohs(y3.uwLength);
y3.uwCmd = ntohs(y3.uwCmd);UDP_SendMsgToEth((UINT8*)pstMsg, ulLen); y8;pstMsg = z9; }
} } } j2;}
//扫描接收请求控制表
UINT32 ScanRxRqTab( VOID ){x8 = 0;z3{if ( CCU_TRUE == y4.ucIsUsed ) {
if ( y4.ucReSendCnt >= MSG_RXRQ_RESEND_CNT) /* 定为30秒超时删表 */ { l4((UINT16)i); } else
{y4.ucWaitTimer++; if ( y4.ucWaitTimer >= MSG_DEAL_WAIT_TIMER) { y4.ucReSendCnt++;
y4.ucWaitTimer = 0; }} } }j2;}
fsk_wyf
2012-04-19
打赏
举报
回复
//处理发送给SMS的消息
UINT32 ProcSendToSMSMsg(x2){x5;SEND_TO_SMS_DIR_ENUM enDir = SEND_TO_SMS_INVILID_DIR;
PSEND_SMS_MSG_T z8 = z9;y6; z8 = (PSEND_SMS_MSG_T)pstMsg->z8;
CHECK_PARA1_NULL_RN(z8, CCU_ERR_MPI_INVALID_PARAMS);enDir = (SEND_TO_SMS_DIR_ENUM)z8->ucDir;
switch ( enDir ){ case SEND_TO_SMS_RQ :ulRet = ProcSendToSMSRqMsg(z8); break;
case SEND_TO_SMS_RS : ulRet = ProcSendToSMSRsMsg(z8); break;
default:ulRet = CCU_ERR_MPI_NOT_SUPPORT_ENUM_VALUE;break;}
CHECK_FREE(CCU_MEM_INFO, z8->pucData);CHECK_FREE(CCU_MEM_INFO, z8);l5;}
//处理接收到的SMS响应消息
UINT32 ProcRevFromRsMsg(l6){x5;y6; ulRet = DeleteMsgFromTxRqTab(pstMsg);j6;
/* SMS只会给CCU自身管理发响应,机电部件协议命令没有主动请求 */
ulRet = SendEthMsgToCCUQue(pstMsg, SEND_TO_SMS_RS);j6;j2;}
//检查是否是重复请求
bool IsRepeatRqMsg(l6 ){ x8 = 0;for ( i = 0 ; i < MSG_DEAL_TAB_SIZE; i++ )
{/* 如果200ms以内收到重复消息,认为是重复请求,滤掉 */
if ( (CCU_TRUE == y4.ucIsUsed) &&(y4.ucWaitTimer <= 1)) {
if ( (y4.pstEthMsg->ucHostType == pstMsg->ucHostType) &&(y4.k8 == pstMsg->ucMsgDir)
&&(y4.pstEthMsg->ucType == pstMsg->ucType) &&(y4.j8 == z4) &&(y4.j9 == z5)
&&(y4.k1 == z6) &&(y4.pstEthMsg->k7 == y3.uwCmd) &&(y4.pstEthMsg->k5 == y3.ulResId))
{ return CCU_TRUE; } } } return CCU_FALSE;}
//处理接收到的SMS请求消息
UINT32 ProcRevFromRqMsg(l6){x5;y6;if ( CCU_TRUE == IsRepeatRqMsg(pstMsg) ){
return CCU_ERR_MPI_REPEAT_COMMAND;}/* 添加到接收请求控制表 */
ulRet = AddMsgToRxRqTab(pstMsg); j6;ulRet = CompareResId(g_ulCCUId, y3.ulResId);
/* 如果资源ID是CCU自身资源ID,发送到CCU自身处理消息队列,否则直接将消息发送给PNP */
if (CCU_OK == ulRet){ ulRet = SendEthMsgToCCUQue(pstMsg, SEND_TO_SMS_RQ);}
else { ulRet = SendEthMsgToPnP(pstMsg); }l5;}
水晶报表
打印
设置!!!很经典呀
水晶报表
打印
设置!!!很经典呀,我给公司做报表是常常使用它呀!
水晶报表
2008中文帮助
如题,希望对大家有所帮助。
水晶报表
制作排列图
水晶报表
同时实现柱状图和折线图,实现排列图
水晶报表
2005 详细资料图解
水晶报表
2005 详细资料图解,非常清晰
商业编程-源码-报表与
打印
源代码 printing_class_library_demo.zip
商业编程-源码-报表与
打印
源代码 printing_class_library_demo.zip
图表区
4,819
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章