C#中使用GDI+与PrintDocument实现打印

近日做报表,需要实现一个比较特殊的打印:针对不同患者的药费记录,打印不同的清单,并且支持一次打印多个患者的记录。其效果看起来应该像下面这个样子:
      如上所述,使用弱智的水晶报表,就会遇到如何构造数据源的问题,由于不同患者的药费记录和遗嘱记录都不同,而且整体上需要一个患者一个清单,所以其数据源只能为一个数组,而不是简单的DataTable。小弟一向对大且笨拙的CrystalReport不感冒,再加上对GDI+比较痴迷,索性费点功夫,使用GDI+来打印上述报表。
     首先需要构造数据源,创建一个ArrayList对象a,然后再把每个患者需要打印的东东保存为一个ArrayList放入ATotal中。

 

 1 C#中使用GDI+与PrintDocument实现打印 if  (a  !=   null )
 2 C#中使用GDI+与PrintDocument实现打印 {
 3C#中使用GDI+与PrintDocument实现打印    a.Clear();
 4C#中使用GDI+与PrintDocument实现打印}

 5 C#中使用GDI+与PrintDocument实现打印 for  ( int  m  =   0 ; m  <   3 ; m ++ )
 6 C#中使用GDI+与PrintDocument实现打印 {
 7C#中使用GDI+与PrintDocument实现打印    ArrayList a1 = new ArrayList();
 8C#中使用GDI+与PrintDocument实现打印    string x0 = "住院患者一日清单";
 9C#中使用GDI+与PrintDocument实现打印    string x1 = "入院日期:2007-11-11    结算日期:2007-11-11至 2007-11-15 ";
10C#中使用GDI+与PrintDocument实现打印    string x2 = "姓名:欧阳峰 住院号:20090909090   床:512 妇科";
11C#中使用GDI+与PrintDocument实现打印    string x3 = "项目编号*项目名称*单价*数量*单位"// 注意其中的*标志
12C#中使用GDI+与PrintDocument实现打印    string[] x4 = newstring[90]; // 假设有90条数据,不固定
13C#中使用GDI+与PrintDocument实现打印    for (int i = 0; i < 90; i++)
14C#中使用GDI+与PrintDocument实现打印    {
15C#中使用GDI+与PrintDocument实现打印        x4[i] = "juejue1984*www.loyosoft.com*11.00*11*鸟"// 注意其中的*标志
16C#中使用GDI+与PrintDocument实现打印    }

17C#中使用GDI+与PrintDocument实现打印    string x5 = "费用累计:2500*小计:400 ";
18C#中使用GDI+与PrintDocument实现打印    string x6 = "累计按金:3600*余额:1600 ";
19C#中使用GDI+与PrintDocument实现打印    string x7 = "";
20C#中使用GDI+与PrintDocument实现打印    string x8 = "";
21C#中使用GDI+与PrintDocument实现打印    a1.Add(x0);
22C#中使用GDI+与PrintDocument实现打印    a1.Add(x1);
23C#中使用GDI+与PrintDocument实现打印    a1.Add(x2);
24C#中使用GDI+与PrintDocument实现打印    a1.Add(x3);
25C#中使用GDI+与PrintDocument实现打印    a1.Add(x4);
26C#中使用GDI+与PrintDocument实现打印    a1.Add(x5);
27C#中使用GDI+与PrintDocument实现打印    a1.Add(x6);
28C#中使用GDI+与PrintDocument实现打印    a1.Add(x7);
29C#中使用GDI+与PrintDocument实现打印    a1.Add(x8);
30C#中使用GDI+与PrintDocument实现打印    a.Add(a1);
31C#中使用GDI+与PrintDocument实现打印}

