Beispiel #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);
     }
 }
Beispiel #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);
        }
Beispiel #3
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);
			}
		}
Beispiel #4
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);
        }
Beispiel #5
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;
		}