社区
图表区
帖子详情
水晶报表预览和打印字体不一致
burningsnow_w_y
2012-04-01 04:27:24
服务器,Win2003 sp2,水晶报表2008,Web方式,.net4.0
开发环境Win7
因打印的报表中有部分生僻字,用了Win7自带的GBK楷体,测试预览和打印正常
发布后,将Win7字体复制到服务器端
运行后预览正常,打印出来变成宋体,请问如何解决
...全文
337
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;}
水晶报表
打印
设置!!!很经典呀
8.
打印
和导出:
水晶报表
可以方便地导出为PDF、Excel、Word等多种格式,满足不同场合的需求。同时,设置
打印
选项时要注意纸张大小、方向、页数等,确保
打印
出来的报表与
预览
一致
。 9. 自定义函数和脚本:如果需要更...
水晶报表
2008中文帮助
同时,它还提供了完整的
打印
预览
和
打印
设置,确保
打印
效果与设计
一致
。 10. **
水晶报表
服务器**:
水晶报表
2008可以集成到
水晶报表
服务器中,实现报表的集中管理和权限控制,便于企业部署和维护。服务器还支持报表...
水晶报表
制作排列图
有时,
水晶报表
可能会按照默认顺序显示横轴数据,这可能与导入的原始数据顺序不
一致
。在图表专家中,找到“数据”选项,你可以手动调整横轴的数据序列。选择需要按原始顺序排列的字段,设置其排序方式为升序或降序...
水晶报表
2005 详细资料图解
1. **创建报表文件并设置纸张大小**:在
水晶报表
中创建一个新的.rpt文件,设置纸张大小为B5,这是基于实际
打印
需求的调整,确保报表在
打印
时符合预期的布局。 2. **配置页面设置**:参照Word文档的页面设置参数,...
商业编程-源码-报表与
打印
源代码 printing_class_library_demo.zip
6. **
打印
控件**:可能使用第三方库如
水晶报表
(Crystal Reports)或DevExpress报表组件来实现复杂报表的创建和
打印
。 7. **跨平台兼容性**:在多操作系统环境下,如Windows、MacOS、Linux,保证
打印
功能的
一致
性。...
图表区
4,820
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章