然后在PrintDocument对象的PrinPage事件作如下处理:

 

  1 C#中使用GDI+与PrintDocument实现打印 Size sTotal  =   new  Size( 420 , e.PageBounds.Height);
  2 C#中使用GDI+与PrintDocument实现打印Graphics g  =  e.Graphics;
  3 C#中使用GDI+与PrintDocument实现打印Font fTitle  =   new  Font( " 宋体 " 16 );  //  标题字体
  4 C#中使用GDI+与PrintDocument实现打印 int  titleHeight  =   20 //  标题的高度
  5 C#中使用GDI+与PrintDocument实现打印 int  textHeight  =   13 //  普通文本的高度
  6 C#中使用GDI+与PrintDocument实现打印 Font fText  =   new  Font( " 宋体 " 9 );  //  文本字体
  7 C#中使用GDI+与PrintDocument实现打印
  8 C#中使用GDI+与PrintDocument实现打印 int  top  =   30 //  顶部间距
  9 C#中使用GDI+与PrintDocument实现打印 int  left  =   10 //  左边距
 10 C#中使用GDI+与PrintDocument实现打印 int  right  =   10 //  右边距
 11 C#中使用GDI+与PrintDocument实现打印 int  titleMargin  =   15 //  标题和正文行间距
 12 C#中使用GDI+与PrintDocument实现打印 int  textMargin  =   5 //  行间距
 13 C#中使用GDI+与PrintDocument实现打印 int  rectangleMargin  =   3 //  边框和文本间距
 14 C#中使用GDI+与PrintDocument实现打印 int  oneHeight  =   19 //  一行文本 + 2 * 行间距的高度
 15 C#中使用GDI+与PrintDocument实现打印 int  oneWidth  =  sTotal.Width  -  left  -  right;  //  打印内容的宽度
 16 C#中使用GDI+与PrintDocument实现打印
 17 C#中使用GDI+与PrintDocument实现打印 int  y  =   0 ;
 18 C#中使用GDI+与PrintDocument实现打印 while  (j  <  a.Count)  //  Count为要打印的患者个数
 19 C#中使用GDI+与PrintDocument实现打印 {
 20C#中使用GDI+与PrintDocument实现打印    ArrayList a3 = a[j] as ArrayList; // a3位要打印的患者的清单内容。
 21C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - titleHeight) // 如果已经到了底部则开始下一页
 22C#中使用GDI+与PrintDocument实现打印    {
 23C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
 24C#中使用GDI+与PrintDocument实现打印return;
 25C#中使用GDI+与PrintDocument实现打印    }

 26C#中使用GDI+与PrintDocument实现打印    //
 27C#中使用GDI+与PrintDocument实现打印    string x = a3[0as string;
 28C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(x)) // 如果此行记录还未打印过
 29C#中使用GDI+与PrintDocument实现打印    {
 30C#中使用GDI+与PrintDocument实现打印
 31C#中使用GDI+与PrintDocument实现打印//string x = "住院患者一日清单"; // a1
 32C#中使用GDI+与PrintDocument实现打印SizeF sTitle = g.MeasureString(x, fTitle); // 计算标题的长度和高度
 33C#中使用GDI+与PrintDocument实现打印Point pTitle = new Point((sTotal.Width - (int)sTitle.Width) / 2, y + top); // 使标题绝对居中
 34C#中使用GDI+与PrintDocument实现打印+= top; // 1
 35C#中使用GDI+与PrintDocument实现打印//
 36C#中使用GDI+与PrintDocument实现打印g.DrawString(x, fTitle, Brushes.Black, pTitle.X, y); // 标题
 37C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref x);
 38C#中使用GDI+与PrintDocument实现打印a3[0= x; // 标记该患者的此行内容为已经打印过
 39C#中使用GDI+与PrintDocument实现打印+= titleHeight + titleMargin; // Y坐标下移
 40C#中使用GDI+与PrintDocument实现打印    }

 41C#中使用GDI+与PrintDocument实现打印
 42C#中使用GDI+与PrintDocument实现打印
 43C#中使用GDI+与PrintDocument实现打印    //
 44C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
 45C#中使用GDI+与PrintDocument实现打印    {
 46C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
 47C#中使用GDI+与PrintDocument实现打印return;
 48C#中使用GDI+与PrintDocument实现打印    }

 49C#中使用GDI+与PrintDocument实现打印
 50C#中使用GDI+与PrintDocument实现打印    //// 正文第一行
 51C#中使用GDI+与PrintDocument实现打印    string r1 = a3[1as String;
 52C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(r1))
 53C#中使用GDI+与PrintDocument实现打印    {
 54C#中使用GDI+与PrintDocument实现打印g.DrawString(r1, fText, Brushes.Black, left, y);
 55C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref r1);
 56C#中使用GDI+与PrintDocument实现打印a3[1= r1;
 57C#中使用GDI+与PrintDocument实现打印+= textHeight + textMargin; // 3
 58C#中使用GDI+与PrintDocument实现打印    }

 59C#中使用GDI+与PrintDocument实现打印
 60C#中使用GDI+与PrintDocument实现打印    //
 61C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
 62C#中使用GDI+与PrintDocument实现打印    {
 63C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
 64C#中使用GDI+与PrintDocument实现打印return;
 65C#中使用GDI+与PrintDocument实现打印    }

 66C#中使用GDI+与PrintDocument实现打印    //
 67C#中使用GDI+与PrintDocument实现打印
 68C#中使用GDI+与PrintDocument实现打印    //// 正文第二行
 69C#中使用GDI+与PrintDocument实现打印    string r2 = a3[2as String;
 70C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(r2))
 71C#中使用GDI+与PrintDocument实现打印    {
 72C#中使用GDI+与PrintDocument实现打印g.DrawString(r2, fText, Brushes.Black, left, y);
 73C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref r2);
 74C#中使用GDI+与PrintDocument实现打印a3[2= r2;
 75C#中使用GDI+与PrintDocument实现打印+= textHeight + textMargin; // 4
 76C#中使用GDI+与PrintDocument实现打印    }

 77C#中使用GDI+与PrintDocument实现打印
 78C#中使用GDI+与PrintDocument实现打印    //
 79C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
 80C#中使用GDI+与PrintDocument实现打印    {
 81C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
 82C#中使用GDI+与PrintDocument实现打印return;
 83C#中使用GDI+与PrintDocument实现打印    }

 84C#中使用GDI+与PrintDocument实现打印    //
 85C#中使用GDI+与PrintDocument实现打印
 86C#中使用GDI+与PrintDocument实现打印    ////内容
 87C#中使用GDI+与PrintDocument实现打印    string column = a3[3as string;
 88C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(column))
 89C#中使用GDI+与PrintDocument实现打印    {
 90C#中使用GDI+与PrintDocument实现打印string[] c = column.Split(new char[] '*' });
 91C#中使用GDI+与PrintDocument实现打印Rectangle R1 = new Rectangle(left, y, oneWidth, oneHeight);
 92C#中使用GDI+与PrintDocument实现打印g.DrawRectangle(Pens.Black, R1);
 93C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(R1.X + R1.Width * 4 / 16, R1.Y), new Point(R1.X + R1.Width * 4 / 16, R1.Y + R1.Height));
 94C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(R1.X + R1.Width * 10 / 16, R1.Y), new Point(R1.X + R1.Width * 10 / 16, R1.Y + R1.Height));
 95C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(R1.X + R1.Width * 12 / 16, R1.Y), new Point(R1.X + R1.Width * 12 / 16, R1.Y + R1.Height));
 96C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(R1.X + R1.Width * 14 / 16, R1.Y), new Point(R1.X + R1.Width * 14 / 16, R1.Y + R1.Height));
 97C#中使用GDI+与PrintDocument实现打印
 98C#中使用GDI+与PrintDocument实现打印g.DrawString(c[0], fText, Brushes.Black, R1.X + rectangleMargin, R1.Y + rectangleMargin); // 项目编号 //a4.1
 99C#中使用GDI+与PrintDocument实现打印g.DrawString(c[1], fText, Brushes.Black, R1.X + rectangleMargin + R1.Width * 4 / 16, R1.Y + rectangleMargin);// 项目名称 // a4.2
