Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        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);
        }