コード例 #1
0
 /// <summary>
 /// The CellRange will be collapsed into a single Cell (with the lowest row and column index)
 /// This method will automatically sets the colspan and rowspan of the first Cell of the Range.
 /// </summary>
 public void MergeCells()
 {
     try
     {
         PdfCell pc = this.owner.Rows[startRow][startColumn];
         pc.RowSpan = endRow - startRow + 1;
         pc.ColSpan = endColumn - startColumn + 1;
     }
     catch { throw new Exception("Impossible to merge the CellAreas"); }
 }
コード例 #2
0
ファイル: PdfTable.cs プロジェクト: okevin/chama
        internal PdfTablePage createTablePage()
        {
            int    index = this.renderingIndex;
            double h     = this.Rows[index].Height;
            double oh    = 0;

            while ((h <= this.TableArea.height) && (index < this.rows))
            {
                index++;
                oh = h;
                if (index < this.rows)
                {
                    h += this.Rows[index].Height;
                }
            }
            this.renderingRows    = index - this.renderingIndex;
            this.TableArea.height = (double)oh;
            PdfTablePage ptp = new PdfTablePage(renderingIndex, renderingIndex + renderingRows - 1, columns);

            //ptp.stream="";
            //caculates areas
            double y = this.TableArea.posy;

            for (int rowIndex = this.renderingIndex; (rowIndex < this.renderingIndex + this.renderingRows); rowIndex++)
            {
                double x = this.TableArea.posx;
                for (int columnIndex = 0; columnIndex < this.columns; columnIndex++)
                {
                    PdfCell pc    = this.Cell(rowIndex, columnIndex);
                    double  width = pc.Width;
                    pc.area = new PdfArea(this.PdfDocument, x, y, width, pc.Height);
                    x      += width;
                }
                y += this.Rows[rowIndex].Height;
            }

            for (int rowIndex = this.renderingIndex; (rowIndex < this.renderingIndex + this.renderingRows); rowIndex++)
            {
                for (int columnIndex = 0; columnIndex < this.columns; columnIndex++)
                {
                    PdfCell pc = this.Cell(rowIndex, columnIndex);
                    if (!pc.isSpanned)
                    {
                        ptp.cellAreas.Add(pc.row + "," + pc.column, pc.Area);
                    }
                }
            }

            ptp.stream = this.ToLineStream();
            ptp.SetArea();

            this.renderingIndex = index;
            this.renderingRows  = 0;
            return(ptp);
        }
コード例 #3
0
ファイル: PdfRow.cs プロジェクト: okevin/chama
 /// <summary>
 /// returns a specific cell of the row
 /// </summary>
 public PdfCell this[int column]
 {
     get
     {
         PdfCell pc = this.owner.Cell(this.index, column);
         if (pc == null)
         {
             throw new Exception("Column " + column + " does not exist");
         }
         return(pc);
     }
 }
コード例 #4
0
ファイル: PdfTable.cs プロジェクト: okevin/chama
        internal string ToLineStream()
        {
            System.Text.StringBuilder sb = new StringBuilder();
            // draw background rectangles
            for (int rowIndex = this.renderingIndex; (rowIndex < this.renderingIndex + this.renderingRows); rowIndex++)
            {
                for (int columnIndex = 0; columnIndex < this.columns; columnIndex++)
                {
                    PdfCell pc = this.Cell(rowIndex, columnIndex);
                    if (!pc.isSpanned)
                    {
                        if (!pc.transparent)
                        {
                            sb.Append(pc.Area.InnerArea(1).ToRectangle(pc.backgroundColor
                                                                       , pc.backgroundColor).ToLineStream());
                        }
                    }
                }
            }
            sb.Append("BT\n");

            Font  actualFont  = null;
            Color actualColor = Color.Black;

            sb.Append(Utility.ColorrgLine(Color.Black));
            for (int rowIndex = this.renderingIndex; (rowIndex < this.renderingIndex + this.renderingRows); rowIndex++)
            {
                for (int columnIndex = 0; columnIndex < this.columns; columnIndex++)
                {
                    PdfCell pc = this.Cell(rowIndex, columnIndex);
                    if (!pc.isSpanned)
                    {
                        PdfTextArea pt = new PdfTextArea(pc.Font, pc.foregroundColor
                                                         , pc.Area.InnerArea(pc.cellPadding * 2), pc.ContentAlignment, pc.text);

                        if (pc.Font != actualFont)
                        {
                            string actualFontLine = Utility.FontToFontLine(pc.Font);
                            if (!this.PdfDocument.FontNameList.Contains(PdfFont.FontToPdfType(pc.Font)))
                            {
                                this.PdfDocument.AddFont(pc.Font);
                            }
                            sb.Append(actualFontLine);
                            actualFont = pc.Font;
                        }
                        if (pc.foregroundColor != actualColor)
                        {
                            sb.Append(Utility.ColorrgLine(pc.foregroundColor));
                            actualColor = pc.foregroundColor;
                        }
                        sb.Append(pt.ToLineStream());
                    }
                }
            }
            sb.Append("ET\n");

            if (this.borderWidth > 0)
            {
                sb.Append(new PdfRectangle(this.PdfDocument, new PdfArea(this.PdfDocument, 0, 0, 1, 1), this.borderColor
                                           , this.borderWidth).ToColorAndWidthStream());
                int bt = (int)this.borderType;
                if ((bt == 1) || (bt == 3) || (bt == 5) || (bt == 6))
                {
                    sb.Append(this.TableArea.ToRectangle(this.borderColor, this.borderWidth).ToRectangleStream());
                }
                for (int rowIndex = this.renderingIndex; (rowIndex < this.renderingIndex + this.renderingRows); rowIndex++)
                {
                    for (int columnIndex = 0; columnIndex < this.columns; columnIndex++)
                    {
                        PdfCell pc = this.Cell(rowIndex, columnIndex);
                        if (!pc.isSpanned)
                        {
                            if (rowIndex != this.renderingIndex)
                            {
                                if ((bt == 6) || (bt == 2) || (bt == 3) || (bt == 7))
                                {
                                    sb.Append(pc.Area.UpperBound(this.borderColor, this.borderWidth).ToLineStream());
                                }
                            }
                            if (columnIndex != 0)
                            {
                                if ((bt == 6) || (bt == 4) || (bt == 5) || (bt == 7))
                                {
                                    sb.Append(pc.Area.LeftBound(this.borderColor, this.borderWidth).ToLineStream());
                                }
                            }
                        }
                    }
                }
            }
            return(sb.ToString());
        }