100C#中使用GDI+与PrintDocument实现打印g.DrawString(c[2], fText, Brushes.Black, R1.X + rectangleMargin + R1.Width * 10 / 16, R1.Y + rectangleMargin);//单价 //a4.3
101C#中使用GDI+与PrintDocument实现打印g.DrawString(c[3], fText, Brushes.Black, R1.X + rectangleMargin + R1.Width * 12 / 16, R1.Y + rectangleMargin); //数量 //a4.4
102C#中使用GDI+与PrintDocument实现打印g.DrawString(c[4], fText, Brushes.Black, R1.X + rectangleMargin + R1.Width * 14 / 16, R1.Y + rectangleMargin);//单位 //a4.5
103C#中使用GDI+与PrintDocument实现打印
104C#中使用GDI+与PrintDocument实现打印
105C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref column);
106C#中使用GDI+与PrintDocument实现打印a3[3= column;
107C#中使用GDI+与PrintDocument实现打印+= oneHeight;
108C#中使用GDI+与PrintDocument实现打印    }

109C#中使用GDI+与PrintDocument实现打印    //
110C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
111C#中使用GDI+与PrintDocument实现打印    {
112C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
113C#中使用GDI+与PrintDocument实现打印return;
114C#中使用GDI+与PrintDocument实现打印    }

