Ejemplo n.º 1
0
 /// <summary>
 /// adds a Pdf Element into this PdfPage.
 /// </summary>
 /// <param name="PdfTablePage"></param>
 public void Add(PdfTablePage PdfTablePage)
 {
     if (PdfTablePage != null)
     {
         PdfTablePage.ID = this.PdfDocument.GetNextId;
         this.PagePdfObjects.Add(PdfTablePage);
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public static Stream ListToPdf(object list, Dictionary <string, string> titles, bool IsExportAllCol)
        {
            DataTable dt       = ListToDataTable(list, titles, IsExportAllCol, string.Empty);
            var       pdfTitle = dt.TableName;

            // Starting instantiate the document.
            // Remember to set the Docuement Format. In this case, we specify width and height.
            PdfDocument myPdfDocument = new PdfDocument(PdfDocumentFormat.InCentimeters(21, 29.7));

            // Now we create a Table of 100 lines, 6 columns and 4 points of Padding.
            PdfTable myPdfTable = myPdfDocument.NewTable(new Font("Arial", 12), dt.Rows.Count, dt.Columns.Count, 4);

            // Importing datas from the datatables... (also column names for the headers!)
            //myPdfTable.ImportDataTable(Table);
            myPdfTable.ImportDataTable(dt);

            // Sets the format for correct date-time representation
            //myPdfTable.Columns[2].SetContentFormat("{0:dd/MM/yyyy}");

            // Now we set our Graphic Design: Colors and Borders...
            myPdfTable.HeadersRow.SetColors(Color.White, Color.Navy);
            myPdfTable.SetColors(Color.Black, Color.White, Color.Gainsboro);
            myPdfTable.SetBorders(Color.Black, 1, BorderType.CompleteGrid);

            //// With just one method we can set the proportional width of the columns.
            //// It's a "percentage like" assignment, but the sum can be different from 100.
            //myPdfTable.SetColumnsWidth(new int[] { 5, 25, 16, 20, 20, 15 });

            //// You can also set colors for a range of cells, in this case, a row:
            //myPdfTable.Rows[7].SetColors(Color.Black, Color.LightGreen);

            // Now we set some alignment... for the whole table and then, for a column.
            myPdfTable.SetContentAlignment(ContentAlignment.MiddleCenter);
            myPdfTable.Columns[1].SetContentAlignment(ContentAlignment.MiddleLeft);

            // Here we start the loop to generate the table...
            while (!myPdfTable.AllTablePagesCreated)
            {
                // we create a new page to put the generation of the new TablePage:
                PdfPage      newPdfPage      = myPdfDocument.NewPage();
                PdfTablePage newPdfTablePage = myPdfTable.CreateTablePage(new PdfArea(myPdfDocument, 48, 120, 500, 670));

                // we also put a Label
                PdfTextArea pta = new PdfTextArea(new Font("Arial", 26, FontStyle.Bold), Color.Red
                                                  , new PdfArea(myPdfDocument, 0, 20, 595, 120), ContentAlignment.MiddleCenter, pdfTitle);

                // nice thing: we can put all the objects in the following lines, so we can have
                // a great control of layer sequence...
                newPdfPage.Add(newPdfTablePage);
                newPdfPage.Add(pta);

                // we save each generated page before start rendering the next.
                newPdfPage.SaveToDocument();
            }


            //myPdfDocument.SaveToFile("Example1.pdf");
            var stream = new MemoryStream();

            myPdfDocument.SaveToStream(stream);
            return(stream);
        }