Пример #1
0
        private int UpdateCSSTable(string style)
        {
            int i = FCSSStyles.IndexOf(style);

            if (i == -1)
            {
                i = FCSSStyles.Count;
                FCSSStyles.Add(style);
            }
            return(i);
        }
Пример #2
0
        private void ExportHTMLPageLayered(HTMLThreadData d)
        {
            float MaxWidth = 0, MaxHeight = 0;

            if (!FSinglePage)
            {
                FCSSStyles.Clear();
            }

            doPageBreak = (FSinglePage && d.PageNumber > 1 && FPageBreaks);

            using (ReportPage reportPage = GetPage(d.ReportPage))
            {
                StringBuilder CSS  = new StringBuilder(256);
                StringBuilder Page = new StringBuilder(2048);

                Page = ExportHTMLPageStart(Page, d.PageNumber, d.CurrentPage);

                pageAncor = HTMLGetAncor(d.PageNumber.ToString());

                if (reportPage.Watermark.Enabled && !reportPage.Watermark.ShowImageOnTop)
                {
                    Watermark(Page, reportPage, false);
                }

                if (reportPage.Watermark.Enabled && !reportPage.Watermark.ShowTextOnTop)
                {
                    Watermark(Page, reportPage, true);
                }

                foreach (Base c in reportPage.AllObjects)
                {
                    if (c is ReportComponentBase)
                    {
                        ReportComponentBase obj = c as ReportComponentBase;
                        float val = obj.AbsTop + obj.Height;
                        if (val > MaxHeight)
                        {
                            MaxHeight = val;
                        }
                        val = obj.AbsLeft + obj.Width;
                        if (val > MaxWidth)
                        {
                            MaxWidth = val;
                        }
                        if (obj is CellularTextObject)
                        {
                            obj = (obj as CellularTextObject).GetTable();
                        }
                        if (obj is TableCell)
                        {
                            continue;
                        }
                        else if (obj is TableBase)
                        {
                            TableBase table = obj as TableBase;
                            if (table.ColumnCount > 0 && table.RowCount > 0)
                            {
                                using (TextObject tableback = new TextObject())
                                {
                                    tableback.Border    = table.Border;
                                    tableback.Fill      = table.Fill;
                                    tableback.FillColor = table.FillColor;
                                    tableback.Left      = table.AbsLeft;
                                    tableback.Top       = table.AbsTop;
                                    float tableWidth  = 0;
                                    float tableHeight = 0;
                                    for (int i = 0; i < table.ColumnCount; i++)
                                    {
                                        tableWidth += table[i, 0].Width;
                                    }
                                    for (int i = 0; i < table.RowCount; i++)
                                    {
                                        tableHeight += table.Rows[i].Height;
                                    }
                                    tableback.Width  = (tableWidth < table.Width) ? tableWidth : table.Width;
                                    tableback.Height = tableHeight;
                                    LayerText(Page, tableback);
                                }
                                LayerTable(Page, table);
                            }
                        }
                        else if (IsMemo(obj))
                        {
                            LayerText(Page, obj as TextObject);
                        }
                        else if (obj is BandBase)
                        {
                            LayerBack(Page, obj, String.Empty);
                        }
                        else if (obj is LineObject)
                        {
                            LayerPicture(Page, obj, String.Empty);
                        }
                        else
                        {
                            LayerBack(Page, obj, String.Empty);
                            LayerPicture(Page, obj, String.Empty);
                        }
                    }
                }

                if (reportPage.Watermark.Enabled && reportPage.Watermark.ShowImageOnTop)
                {
                    Watermark(Page, reportPage, false);
                }

                if (reportPage.Watermark.Enabled && reportPage.Watermark.ShowTextOnTop)
                {
                    Watermark(Page, reportPage, true);
                }

                ExportPageStylesLayers(CSS, d.PageNumber);

                if (FSinglePage)
                {
                    FHPos += MaxHeight;
                    FPrevStyleListIndex = FCSSStyles.Count;
                }

                ExportHTMLPageFinal(CSS, Page, d, MaxWidth, MaxHeight);
            }

            if (!FSinglePage && FThreaded)
            {
                if (d.PageNumber == 1)
                {
                    FFirstPageEvent.Set();
                }
            }
        }