| 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: | /// In some cases, you may want to avoid cells or even the complete table to be split into two parts | |
| 12: | /// </summary> | |
| 13: | public class Chap0510 | |
| 14: | { | |
| 15: | public Chap0510() | |
| 16: | { | |
| 17: | Console.WriteLine("Chapter 5 example 10: large tables with repeating headers"); | |
| 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("Chap0510.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: | // this is the end of the table header | |
| 74: | datatable.EndHeaders(); | |
| 75: | ||
| 76: | datatable.DefaultCellBorderWidth = 1; | |
| 77: | datatable.DefaultRowspan = 1; | |
| 78: | ||
| 79: | for (int i = 1; i < 30; i++) | |
| 80: | { | |
| 81: | ||
| 82: | datatable.DefaultHorizontalAlignment = Element.ALIGN_LEFT; | |
| 83: | ||
| 84: | datatable.AddCell("myUserId"); | |
| 85: | 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"); | |
| 86: | datatable.AddCell("No Name Company"); | |
| 87: | datatable.AddCell("D" + i); | |
| 88: | ||
| 89: | datatable.DefaultHorizontalAlignment = Element.ALIGN_CENTER; | |
| 90: | datatable.AddCell("No"); | |
| 91: | datatable.AddCell("Yes"); | |
| 92: | datatable.AddCell("No"); | |
| 93: | datatable.AddCell("Yes"); | |
| 94: | datatable.AddCell("No"); | |
| 95: | datatable.AddCell("Yes"); | |
| 96: | ||
| 97: | } | |
| 98: | ||
| 99: | ||
| 100: | document.Add(datatable); | |
| 101: | } | |
| 102: | catch(Exception e) | |
| 103: | { | |
| 104: | Console.Error.WriteLine(e.StackTrace); | |
| 105: | } | |
| 106: | ||
| 107: | // we close the document | |
| 108: | document.Close(); | |
| 109: | ||
| 110: | } | |
| 111: | } | |
| 112: | } |