115C#中使用GDI+与PrintDocument实现打印    //
116C#中使用GDI+与PrintDocument实现打印
117C#中使用GDI+与PrintDocument实现打印    string[] row = a3[4as string[];
118C#中使用GDI+与PrintDocument实现打印    int Row = row.Length;
119C#中使用GDI+与PrintDocument实现打印    for (int i = 0; i < Row; i++)
120C#中使用GDI+与PrintDocument实现打印    {
121C#中使用GDI+与PrintDocument实现打印if (!this.JudgeString(row[i]))
122C#中使用GDI+与PrintDocument实现打印{
123C#中使用GDI+与PrintDocument实现打印    string[] r = row[i].Split(new Char[] '*' });
124C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 0 / 16, y), new Point(left + oneWidth * 0 / 16, y + oneHeight));
125C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 4 / 16, y), new Point(left + oneWidth * 4 / 16, y + oneHeight));
126C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 10 / 16, y), new Point(left + oneWidth * 10 / 16, y + oneHeight));
127C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 12 / 16, y), new Point(left + oneWidth * 12 / 16, y + oneHeight));
128C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 14 / 16, y), new Point(left + oneWidth * 14 / 16, y + oneHeight));
129C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left + oneWidth * 16 / 16, y), new Point(left + oneWidth * 16 / 16, y + oneHeight));
130C#中使用GDI+与PrintDocument实现打印
131C#中使用GDI+与PrintDocument实现打印    g.DrawString(r[0], fText, Brushes.Red, left + rectangleMargin, y + rectangleMargin); //a5.1
132C#中使用GDI+与PrintDocument实现打印    g.DrawString(r[1], fText, Brushes.Red, left + rectangleMargin + oneWidth * 4 / 16, y + rectangleMargin); //a5.2
133C#中使用GDI+与PrintDocument实现打印    g.DrawString(r[2], fText, Brushes.Red, left + rectangleMargin + oneWidth * 10 / 16, y + rectangleMargin);//a5.3
134C#中使用GDI+与PrintDocument实现打印    g.DrawString(r[3], fText, Brushes.Red, left + rectangleMargin + oneWidth * 12 / 16, y + rectangleMargin);//a5.4
135C#中使用GDI+与PrintDocument实现打印    g.DrawString(r[4], fText, Brushes.Red, left + rectangleMargin + oneWidth * 14 / 16, y + rectangleMargin);//a5.5
136C#中使用GDI+与PrintDocument实现打印
137C#中使用GDI+与PrintDocument实现打印    this.AddPrintedSign(ref row[i]);
138C#中使用GDI+与PrintDocument实现打印    y += oneHeight;
139C#中使用GDI+与PrintDocument实现打印}

