public PrinterHint GetHeader(int pagewidth, string text) { int captionHeight = 45; Font font = new Font("宋体", 20); Graphics g = this.button1.CreateGraphics(); int height = (int)g.MeasureString(text, font).Height; int width = (int)g.MeasureString(text, font).Width; g.Dispose(); PrinterHint header = new PrinterHint(); header.Rectangle = new Rectangle(0, 0, pagewidth, height + captionHeight + 12); header.PrintInEveryPage = true; header.Border = BordersEdgeStyle.None; TitleDraw title = new TitleDraw(text); title.Font = font; title.Rectangle = new Rectangle((pagewidth - width) / 2, 0, width, height); title.Border = BordersEdgeStyle.Bottom; TitleDraw line = new TitleDraw(""); line.Rectangle = new Rectangle((pagewidth - width) / 2, 2, width, height); line.Border = BordersEdgeStyle.Bottom; header.Add(title); header.Add(line); StringFormat sf = new StringFormat(); sf.LineAlignment = StringAlignment.Far; Font cap = new Font("宋体", 14); TextDraw header2 = new TextDraw("培训单位: 报考车型: 考试日期: 年 月 日"); header2.Formater = sf; header2.Font = cap; header2.Rectangle = new Rectangle(0, height + 7, pagewidth, captionHeight); header2.Border = BordersEdgeStyle.None; CompanyInfo compInfo = StaticCacheManager.GetConfig <CompanyInfo>(); TextDraw comp = new TextDraw(compInfo.NickName); comp.Formater = sf; comp.Font = cap; comp.Rectangle = new Rectangle(100, height + 7, 200, captionHeight); comp.Border = BordersEdgeStyle.None; header.Add(comp); header.Add(header2); return(header); }
protected virtual PrinterHint BuildHeader() { StringFormat sf = new StringFormat(); sf.LineAlignment = StringAlignment.Far; sf.Alignment = StringAlignment.Far; StringFormat sf2 = new StringFormat(); sf2.LineAlignment = StringAlignment.Center; sf2.Alignment = StringAlignment.Center; CompanyInfo comp = StaticCacheManager.GetConfig<CompanyInfo>(); int pagewidth = customMargin.Width; int captionHeight = 70; Font font = new Font("宋体", 20); Font cap = new Font("宋体", 14); int height = 25; PrinterHint header = new PrinterHint(); header.Rectangle = new Rectangle(0, 0, pagewidth, height + captionHeight + 12); header.PrintInEveryPage = false; header.Border = BordersEdgeStyle.None; //打印单位名称 TitleDraw title = new TitleDraw(comp.NickName+" "+System.DateTime.Now.ToShortDateString()); title.Font = cap; title.Rectangle = new Rectangle(0, 0, pagewidth, height); title.Border = BordersEdgeStyle.None; title.Formater = sf; //打印主标题 TitleDraw titleMain = new TitleDraw(this.headerTitle); titleMain.Font = font; titleMain.Rectangle = new Rectangle(0, height, pagewidth, captionHeight); titleMain.Border = BordersEdgeStyle.None; titleMain.Formater = sf2; header.Add(title); header.Add(titleMain); return header; }
public PrinterHint GetFooter(int pageWidth) { Font font = new Font("宋体", 15); PrinterHint footer = new PrinterHint(); footer.Border = BordersEdgeStyle.None; footer.Rectangle = new Rectangle(-2, 0, pageWidth + 2, 147); /*有时候不打线出来*/ //RecetangleDraw outer = new RecetangleDraw(); TextDraw outer = new TextDraw(" "); outer.Font = font; outer.Border = BordersEdgeStyle.All; outer.Rectangle = new Rectangle(-1, 0, pageWidth + 2, 3 * 34); TextDraw inner = new TextDraw(" "); inner.Font = font; inner.Border = BordersEdgeStyle.All; //RecetangleDraw inner = new RecetangleDraw(); inner.Rectangle = new Rectangle(2, 3, pageWidth - 4, 3 * 34 - 5); /*有时候不打线出来*/ footer.Add(outer); footer.Add(inner); StringFormat sf = new StringFormat(); sf.LineAlignment = StringAlignment.Center; sf.Alignment = StringAlignment.Center; TextDraw txt1 = new TextDraw("报考员"); txt1.Font = font; txt1.Rectangle = new Rectangle(2, 3, footerWidth, footer1Height); txt1.Border = BordersEdgeStyle.Right; txt1.Formater = sf; footer.Add(txt1); TextDraw txt2 = new TextDraw("签名"); txt2.Font = font; txt2.Rectangle = new Rectangle(2, footer1Height + 3, footerWidth, footer1Height); txt2.Border = BordersEdgeStyle.Right; txt2.Formater = sf; footer.Add(txt2); RecetangleDraw space1 = new RecetangleDraw(); space1.Rectangle = new Rectangle(2 + footerWidth, 3, spaceWidth, 2 * footer1Height); space1.Border = BordersEdgeStyle.Right; footer.Add(space1); TextDraw txt3 = new TextDraw("主考员"); txt3.Font = font; txt3.Rectangle = new Rectangle(2 + spaceWidth + footerWidth, 3, footerWidth, footer1Height); txt3.Border = BordersEdgeStyle.Right; txt3.Formater = sf; footer.Add(txt3); TextDraw txt4 = new TextDraw("签名"); txt4.Font = font; txt4.Rectangle = new Rectangle(2 + spaceWidth + footerWidth, footer1Height + 3, footerWidth, footer1Height); txt4.Border = BordersEdgeStyle.Right; txt4.Formater = sf; footer.Add(txt4); RecetangleDraw space2 = new RecetangleDraw(); space2.Rectangle = new Rectangle(2 + 2 * footerWidth + spaceWidth, 3, spaceWidth, 2 * footer1Height); space2.Border = BordersEdgeStyle.Right; footer.Add(space2); TextDraw txt5 = new TextDraw("助考员"); txt5.Font = font; txt5.Rectangle = new Rectangle(2 + 2 * (spaceWidth + footerWidth), 3, footerWidth, footer1Height); txt5.Border = BordersEdgeStyle.Right; txt5.Formater = sf; footer.Add(txt5); TextDraw txt6 = new TextDraw("签名"); txt6.Font = font; txt6.Rectangle = new Rectangle(2 + 2 * (spaceWidth + footerWidth), footer1Height + 3, footerWidth, footer1Height); txt6.Border = BordersEdgeStyle.Right; txt6.Formater = sf; footer.Add(txt6); RecetangleDraw space3 = new RecetangleDraw(); space3.Rectangle = new Rectangle(2 + 3 * footerWidth + 2 * spaceWidth, 3, spaceWidth - 10, footer1Height * 2); space3.Border = BordersEdgeStyle.Right; footer.Add(space3); TextDraw txt7 = new TextDraw("审核人"); txt7.Font = font; txt7.Rectangle = new Rectangle(2 + 3 * (spaceWidth + footerWidth) - 10, 3, footerWidth - 6, footer1Height * 2); txt7.Border = BordersEdgeStyle.Right; txt7.Formater = sf; footer.Add(txt7); TextDraw txt8 = new TextDraw("报考人数:_______"); txt8.Font = font; txt8.Rectangle = new Rectangle(2, 3 + 2 * footer1Height, footerWidth2, 45); footer.Add(txt8); TextDraw txt9 = new TextDraw("合格人数:_______"); txt9.Font = font; txt9.Rectangle = new Rectangle(2 + footerWidth2, 3 + 2 * footer1Height, footerWidth2, 45); footer.Add(txt9); TextDraw txt10 = new TextDraw("不合格人数:_____"); txt10.Font = font; txt10.Rectangle = new Rectangle(2 + 2 * footerWidth2, 3 + 2 * footer1Height, footerWidth2, 45); footer.Add(txt10); TextDraw txt11 = new TextDraw("缺考人数:______"); txt11.Font = font; txt11.Rectangle = new Rectangle(2 + 3 * footerWidth2, 3 + 2 * footer1Height, pageWidth - 4 - 3 * footerWidth2, 45); footer.Add(txt11); TextDraw text = new TextDraw(" 注:此表填写不全,不予受理。填写内容涂改无效。"); text.Border = BordersEdgeStyle.None; text.Font = font; text.Rectangle = new Rectangle(0, 102, pageWidth, 40); footer.Add(text); footer.PrintInEveryPage = true; return(footer); }
private void button1_Click(object sender, EventArgs e) { this.dataGridView1.EndEdit(); PrintCommonSetting.Default_Border_Style = BordersEdgeStyle.All; //if (this.dataGridView1.Rows.Count == 0) //{ //MessageBoxHelper.Show("请先添加需要打印的学员!"); //} StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; int rowHeight = 34; PageMargin margin = new PageMargin(); margin.Left = 35; margin.Right = 35; //margin.Bottom = 36; //margin.Top = 37; margin.Bottom = 40; margin.Top = 33; PrinterContent content = new PrinterContent(); content.CustomPageMargin = margin; PrinterHint header = this.GetHeader(content.CustomPageMargin.Width, this.comboBox1.Text); //header.Rectangle = new Rectangle((content.CustomPageMargin.Width - header.Rectangle.Width), 0, header.Rectangle.Width, header.Rectangle.Height); content.Header = header; content.IsPrinterPages = false; int[] columnWidth = { 60, 90, 90, 60, 184, 135, 60, content.CustomPageMargin.Width - 679 }; string[] columnHeader = { "序号", "车号", "姓名", "性别", "身份证明号码", "准考证明号", "成绩", "备注" }; int len = columnWidth.Length; PrinterTable table = new PrinterTable(); PrinterRow row = new PrinterRow(); row.Rectangle = new System.Drawing.Rectangle(0, 0, content.CustomPageMargin.Width, 43); TextDraw text = null; int tmp = 0; Font col = new Font("宋体", 15); for (int i = 0; i < len; i++) { text = new TextDraw(columnHeader[i]); text.Formater = sf; text.Font = col; text.Border = BordersEdgeStyle.All; text.Rectangle = new System.Drawing.Rectangle(tmp, 0, columnWidth[i], 43); tmp += columnWidth[i]; row.Add(text); } table.Header = row; //table.Add(row); row = null; DataRow dr = null; string tmpCarType = string.Empty; // DataTable dt = this.MockData(); DataTable dt = this.GetDataFromGrid(); if (dt.Rows.Count == 0) { for (int i = 0; i < 24; i++) { dt.Rows.Add(new string[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }); } } else { int tmprowcount = dt.Rows.Count % 24; if (tmprowcount != 0) { tmprowcount = 24 - tmprowcount; for (int i = 0; i < tmprowcount; i++) { dt.Rows.Add(new string[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }); } } } for (int j = 0; j < dt.Rows.Count; j++) { dr = dt.Rows[j]; tmp = 0; row = new PrinterRow(); row.Rectangle = new System.Drawing.Rectangle(0, 0, content.CustomPageMargin.Width, rowHeight); text = new TextDraw(((j + 1) % 24 == 0?24:(j + 1) % 24).ToString()); text.Formater = sf; text.Border = BordersEdgeStyle.All; text.Rectangle = new System.Drawing.Rectangle(tmp, 0, columnWidth[0], rowHeight); tmp += columnWidth[0]; row.Add(text); tmpCarType = dr[3].ToString(); for (int i = 1; i < len; i++) { text = new TextDraw(Convert.IsDBNull(dr[i - 1]) ? string.Empty : dr[i - 1].ToString()); text.Border = BordersEdgeStyle.All; text.Formater = sf; text.Rectangle = new System.Drawing.Rectangle(tmp, 0, columnWidth[i], rowHeight); tmp += columnWidth[i]; row.Add(text); } table.Add(row); } table.Border = BordersEdgeStyle.None; content.Body = table; PrinterHint footer = this.GetFooter(content.CustomPageMargin.Width); content.Footer = footer; content.PrinterSetting(); //content.Preview(); }