经过两天的调试终于达到让自己满足的效果,贴出部分程序,方便以后使用
private int _pages = 0;//页码
private int _itemCount = 0; //项计数器
private bool _isFirstPage = true;
private int _count = 0;//行计数器
/// <summary>
/// 打印,以三线制表格格式打印告警信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
float yPosition = 0;//绘制字符串的纵向位置
float leftmargin = e.MarginBounds.Left; //左边距
float topMargin = e.MarginBounds.Top;
float paperWidth = e.MarginBounds.Width;
Font printFont = new Font(new FontFamily("黑体"),9);
float fontHeight = printFont.GetHeight(g);
SizeF fontSize = g.MeasureString("告", printFont);//正文字体尺寸(高,宽)
SizeF titleFontSize = g.MeasureString("监", new Font(new FontFamily("黑体"),11));//标题字体尺寸
SolidBrush printBrush = new SolidBrush(Color.Black);
//一页所能打印行数
var linesPerPage = e.MarginBounds.Height/fontHeight-5;
if (_isFirstPage) {
//打印标题
g.DrawString("标题", new Font(new FontFamily("黑体"), 11), printBrush,
new PointF(paperWidth/2 - 4*titleFontSize.Width, topMargin));
//打印副标题
yPosition = topMargin + titleFontSize.Height;
g.DrawString(string.Format("ID: {0}