/// <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); }
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; }
/// <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); }
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); }
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()); }
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(); }