public void StartPrint(EntityConfigBase data, string text, string caption) { XmlNode config = GetConfig(data.pageConfig); DataFillToXml(data, ref config); xmldata = config; //初始化页面实体 pageentity = PageEntityManager <PageEntity> .Getentity(xmldata); DefaultPageSettings.Landscape = pageentity.Landscape; int PageWidth = CmToPix(pageentity.Width); int PageHeigth = CmToPix(pageentity.Height); PaperSize p1 = null; for (int i = 0; i < PrinterSettings.PaperSizes.Count; i++) { if (PrinterSettings.PaperSizes[i].PaperName == pageentity.PageName) { p1 = PrinterSettings.PaperSizes[i]; break; } } if (p1 == null) { p1 = new PaperSize(pageentity.PageName, PageWidth, PageHeigth); } DefaultPageSettings.PaperSize = p1; PrintShowDialog(text, caption); }
protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e) { for (int i = 0; i < xmldata.ChildNodes.Count; i++) { XmlNode row = xmldata.ChildNodes[i]; string name = row.Name; switch (name) { case "text": textConfig(row, e); break; case "line": LineEntity lineentity = PageEntityManager <LineEntity> .Getentity(row); decimal s_x = lineentity.S_x + pageentity.Margin_Left; decimal s_y = lineentity.S_y + pageentity.Margin_Top; decimal e_x = lineentity.E_x + pageentity.Margin_Left; decimal e_y = lineentity.E_y + pageentity.Margin_Top; e.Graphics.DrawLine(new Pen(Brushes.Black, lineentity.Width), GetPoint(s_x, s_y), GetPoint(e_x, e_y)); break; case "loop": for (int j = 0; j < row.ChildNodes.Count; j++) { XmlNode row_loop = row.ChildNodes[j]; string name_loop = row_loop.Name; switch (name_loop) { case "text": textConfig(row_loop, e); break; default: break; } } break; default: break; } } base.OnPrintPage(e); }