最近要做一个合同打印的功能,合同中的文字是富文本,有一定格式,但是不限填写的内容.在网上也没有找到相关的文章,下面写了一个记事本打印的功能, 不过只能做到都是采用相同的字体,可以换页处理.
string strPrintText;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Font font = new Font("宋体", 14);
Graphics g = e.Graphics;
float cyFont = font.GetHeight(g);
StringFormat strfmt = new StringFormat();
RectangleF rectfFull, rectfText;
int iChars, iLines;
if (g.VisibleClipBounds.X < 0)
{
rectfFull = e.MarginBounds;
}
else
{
rectfFull = new RectangleF(
e.MarginBounds.Left - (e.PageBounds.Width -
g.VisibleClipBounds.Width) / 2,
e.MarginBounds.Top - (e.PageBounds.Height -
g.VisibleClipBounds.Height) / 2,
e.MarginBounds.Width, e.MarginBounds.Height);
}
rectfText = RectangleF.Inflate(rectfFull, 0, -2 * cyFont);//去掉二行,可以打印标题和页码
int iDisplayLines = (int)Math.Floor(rectfText.Height / cyFont); //计算可以打印的行数
rectfText.Height = iDisplayLines * cyFont; //计算可以正式打印的高度
strfmt.Trimming = StringTrimming.Word;
if (strPrintText.Length == 0)
{
e.Cancel = true;
return;
}
g.DrawString(strPrintText, font, Brushes.Black,rectfText, strfmt); //所有文字全部打印
g.MeasureString(strPrintText, font, rectfText.Size, strfmt, out iChars, out iLines); //获取该区域能打印了多少个字符
strPrintText = strPrintText.Substring(iChars); //把打印过的字符去掉,下次就没有了.
e.HasMorePages = (strPrintText.Length >0);//判断是否还有字要打印.
}
private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
strPrintText = richTextBox1.Text;
}
对于富文本的处理,不知有没有好的办法.
分享到:
相关推荐
页面中传值到另一个页面上的控件).txt 页面中控件的传值.txt 用TREEVIEWKOk控件使用的站点地图文件.txt 用户控件.txt 在.NET中利用XMLHTTP下载文件.txt 在ASP.NET中实现POST发送数据.txt 在IE浏览器中使用Windows...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
为了说明POI提起Word文件的方便和简单,通过提取一个Word文件的文本来,来了解POI API的功能。 假设在本地磁盘中存在一个Word文件 E:\POI\word\JBoss3.0 下配置和部署EJB简介.doc文件是具有格式的,内容如图所示:...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Notepad++ 是在 Windows 环境之下的一个免费的代码编辑器。 为了产生小巧且有效率的代码编辑器,这个在GPL许可证下的自由软体开发专案采用 win32 api 和 STL 以 C++ 程式语言撰写成,并且选用功能强大的编辑模组 ...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢...
Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢...
csv文件用记事本和excel都能打开,用记事本打开显示逗号, 用excel打开,没有逗号了,逗号都用来分列了。 .txt文件和.csv文件没有太大差别,.txt文件也可用逗号进行分割,直接将.txt文件改成.csv文件即可,.txt文件...
一开始可能不习惯有这些,一段时间后,没有它们您会不习惯。 打印:可以把您漂亮的页面打印出来哦。不过,如果要打印,建议别像polaris一样用黑底白字。 链接:建议改为polaris这样。这个主要对网址和邮箱等起作用了...
1、编写一个记事本程序 要求: 用图形用户界面实现。 能实现编辑、保存、另存为、查找替换等功能。 提示:使用文件输入输出流。 2、编写一个计算器程序 要求: 界面模拟Windows中的计算器程序。 实现基本数学运算、...
Sun就从来没有将它的Java交给过ECMA,以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中...