140C#中使用GDI+与PrintDocument实现打印//
141C#中使用GDI+与PrintDocument实现打印if (y >= e.PageBounds.Height - oneHeight)
142C#中使用GDI+与PrintDocument实现打印{
143C#中使用GDI+与PrintDocument实现打印    e.HasMorePages = true;
144C#中使用GDI+与PrintDocument实现打印    return;
145C#中使用GDI+与PrintDocument实现打印}

146C#中使用GDI+与PrintDocument实现打印//
147C#中使用GDI+与PrintDocument实现打印
148C#中使用GDI+与PrintDocument实现打印if (i == Row - 1)
149C#中使用GDI+与PrintDocument实现打印{
150C#中使用GDI+与PrintDocument实现打印    g.DrawLine(Pens.Black, new Point(left, y), new Point(sTotal.Width - left - right, y));
151C#中使用GDI+与PrintDocument实现打印}

152C#中使用GDI+与PrintDocument实现打印    }

153C#中使用GDI+与PrintDocument实现打印
154C#中使用GDI+与PrintDocument实现打印    //费用累计
155C#中使用GDI+与PrintDocument实现打印    //
156C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
157C#中使用GDI+与PrintDocument实现打印    {
158C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
159C#中使用GDI+与PrintDocument实现打印return;
160C#中使用GDI+与PrintDocument实现打印    }

161C#中使用GDI+与PrintDocument实现打印    //
162C#中使用GDI+与PrintDocument实现打印
163C#中使用GDI+与PrintDocument实现打印    ////费用累计
164C#中使用GDI+与PrintDocument实现打印    string feeTotal = a3[5as String;
165C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(feeTotal))
166C#中使用GDI+与PrintDocument实现打印    {
167C#中使用GDI+与PrintDocument实现打印string[] feeT = feeTotal.Split(new char[] '*' });
168C#中使用GDI+与PrintDocument实现打印Rectangle R3 = new Rectangle(left, y, oneWidth, oneHeight);
169C#中使用GDI+与PrintDocument实现打印g.DrawRectangle(Pens.Black, R3);
170C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(left + oneWidth * 10 / 16, y), new Point(left + oneWidth * 10 / 16, y + R3.Height));
171C#中使用GDI+与PrintDocument实现打印g.DrawString(feeT[0], fText, Brushes.Black, R3.X + rectangleMargin, y + rectangleMargin);
172C#中使用GDI+与PrintDocument实现打印g.DrawString(feeT[1], fText, Brushes.Black, left + 2 * rectangleMargin + R3.Width * 10 / 16, y + rectangleMargin);
173C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref feeTotal);
174C#中使用GDI+与PrintDocument实现打印a3[5= feeTotal;
175C#中使用GDI+与PrintDocument实现打印+= oneHeight;
176C#中使用GDI+与PrintDocument实现打印    }

177C#中使用GDI+与PrintDocument实现打印
178C#中使用GDI+与PrintDocument实现打印    //
179C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - oneHeight)
180C#中使用GDI+与PrintDocument实现打印    {
181C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
182C#中使用GDI+与PrintDocument实现打印return;
183C#中使用GDI+与PrintDocument实现打印    }

