Blog

 
1:   using System;
2:   using System.IO;
3:  
4:   using iTextSharp.text;
5:   using iTextSharp.text.pdf;
6:  
7:  
8:   namespace iTextSharp.tutorial.Chap05
9:   {
10:       /// <summary>
11:       /// Memory management
12:       /// When you add objects to a Document, 
13:       /// these objects are written to the outputstream as soon as possible. 
14:       /// But when you construct a table, the Table-object keeps on growing. 
15:       /// For really large tables, this can become a problem.
16:       /// </summary>
17:       public class Chap0513
18:       {
19:           public Chap0513()
20:           {
21:               Console.WriteLine("Chapter 5 example 13: large tables with fitspage");
22:               // creation of the document with a certain size and certain margins
23:               Document document new Document(PageSize.A4.Rotate(), 50505050);
24:           
25:               try 
26:               {
27:                   // creation of the different writers
28:                   PdfWriter writer PdfWriter.GetInstance(documentnew FileStream("Chap0513.pdf"FileMode.Create));
29:               
30:                   // we add some meta information to the document
31:                   document.AddAuthor("Alan Soukup");
32:                   document.AddSubject("This is the result of a Test.");
33:               
34:                   document.Open();
35:               
36:                   Table datatable getTable();
37:               
38:                   for (int 130i++) 
39:                   {
40:                   
41:                       datatable.DefaultHorizontalAlignment Element.ALIGN_LEFT;
42:                   
43:                       datatable.AddCell("myUserId");
44:                       datatable.AddCell("Somebody with a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long long name");
45:                       datatable.AddCell("No Name Company");
46:                       datatable.AddCell("D" i);
47:                   
48:                       datatable.DefaultHorizontalAlignment Element.ALIGN_CENTER;
49:                       datatable.AddCell("No");
50:                       datatable.AddCell("Yes");
51:                       datatable.AddCell("No");
52:                       datatable.AddCell("Yes");
53:                       datatable.AddCell("No");
54:                       datatable.AddCell("Yes");
55:                   
56:                       if (!writer.FitsPage(datatable)) 
57:                       {
58:                           datatable.DeleteLastRow();
59:                           i--;
60:                           document.Add(datatable);
61:                           document.NewPage();
62:                           datatable getTable();
63:                       }
64:                   
65:                   }
66:               
67:               
68:                   document.Add(datatable);
69:               }
70:               catch(Exception e
71:               {
72:                   Console.WriteLine(e.StackTrace);
73:               }
74:           
75:               // we close the document
76:               document.Close();
77:           }
78:       
79:           private static Table getTable() 
80:           {
81:               Table datatable new Table(10);
82:           
83:               datatable.Padding 4;
84:               datatable.Spacing 0;
85:               //datatable.setBorder(Rectangle.NO_BORDER);
86:               float[] headerwidths = {10241212777777};
87:               datatable.Widths headerwidths;
88:               datatable.WidthPercentage 100;
89:           
90:               // the first cell spans 10 columns
91:               Cell cell new Cell(new Phrase("Administration -System Users Report"FontFactory.GetFont(FontFactory.HELVETICA24Font.BOLD)));
92:               cell.HorizontalAlignment Element.ALIGN_CENTER;
93:               cell.Leading 30;
94:               cell.Colspan 10;
95:               cell.Border Rectangle.NO_BORDER;
96:               cell.BackgroundColor new Color(0xC00xC00xC0);
97:               datatable.AddCell(cell);
98:           
99:               // These cells span 2 rows
100:               datatable.DefaultCellBorderWidth 2;
101:               datatable.DefaultHorizontalAlignment 1;
102:               datatable.DefaultRowspan 2;
103:               datatable.AddCell("User Id");
104:               datatable.AddCell(new Phrase("Name"FontFactory.GetFont(FontFactory.HELVETICA14Font.BOLD)));
105:               datatable.AddCell("Company");
106:               datatable.AddCell("Department");
107:           
108:               // This cell spans the remaining 6 columns in 1 row
109:               datatable.DefaultRowspan 1;
110:               datatable.DefaultColspan 6;
111:               datatable.AddCell("Permissions");
112:           
113:               // These cells span 1 row and 1 column
114:               datatable.DefaultColspan 1;
115:               datatable.AddCell("Admin");
116:               datatable.AddCell("Data");
117:               datatable.AddCell("Expl");
118:               datatable.AddCell("Prod");
119:               datatable.AddCell("Proj");
120:               datatable.AddCell("Online");
121:           
122:               datatable.DefaultCellBorderWidth 1;
123:               datatable.DefaultRowspan 1;
124:           
125:               return datatable;
126:  
127:           }
128:       }
129:   }