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: | /// Tables that span multiple pages are cut into different parts automatically | |
12: | /// </summary> | |
13: | public class Chap0509 | |
14: | { | |
15: | public Chap0509() | |
16: | { | |
17: | Console.WriteLine("Chapter 5 example 9: large tables"); | |
18: | // creation of the document with a certain size and certain margins | |
19: | Document document = new Document(PageSize.A4.Rotate(), 50, 50, 50, 50); | |
20: | ||
21: | try | |
22: | { | |
23: | // creation of the different writers | |
24: | PdfWriter.GetInstance(document, new FileStream("Chap0509.pdf", FileMode.Create)); | |
25: | ||
26: | // we add some meta information to the document | |
27: | document.AddAuthor("Gerald Henson"); | |
28: | document.AddSubject("This is the result of a Test."); | |
29: | ||
30: | document.Open(); | |
31: | ||
32: | Table datatable = new Table(10); | |
33: | ||
34: | datatable.Padding = 4; | |
35: | datatable.Spacing = 0; | |
36: | //datatable.setBorder(Rectangle.NO_BORDER); | |
37: | float[] headerwidths = {10, 24, 12, 12, 7, 7, 7, 7, 7, 7}; | |
38: | datatable.Widths = headerwidths; | |
39: | datatable.WidthPercentage = 100; | |
40: | ||
41: | // the first cell spans 10 columns | |
42: | Cell cell = new Cell(new Phrase("Administration -System Users Report", FontFactory.GetFont(FontFactory.HELVETICA, 24, Font.BOLD))); | |
43: | cell.HorizontalAlignment = Element.ALIGN_CENTER; | |
44: | cell.Leading = 30; | |
45: | cell.Colspan = 10; | |
46: | cell.Border = Rectangle.NO_BORDER; | |
47: | cell.BackgroundColor = new Color(0xC0, 0xC0, 0xC0); | |
48: | datatable.AddCell(cell); | |
49: | ||
50: | // These cells span 2 rows | |
51: | datatable.DefaultCellBorderWidth = 2; | |
52: | datatable.DefaultHorizontalAlignment = 1; | |
53: | datatable.DefaultRowspan = 2; | |
54: | datatable.AddCell("User Id"); | |
55: | datatable.AddCell(new Phrase("Name", FontFactory.GetFont(FontFactory.HELVETICA, 14, Font.BOLD))); | |
56: | datatable.AddCell("Company"); | |
57: | datatable.AddCell("Department"); | |
58: | ||
59: | // This cell spans the remaining 6 columns in 1 row | |
60: | datatable.DefaultRowspan = 1; | |
61: | datatable.DefaultColspan = 6; | |
62: | datatable.AddCell("Permissions"); | |
63: | ||
64: | // These cells span 1 row and 1 column | |
65: | datatable.DefaultColspan = 1; | |
66: | datatable.AddCell("Admin"); | |
67: | datatable.AddCell("Data"); | |
68: | datatable.AddCell("Expl"); | |
69: | datatable.AddCell("Prod"); | |
70: | datatable.AddCell("Proj"); | |
71: | datatable.AddCell("Online"); | |
72: | ||
73: | datatable.DefaultCellBorderWidth = 1; | |
74: | datatable.DefaultRowspan = 1; | |
75: | ||
76: | for (int i = 1; i < 30; i++) | |
77: | { | |
78: | ||
79: | datatable.DefaultHorizontalAlignment = Element.ALIGN_LEFT; | |
80: | ||
81: | datatable.AddCell("myUserId"); | |
82: | datatable.AddCell("Somebody with a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long long name"); | |
83: | datatable.AddCell("No Name Company"); | |
84: | datatable.AddCell("D" + i); | |
85: | ||
86: | datatable.DefaultHorizontalAlignment = Element.ALIGN_CENTER; | |
87: | datatable.AddCell("No"); | |
88: | datatable.AddCell("Yes"); | |
89: | datatable.AddCell("No"); | |
90: | datatable.AddCell("Yes"); | |
91: | datatable.AddCell("No"); | |
92: | datatable.AddCell("Yes"); | |
93: | ||
94: | } | |
95: | ||
96: | ||
97: | document.Add(datatable); | |
98: | } | |
99: | catch(Exception e) | |
100: | { | |
101: | Console.Error.WriteLine(e.StackTrace); | |
102: | } | |
103: | ||
104: | // we close the document | |
105: | document.Close(); | |
106: | ||
107: | } | |
108: | } | |
109: | } |