184C#中使用GDI+与PrintDocument实现打印    //
185C#中使用GDI+与PrintDocument实现打印
186C#中使用GDI+与PrintDocument实现打印    ////费用按金
187C#中使用GDI+与PrintDocument实现打印    string feeBalance = a3[6as String;
188C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(feeBalance))
189C#中使用GDI+与PrintDocument实现打印    {
190C#中使用GDI+与PrintDocument实现打印string[] feeB = feeBalance.Split(new char[] '*' });
191C#中使用GDI+与PrintDocument实现打印Rectangle R4 = new Rectangle(left, y, oneWidth, oneHeight);
192C#中使用GDI+与PrintDocument实现打印g.DrawRectangle(Pens.Black, R4);
193C#中使用GDI+与PrintDocument实现打印g.DrawLine(Pens.Black, new Point(left + oneWidth * 10 / 16, y), new Point(left + oneWidth * 10 / 16, y + R4.Height));
194C#中使用GDI+与PrintDocument实现打印g.DrawString(feeB[0], fText, Brushes.Black, left + rectangleMargin, y + rectangleMargin);
195C#中使用GDI+与PrintDocument实现打印g.DrawString(feeB[1], fText, Brushes.Black, left + 2 * rectangleMargin + oneWidth * 10 / 16, y + rectangleMargin);
196C#中使用GDI+与PrintDocument实现打印
197C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref feeBalance);
198C#中使用GDI+与PrintDocument实现打印a3[6= feeBalance;
199C#中使用GDI+与PrintDocument实现打印+= oneHeight;
200C#中使用GDI+与PrintDocument实现打印    }

201C#中使用GDI+与PrintDocument实现打印
202C#中使用GDI+与PrintDocument实现打印
203C#中使用GDI+与PrintDocument实现打印    //// 备注
204C#中使用GDI+与PrintDocument实现打印    //string remark = " 备注:此清单一式两份,正联由患者或者家属签字,科室留存,付联由患者保存,可随时查询。如24小时不签字,不质疑视为认可费用。如病情需要变更医嘱另行通知。\r\n" + 
205C#中使用GDI+与PrintDocument实现打印    //     " 注:省保或者市保的比例为自费比例。";
206C#中使用GDI+与PrintDocument实现打印    string remark1 = a3[7as String;
207C#中使用GDI+与PrintDocument实现打印
208C#中使用GDI+与PrintDocument实现打印    SizeF remarkSize = g.MeasureString(remark1, fText);
209C#中使用GDI+与PrintDocument实现打印    int Row2 = (int)remarkSize.Width / (oneWidth - 2 * rectangleMargin);
210C#中使用GDI+与PrintDocument实现打印    if (Row2 * (oneWidth - 2 * rectangleMargin) < (int)remarkSize.Width)
211C#中使用GDI+与PrintDocument实现打印    {
212C#中使用GDI+与PrintDocument实现打印Row2 += 1;
213C#中使用GDI+与PrintDocument实现打印    }

214C#中使用GDI+与PrintDocument实现打印    //
215C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - (Row2 + 1* textHeight + 2 * rectangleMargin + Row2 * textMargin)
216C#中使用GDI+与PrintDocument实现打印    {
217C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
218C#中使用GDI+与PrintDocument实现打印return;
219C#中使用GDI+与PrintDocument实现打印    }

220C#中使用GDI+与PrintDocument实现打印    //
221C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(remark1))
222C#中使用GDI+与PrintDocument实现打印    {
223C#中使用GDI+与PrintDocument实现打印Rectangle R5 = new Rectangle(left, y, oneWidth, (Row2 + 1* textHeight + 2 * rectangleMargin + Row2 * textMargin);
224C#中使用GDI+与PrintDocument实现打印g.DrawRectangle(Pens.Black, R5);
225C#中使用GDI+与PrintDocument实现打印R5.Offset(25);
226C#中使用GDI+与PrintDocument实现打印g.DrawString(remark1, fText, Brushes.Black, R5);
227C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref remark1);
228C#中使用GDI+与PrintDocument实现打印a3[7= remark1;
229C#中使用GDI+与PrintDocument实现打印+= R5.Height;
230C#中使用GDI+与PrintDocument实现打印    }

