示例#1
0
 /// <summary>
 /// adds a Pdf Element into this PdfPage.
 /// </summary>
 /// <param name="PdfTextArea"></param>
 public void Add(PdfTextArea PdfTextArea)
 {
     PdfTextArea.ID = this.PdfDocument.GetNextId;
     if (!this.PdfDocument.FontList.Contains(PdfTextArea.Font.Name))
     {
         this.PdfDocument.AddFont(PdfTextArea.Font);
     }
     this.PagePdfObjects.Add(PdfTextArea);
 }
示例#2
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;
        }
示例#3
0
		/// <summary>
		/// adds a Pdf Element into this PdfPage.
		/// </summary>
		/// <param name="PdfTextArea"></param>
		public void Add(PdfTextArea PdfTextArea)
		{
			PdfTextArea.ID=this.PdfDocument.GetNextId;
			if (!this.PdfDocument.FontList.Contains(PdfTextArea.Font.Name))
				this.PdfDocument.AddFont(PdfTextArea.Font);
			this.PagePdfObjects.Add(PdfTextArea);
		}
示例#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);
        }
示例#5
0
        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());
        }
示例#6
0
		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();
		}