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