231C#中使用GDI+与PrintDocument实现打印
232C#中使用GDI+与PrintDocument实现打印    //
233C#中使用GDI+与PrintDocument实现打印    if (y >= e.PageBounds.Height - 3 * oneHeight)
234C#中使用GDI+与PrintDocument实现打印    {
235C#中使用GDI+与PrintDocument实现打印e.HasMorePages = true;
236C#中使用GDI+与PrintDocument实现打印return;
237C#中使用GDI+与PrintDocument实现打印    }

238C#中使用GDI+与PrintDocument实现打印
239C#中使用GDI+与PrintDocument实现打印    ////签字
240C#中使用GDI+与PrintDocument实现打印    string signature = a3[8as String;
241C#中使用GDI+与PrintDocument实现打印    Rectangle R6 = new Rectangle(left, y, oneWidth, 2 * rectangleMargin + 3 * textHeight + 2 * textMargin);
242C#中使用GDI+与PrintDocument实现打印    if (!this.JudgeString(signature))
243C#中使用GDI+与PrintDocument实现打印    {
244C#中使用GDI+与PrintDocument实现打印g.DrawRectangle(Pens.Black, R6);
245C#中使用GDI+与PrintDocument实现打印g.DrawString(signature, fText, Brushes.Black, left, y + rectangleMargin + textMargin + textHeight);
246C#中使用GDI+与PrintDocument实现打印this.AddPrintedSign(ref signature);
247C#中使用GDI+与PrintDocument实现打印a3[8= signature;
248C#中使用GDI+与PrintDocument实现打印+= R6.Height;
249C#中使用GDI+与PrintDocument实现打印    }

250C#中使用GDI+与PrintDocument实现打印    j++;
251C#中使用GDI+与PrintDocument实现打印}

252 C#中使用GDI+与PrintDocument实现打印 =   0 //  打印完毕
253 C#中使用GDI+与PrintDocument实现打印 e.HasMorePages  =   false ;

判断一行内容是否已经打印过:

 

 1 C#中使用GDI+与PrintDocument实现打印 /// <summary>
 2C#中使用GDI+与PrintDocument实现打印/// 判断该字符串最后一个字符是否是 * 号,如果是,则表示已经打印过
 3C#中使用GDI+与PrintDocument实现打印/// </summary>
 4C#中使用GDI+与PrintDocument实现打印/// <param name="s">需要判断的字符串</param>
 5C#中使用GDI+与PrintDocument实现打印/// <returns>如果有则返回true,否则返回false</returns>

 6 C#中使用GDI+与PrintDocument实现打印 private   bool  JudgeString(  string  s )
 7 C#中使用GDI+与PrintDocument实现打印 {
 8C#中使用GDI+与PrintDocument实现打印    int l = s.Length;
 9C#中使用GDI+与PrintDocument实现打印    if( s[ l - 1 ] != '*' )
10C#中使用GDI+与PrintDocument实现打印    {
11C#中使用GDI+与PrintDocument实现打印      return false;
12C#中使用GDI+与PrintDocument实现打印    }

13C#中使用GDI+与PrintDocument实现打印    return true;
14C#中使用GDI+与PrintDocument实现打印}

15 C#中使用GDI+与PrintDocument实现打印 
16 C#中使用GDI+与PrintDocument实现打印将已经打印过的内容标记为已打印
17 C#中使用GDI+与PrintDocument实现打印 /// <summary>
18C#中使用GDI+与PrintDocument实现打印/// 将已经打印过的行最后一个字符标记为*,表示该行已经打印
19C#中使用GDI+与PrintDocument实现打印/// </summary>
20C#中使用GDI+与PrintDocument实现打印/// <param name="s">字符串对象</param>

21 C#中使用GDI+与PrintDocument实现打印 private   void  AddPrintedSign(  ref   string  s )
22 C#中使用GDI+与PrintDocument实现打印 {
23C#中使用GDI+与PrintDocument实现打印    int l = s.Length;
24C#中使用GDI+与PrintDocument实现打印    s = s.Replace( s.Substring( l - 11 ), "*" );
25C#中使用GDI+与PrintDocument实现打印}

你可能感兴趣的:(document)