1: | using System; | |
2: | using System.IO; | |
3: | ||
4: | using iTextSharp.text; | |
5: | using iTextSharp.text.xml; | |
6: | ||
7: | namespace iTextSharp.tutorial.Chap07 | |
8: | { | |
9: | /// <summary> | |
10: | /// how a document is generated containing almost all the objects we discussed in the previous chapters | |
11: | /// </summary> | |
12: | public class Chap0701 | |
13: | { | |
14: | ||
15: | public Chap0701() | |
16: | { | |
17: | ||
18: | Console.WriteLine("Chapter 7 example 1: my first XML"); | |
19: | ||
20: | // step 1: creation of a document-object | |
21: | Document document = new Document(); | |
22: | ||
23: | try | |
24: | { | |
25: | ||
26: | // step 2: | |
27: | // we create a writer that listens to the document | |
28: | // and directs a XML-stream to a file | |
29: | XmlWriter.GetInstance(document, new FileStream("Chap0701.xml", FileMode.Create), "itext.dtd"); | |
30: | ||
31: | // step 3: we open the document | |
32: | document.Open(); | |
33: | ||
34: | // step 4: we add content to the document | |
35: | Paragraph paragraph = new Paragraph("Please visit my "); | |
36: | Anchor anchor1 = new Anchor("website (external reference)", FontFactory.GetFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, new Color(0, 0, 255))); | |
37: | anchor1.Reference = "http://www.lowagie.com/iText/"; | |
38: | anchor1.Name = "top"; | |
39: | paragraph.Add(anchor1); | |
40: | document.Add(paragraph); | |
41: | ||
42: | Paragraph entities = new Paragraph("These are some special characters: <, >, &, \" and '"); | |
43: | document.Add(entities); | |
44: | ||
45: | document.Add(new Paragraph("some books I really like:")); | |
46: | List list; | |
47: | ListItem listItem; | |
48: | list = new List(true, 15); | |
49: | listItem = new ListItem("When Harlie was one", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)); | |
50: | listItem.Add(new Chunk(" by David Gerrold", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 11, Font.ITALIC)).SetTextRise(8.0f)); | |
51: | list.Add(listItem); | |
52: | listItem = new ListItem("The World according to Garp", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)); | |
53: | listItem.Add(new Chunk(" by John Irving", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 11, Font.ITALIC)).SetTextRise(-8.0f)); | |
54: | list.Add(listItem); | |
55: | listItem = new ListItem("Decamerone", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)); | |
56: | listItem.Add(new Chunk(" by Giovanni Boccaccio", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 11, Font.ITALIC))); | |
57: | list.Add(listItem); | |
58: | document.Add(list); | |
59: | ||
60: | paragraph = new Paragraph("some movies I really like:"); | |
61: | list = new List(false, 10); | |
62: | list.Add("Wild At Heart"); | |
63: | list.Add("Casablanca"); | |
64: | list.Add("When Harry met Sally"); | |
65: | list.Add("True Romance"); | |
66: | list.Add("Le mari de la coiffeuse"); | |
67: | paragraph.Add(list); | |
68: | document.Add(paragraph); | |
69: | ||
70: | document.Add(new Paragraph("Some authors I really like:")); | |
71: | list = new List(false, 20); | |
72: | list.ListSymbol = new Chunk("*", FontFactory.GetFont(FontFactory.HELVETICA, 20, Font.BOLD)); | |
73: | listItem = new ListItem("Isaac Asimov"); | |
74: | list.Add(listItem); | |
75: | List sublist; | |
76: | sublist = new List(true, 10); | |
77: | sublist.ListSymbol = new Chunk("", FontFactory.GetFont(FontFactory.HELVETICA, 8)); | |
78: | sublist.Add("The Foundation Trilogy"); | |
79: | sublist.Add("The Complete Robot"); | |
80: | sublist.Add("Caves of Steel"); | |
81: | sublist.Add("The Naked Sun"); | |
82: | list.Add(sublist); | |
83: | listItem = new ListItem("John Irving"); | |
84: | list.Add(listItem); | |
85: | sublist = new List(true, 10); | |
86: | sublist.ListSymbol = new Chunk("", FontFactory.GetFont(FontFactory.HELVETICA, 8)); | |
87: | sublist.Add("The World according to Garp"); | |
88: | sublist.Add("Hotel New Hampshire"); | |
89: | sublist.Add("A prayer for Owen Meany"); | |
90: | sublist.Add("Widow for a year"); | |
91: | list.Add(sublist); | |
92: | listItem = new ListItem("Kurt Vonnegut"); | |
93: | list.Add(listItem); | |
94: | sublist = new List(true, 10); | |
95: | sublist.ListSymbol = new Chunk("", FontFactory.GetFont(FontFactory.HELVETICA, 8)); | |
96: | sublist.Add("Slaughterhouse 5"); | |
97: | sublist.Add("Welcome to the Monkey House"); | |
98: | sublist.Add("The great pianola"); | |
99: | sublist.Add("Galapagos"); | |
100: | list.Add(sublist); | |
101: | document.Add(list); | |
102: | ||
103: | paragraph = new Paragraph("\n\n"); | |
104: | document.Add(paragraph); | |
105: | ||
106: | Table table = new Table(3); | |
107: | table.BorderWidth = 1; | |
108: | table.BorderColor = new Color(0, 0, 255); | |
109: | table.Padding = 5; | |
110: | table.Spacing = 5; | |
111: | Cell cell = new Cell("header"); | |
112: | cell.Header = true; | |
113: | cell.Colspan = 3; | |
114: | table.AddCell(cell); | |
115: | table.EndHeaders(); | |
116: | cell = new Cell("example cell with colspan 1 and rowspan 2"); | |
117: | cell.Rowspan = 2; | |
118: | cell.BorderColor = new Color(255, 0, 0); | |
119: | table.AddCell(cell); | |
120: | table.AddCell("1.1"); | |
121: | table.AddCell("2.1"); | |
122: | table.AddCell("1.2"); | |
123: | table.AddCell("2.2"); | |
124: | table.AddCell("cell test1"); | |
125: | cell = new Cell("big cell"); | |
126: | cell.Rowspan = 2; | |
127: | cell.Colspan = 2; | |
128: | table.AddCell(cell); | |
129: | table.AddCell("cell test2"); | |
130: | document.Add(table); | |
131: | ||
132: | Image jpeg = Image.GetInstance("myKids.jpg"); | |
133: | document.Add(jpeg); | |
134: | Image png = Image.GetInstance(new Uri("http://www.lowagie.com/iText/examples/hitchcock.png")); | |
135: | document.Add(png); | |
136: | Anchor anchor2 = new Anchor("please jump to a local destination", FontFactory.GetFont(FontFactory.HELVETICA, 12, Font.NORMAL, new Color(0, 0, 255))); | |
137: | anchor2.Reference = "#top"; | |
138: | document.Add(anchor2); | |
139: | ||
140: | document.Add(paragraph); | |
141: | ||
142: | // we define some fonts | |
143: | Font chapterFont = FontFactory.GetFont(FontFactory.HELVETICA, 24, Font.NORMAL, new Color(255, 0, 0)); | |
144: | Font sectionFont = FontFactory.GetFont(FontFactory.HELVETICA, 20, Font.NORMAL, new Color(0, 0, 255)); | |
145: | Font subsectionFont = FontFactory.GetFont(FontFactory.HELVETICA, 18, Font.BOLD, new Color(0, 64, 64)); | |
146: | // we create some paragraphs | |
147: | Paragraph blahblah = new Paragraph("blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah"); | |
148: | Paragraph blahblahblah = new Paragraph("blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah"); | |
149: | ||
150: | // this loop will create 7 chapters | |
151: | for (int i = 1; i < 8; i++) | |
152: | { | |
153: | Paragraph cTitle = new Paragraph("This is chapter " + i, chapterFont); | |
154: | Chapter chapter = new Chapter(cTitle, i); | |
155: | ||
156: | if (i == 4) | |
157: | { | |
158: | blahblahblah.Alignment = Element.ALIGN_JUSTIFIED; | |
159: | blahblah.Alignment = Element.ALIGN_JUSTIFIED; | |
160: | chapter.Add(blahblah); | |
161: | } | |
162: | if (i == 5) | |
163: | { | |
164: | blahblahblah.Alignment = Element.ALIGN_CENTER; | |
165: | blahblah.Alignment = Element.ALIGN_RIGHT; | |
166: | chapter.Add(blahblah); | |
167: | } | |
168: | // add a table in the 6th chapter | |
169: | if (i == 6) | |
170: | { | |
171: | blahblah.Alignment = Element.ALIGN_JUSTIFIED; | |
172: | chapter.Add(table); | |
173: | } | |
174: | // in every chapter 3 sections will be added | |
175: | for (int j = 1; j < 4; j++) | |
176: | { | |
177: | Paragraph sTitle = new Paragraph("This is section " + j + " in chapter " + i, sectionFont); | |
178: | Section section = chapter.AddSection(sTitle, 1); | |
179: | // in all chapters except the 1st one, some extra text is added to section 3 | |
180: | if (j == 3 && i > 1) | |
181: | { | |
182: | section.Add(blahblah); | |
183: | } | |
184: | // in every section 3 subsections are added | |
185: | for (int k = 1; k < 4; k++) | |
186: | { | |
187: | Paragraph subTitle = new Paragraph("This is subsection " + k + " of section " + j, subsectionFont); | |
188: | Section subsection = section.AddSection(subTitle, 3); | |
189: | if (k == 1 && j == 3) | |
190: | { | |
191: | subsection.Add(blahblahblah); | |
192: | subsection.Add(table); | |
193: | } | |
194: | subsection.Add(blahblah); | |
195: | } | |
196: | if (j == 2 && i > 2) | |
197: | { | |
198: | section.Add(blahblahblah); | |
199: | section.Add(table); | |
200: | } | |
201: | } | |
202: | document.Add(chapter); | |
203: | } | |
204: | ||
205: | } | |
206: | catch(DocumentException de) | |
207: | { | |
208: | Console.Error.WriteLine(de.Message); | |
209: | } | |
210: | catch(IOException ioe) | |
211: | { | |
212: | Console.Error.WriteLine(ioe.Message); | |
213: | } | |
214: | ||
215: | // step 5: we close the document | |
216: | document.Close(); | |
217: | } | |
218: | } | |
219: | } |