Blog

 
1:   using System;
2:   using System.IO;
3:  
4:   using iTextSharp.text;
5:   using iTextSharp.text.pdf;
6:  
7:   namespace iTextSharp.tutorial.Chap12
8:   {
9:       class MyTableEvent : IPdfPTableEvent 
10:       {    
11:           public void TableLayout(PdfPTable tablefloat[][] widthfloat[] heightsint headerRowsint rowStartPdfContentByte[] canvases
12:           {
13:               float[] widths width[0];
14:               PdfContentByte cb canvases[PdfPTable.TEXTCANVAS];
15:               cb.SaveState();
16:               cb.SetLineWidth(2);
17:               cb.SetRGBColorStroke(25500);
18:               cb.Rectangle(widths[0], heights[heights.Length 1], widths[widths.Length 1] - widths[0], heights[0] - heights[heights.Length 1]);
19:               cb.Stroke();
20:               if (headerRows 0
21:               {
22:                   float headerHeight heights[0];
23:                   for (int 0headerRows; ++k)
24:                       headerHeight += heights[k];
25:                   cb.SetRGBColorStroke(00255);
26:                   cb.Rectangle(widths[0], heights[headerRows], widths[widths.Length 1] - widths[0], heights[0] - heights[headerRows]);
27:                   cb.Stroke();
28:               }
29:               cb.RestoreState();
30:               cb canvases[PdfPTable.BASECANVAS];
31:               cb.SaveState();
32:               cb.SetLineWidth(.5f);
33:               Random r new Random();
34:               for (int line 0line heights.Length 1; ++line
35:               {
36:                   widths width[line];
37:                   for (int col 0col widths.Length 1; ++col
38:                   {
39:                       if (line == && col == 0)
40:                           cb.SetAction(new PdfAction("http://www.Geocities.Com/itextpdf"),
41:                               widths[col], heights[line 1], widths[col 1], heights[line]);
42:                       cb.SetRGBColorStrokeF((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble());
43:                       cb.MoveTo(widths[col], heights[line]);
44:                       cb.LineTo(widths[col 1], heights[line]);
45:                       cb.Stroke();
46:                       cb.SetRGBColorStrokeF((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble());
47:                       cb.MoveTo(widths[col], heights[line]);
48:                       cb.LineTo(widths[col], heights[line 1]);
49:                       cb.Stroke();
50:                   }
51:               }
52:               cb.RestoreState();
53:           }
54:       }
55:  
56:       public class Chap1202 
57:       {
58:       
59:           public Chap1202() 
60:           {
61:           
62:               Console.WriteLine("Chapter 12 example 2: Table events");
63:           
64:               // step 1: creation of a document-object
65:               Document document new Document(PageSize.A450505050);
66:               try 
67:               {
68:                   // step 2: we create a writer that listens to the document
69:                   PdfWriter writer PdfWriter.GetInstance(documentnew FileStream("Chap1202.pdf"FileMode.Create));
70:                   // step 3: we open the document
71:                   document.Open();
72:                   // step 4: we add some content
73:                   BaseFont bf BaseFont.CreateFont(BaseFont.HELVETICABaseFont.WINANSIBaseFont.NOT_EMBEDDED);
74:                   // table 1
75:                   PdfPTable table new PdfPTable(4);
76:                   table.DefaultCell.Border Rectangle.NO_BORDER;
77:                   for (int 024; ++k
78:                   {
79:                       if (!= 0)
80:                           table.AddCell("" k);
81:                       else
82:                           table.AddCell("This is an URL");
83:                   }
84:                   MyTableEvent evnt new MyTableEvent();
85:                   table.TableEvent evnt;
86:                   table.TotalWidth 300;
87:                   // write table 1 at some position
88:                   table.WriteSelectedRows(0, -1100600writer.DirectContent);
89:                   // add table 1 (default position)
90:                   document.Add(table);
91:                   document.NewPage();
92:                   // table 2
93:                   table new PdfPTable(4);
94:                   float fontSize 12;
95:                   table.DefaultCell.PaddingTop bf.GetFontDescriptor(BaseFont.ASCENTfontSize) - fontSize 2;
96:                   table.DefaultCell.Border Rectangle.NO_BORDER;
97:                   for (int 0500 4; ++k
98:                   {
99:                       if (== 0)
100:                           table.AddCell(new Phrase("This is an URL"new Font(bffontSize)));
101:                       else
102:                           table.AddCell(new Phrase("" knew Font(bffontSize)));
103:                   }
104:                   table.TableEvent evnt;
105:                   table.HeaderRows 3;
106:                   document.Add(table);
107:               }
108:               catch (Exception de
109:               {
110:                   Console.Error.WriteLine(de.Message);
111:                   Console.Error.WriteLine(de.StackTrace);
112:               }
113:               // step 5: close the document
114:               document.Close();
115:           }
116:       }
117:   }