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); }
/// <summary> /// Gets <see cref="PageEntity"/>'s collection, allowed by the current user /// and filtered by entities and type column. /// </summary> /// <param name="schemaName"><see cref="EntitySchema"/> name.</param> /// <param name="recordId">Record unique identifier.</param> /// <returns>Return <see cref="PageEntity"/>'s collection</returns> private IEnumerable <PageEntity> GetPageEntities(string schemaName, Guid recordId) { _log.Info("GetPageEntities Started"); var entitySchema = EntitySchemaManager.GetInstanceByName(schemaName); var sections = GetSections(entitySchema); LogInfoObjectList("Allowed entity sections in allowed workplaces", sections); var pageEntities = new List <PageEntity>(); foreach (var section in sections) { var typeColumnValue = GetEntityTypeColumnValue(entitySchema, recordId, section.TypeColumnName); LogInfoObject($"EntitySchemaName = {entitySchema.Name}, TypecolumnValue is", typeColumnValue); var sectionPages = PageEntityManager.GetSectionPages(section.Id); LogInfoObjectList($"Section '{section.SchemaName}' pages", sectionPages); sectionPages = FilterPagesByType(sectionPages, typeColumnValue); LogInfoObjectList($"Section '{section.SchemaName}' filtered pages", sectionPages); pageEntities.AddRangeIfNotExists(sectionPages); } if (pageEntities.IsEmpty()) { _log.Info($"Get pages by schema '{entitySchema.Name}' Uid '{entitySchema.UId}'"); var entityPages = PageEntityManager.GetEntityPages(entitySchema.UId); LogInfoObjectList($"Entity pages", entityPages); entityPages = entityPages.Where(p => !p.HasSection); LogInfoObjectList($"Entity pages with no sections", entityPages); pageEntities.AddRangeIfNotExists(entityPages); } if (pageEntities.IsEmpty()) { throw new NotFoundPageEntityException("PageEntity not found."); } return(pageEntities.OrderByDescending(p => p.TypeColumnValue)); }
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); }