单据打印处理,自动缩小字体,自动换行

一般ERP系统中单据打印,涉及文字较多的内容,比如品名规格、备注,会需要自动缩小字体,而且要自动换行,这样才能尽量把文字显示的清楚一些。很多报表工具,有直接这样的功能可以使用,但是如果不是用第三方报表组件,而是自己控制打印,就比较麻烦。通过努力也实现了百分之90的效果了:

 而且,格式能够自适应纸张,根据用户选择的纸张去调整内容位置,和表格打印行数,这样就能满足更多的打印需求。

计算打印高度的代码:

//计算字符串在固定宽度内打印需要的高度,高度不够的话,循环缩小字体测试
//直到打印高度够,后续就用该字体打印
//本函数是计算高度的核心

UINT GdiPrint::GetHeight(CString m_str,UINT width,int& width_all)
{
	UINT m_height;//返回总高度
	UINT line_height=0;//行高
	UINT line_height_sum=0;//累计行高
	UINT width_sum = 0;//累计宽度
	int str_length = m_str.GetLength();//字符个数
	CSize size_temp;//单个字符的尺寸
	CString str_single;//单个字符
	width_all = 0;//实际需要的打印宽度

	for(int i=0;i<str_length;i++)
	{
		str_single.Format(_T("%c"),m_str.GetAt(i));
		size_temp = pDC->GetTextExtent(str_single,1);//获取单个字符的高和宽
		width_sum += size_temp.cx;//累计宽度
		width_all += size_temp.cx;

		//如果累计宽度大于单元格宽度,则行数增加一
		if(width_sum>width)
		{
			width_sum =  size_temp.cx;//重置宽度
			line_height_sum = line_height_sum + line_height;
			line_height = 0;//
		}


        //获取单个字符的最大高度
		line_height = (line_height>size_temp.cy)?line_height:size_temp.cy;
		
	}

	m_height = line_height_sum + line_height;

	return m_height;

}

系统下载地址:huaxunsoft。com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值