how to create pdf by itextsharp
1
using System;
2
using System.IO;
3
using System.Drawing;
4
using System.Collections;
5
using iTextSharp.text;
6
using iTextSharp.text.pdf;
7![](/Images/OutliningIndicators/None.gif)
8
namespace BluePoint.ERM.BPViewerCore
9
{
10
public class PDFHelper
11
{
12
private static Int64 _traceLevel;
13
private static string m_FontSrc ;
14
private iTextSharp.text.Document _document;
15
private PdfWriter _writer;
16
// closed
17
//private string _PDFFullFileName;
18![](/Images/OutliningIndicators/InBlock.gif)
19
public void SavePDFDocument()
20
{
21
if (_document != null)
22
{
23
_document.Close();
24
}
25
}
26
public PDFHelper(string pdfFullFileName)
27
{
28
_document = new iTextSharp.text.Document();
29
try
30
{
31
if(File.Exists(pdfFullFileName))
32
{
33
File.Delete(pdfFullFileName);
34
}
35
_writer = PdfWriter.GetInstance(_document, new FileStream(pdfFullFileName,FileMode.Create));
36
}
37
catch(Exception e)
38
{
39
throw new Exception("can't create iTextSharp document object" + e.ToString ());
40
}
41![](/Images/OutliningIndicators/InBlock.gif)
42
}
43
public static string FontSrc
44
{
45
get
46
{
47
if(PDFHelper.m_FontSrc == null)
48
{
49
PDFHelper.m_FontSrc = "c:\\windows\\fonts\\COUR.TTF";
50
}
51
return PDFHelper.m_FontSrc;
52
}
53
set
54
{
55
PDFHelper.m_FontSrc = value;
56
}
57
}
58![](/Images/OutliningIndicators/InBlock.gif)
59
public PDFHelper()
60
{
61
//
62
// TODO: Add constructor logic here
63
//
64
}
65![](/Images/OutliningIndicators/InBlock.gif)
66
public static void SetTraceLevel(Int64 val)
67
{
68
_traceLevel = val;
69
}
70![](/Images/OutliningIndicators/InBlock.gif)
71
public static void Log(string s)
72
{
73
if((_traceLevel & 8) > 0)
74
{
75
System.Diagnostics.Trace.WriteLine("BPVR: " + s);
76
}
77
}
78![](/Images/OutliningIndicators/InBlock.gif)
79
public void CreateSinglePagePDF(PageInfo pageInfo)
80
{
81
StopWatch sw = new StopWatch();
82
try
83
{
84
sw.Reset();
85
_document.SetPageSize (new iTextSharp.text.Rectangle(pageInfo.Setting.PageSizeWidth,
86
pageInfo.Setting.PageSizeHeight));
87
_document.SetMargins(pageInfo.Setting.PageMarginLeft,pageInfo.Setting.PageMarginRight,
88
pageInfo.Setting.PageMarginTop,pageInfo.Setting.PageMarginBottom);
89
90
Log("BPVR: time elapsed to setup document parameters: " + sw.ToMilliSeconds());
91![](/Images/OutliningIndicators/InBlock.gif)
92
if(pageInfo.ImgFileName != "")
93
{
94
sw.Reset();
95
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(pageInfo.ImgFileName);
96
Log("BPVR: time elapsed to load image into iTextSharp: " + sw.ToMilliSeconds());
97![](/Images/OutliningIndicators/InBlock.gif)
98
sw.Reset();
99
img.ScaleAbsolute(pageInfo.Setting.ImgWidht,pageInfo.Setting.ImgHeight);
100![](/Images/OutliningIndicators/InBlock.gif)
101
Watermark watermark = new Watermark(img,pageInfo.Setting.WatermarkOffsetX ,
102
pageInfo.Setting.WatermarkOffsetY);
103![](/Images/OutliningIndicators/InBlock.gif)
104
105
_document.Add(watermark);
106
Log("BPVR: time elapsed to add image to document: " + sw.ToMilliSeconds());
107
}
108
else
109
{
110
_document.RemoveWatermark();
111
}
112![](/Images/OutliningIndicators/InBlock.gif)
113
sw.Reset();
114
_document.NewPage();
115
Log("BPVR: time elapsed to create new page: " + sw.ToMilliSeconds());
116![](/Images/OutliningIndicators/InBlock.gif)
117
sw.Reset();
118
if(!_document.IsOpen())
119
{
120
_document.Open();
121
}
122
Log("BPVR: time elapsed to open document: " + sw.ToMilliSeconds());
123![](/Images/OutliningIndicators/InBlock.gif)
124
sw.Reset();
125
System.Drawing.Font testFont = new System.Drawing.Font("courier new", 8);
126
Log("BPVR: time elapsed to create font in dotNet: " + sw.ToMilliSeconds());
127
//
128![](/Images/OutliningIndicators/InBlock.gif)
129
sw.Reset();
130
BaseFont bf = BaseFont.CreateFont(FontSrc,"",true);
131
Log("BPVR: time elapsed to create font from ttf file: " + sw.ToMilliSeconds());
132![](/Images/OutliningIndicators/InBlock.gif)
133
_writer.DirectContent.SetLeading( (float)((testFont.GetHeight()/pageInfo.Setting.DPI*72)));
134
135
sw.Reset();
136
_writer.DirectContent.BeginText();
137
_writer.DirectContent.SetTextMatrix(pageInfo.Setting.PageMarginLeft,
138
pageInfo.Setting.PageSizeHeight - pageInfo.Setting.PageMarginTop);
139
_writer.DirectContent.SetFontAndSize(bf, pageInfo.Setting.FontSize);
140![](/Images/OutliningIndicators/InBlock.gif)
141
using(StringReader sr = new StringReader(pageInfo.TextFileName))
142
{
143
while(sr.Peek() >0)
144
{
145
_writer.DirectContent.SetCharacterSpacing(0.15f*pageInfo.Setting.FontSize/8);
146
_writer.DirectContent.NewlineShowText(sr.ReadLine());
147
}
148
}
149
150
151
// using(StreamReader sr = File.OpenText(pageInfo.TextFileName))
152
// {
153
// while(sr.Peek() > 0)
154
// {
155
// _writer.DirectContent.SetCharacterSpacing(0.15f*pageInfo.Setting.FontSize/8);
156
//
157
// _writer.DirectContent.NewlineShowText(sr.ReadLine());
158
// }
159
// }
160
//_writer.DirectContent.SetCharacterSpacing(0.15f*pageInfo.Setting.FontSize/8);
161
//_writer.DirectContent.NewlineShowText(pageInfo.TextFileName);
162![](/Images/OutliningIndicators/InBlock.gif)
163
_writer.DirectContent.EndText();
164
Log("BPVR: time elapsed to write text: " + sw.ToMilliSeconds());
165![](/Images/OutliningIndicators/InBlock.gif)
166
}
167
catch(Exception e)
168
{
169
throw new Exception("can't create single PDF page." + e.ToString());
170
}
171
}
172
173![](/Images/OutliningIndicators/InBlock.gif)
174
}
175![](/Images/OutliningIndicators/InBlock.gif)
176![](/Images/OutliningIndicators/InBlock.gif)
177
public class PageInfo
178
{
179
public PageInfo()
180
{
181
}
182
public PageInfo(string imgFileName,string textFileName,
183
PageSetting pageSetting )
184
{
185
this.m_ImgFileName = imgFileName;
186
this.m_TextFileName = textFileName;
187
this.Setting = pageSetting;
188
}
189
public static PageInfo GetInstance(string imgFileName,string textFileName,
190
PageSetting pageSetting)
191
{
192
return new PageInfo(imgFileName,textFileName,pageSetting);
193
}
194
private string m_ImgFileName;
195![](/Images/OutliningIndicators/InBlock.gif)
196
public string ImgFileName
197
{
198
get { return m_ImgFileName; }
199
set { m_ImgFileName = value; }
200
}
201
private string m_TextFileName;
202![](/Images/OutliningIndicators/InBlock.gif)
203
public string TextFileName
204
{
205
get { return m_TextFileName; }
206
set { m_TextFileName = value; }
207
}
208![](/Images/OutliningIndicators/InBlock.gif)
209
private PageSetting m_Setting;
210![](/Images/OutliningIndicators/InBlock.gif)
211
public PageSetting Setting
212
{
213
get { return m_Setting; }
214
set { m_Setting = value; }
215
}
216
217
218![](/Images/OutliningIndicators/InBlock.gif)
219
}
220![](/Images/OutliningIndicators/InBlock.gif)
221
public class PageSetting
222
{
223
public static PageSetting Create(int pWith, int pHeight,
224
int pMarginL, int pMarginR, int pMarginT, int pMarginB,
225
int imgW, int imgH,
226
int offsetX, int offsetY,
227
int fontSize,
228
int dpi)
229
{
230
return new PageSetting(pWith, pHeight, pMarginL, pMarginR, pMarginT, pMarginB,
231
imgW, imgH,
232
offsetX, offsetY,
233
fontSize, dpi);
234
}
235
public static PageSetting Create(int pWith, int pHeight,
236
int pMarginL, int pMarginR, int pMarginT, int pMarginB,
237
int imgW, int imgH,
238
int offsetX, int offsetY,
239
int fontSize)
240
{
241
return new PageSetting(pWith, pHeight, pMarginL, pMarginR, pMarginT, pMarginB,
242
imgW, imgH,
243
offsetX, offsetY,
244
fontSize);
245
}
246![](/Images/OutliningIndicators/InBlock.gif)
247
private PageSetting(double pWith,double pHeight,
248
int pMarginL,int pMarginR,int pMarginT,int pMarginB,
249
int imgW,int imgH,
250
int offsetX,int offsetY,
251
int fontSize,
252
int dpi)
253
{
254
m_PageSizeWidth = pWith;
255
m_PageSizeHeight = pHeight;
256
m_PageMarginLeft = pMarginL;
257
m_PageMarginRight = pMarginR;
258
m_PageMarginTop = pMarginT;
259
m_PageMarginBottom = pMarginB;
260
m_ImgWidht = imgW;
261
m_ImgHeight = imgH;
262
m_WatermarkOffsetX = offsetX;
263
m_WatermarkOffsetY = offsetY;
264
m_fontSize = fontSize;
265
m_DPI = (float)dpi;
266
267
}
268
private PageSetting(double pWith, double pHeight,
269
int pMarginL, int pMarginR, int pMarginT, int pMarginB,
270
int imgW, int imgH,
271
int offsetX, int offsetY,
272
int fontSize)
273
{
274
m_PageSizeWidth = pWith;
275
m_PageSizeHeight = pHeight;
276
m_PageMarginLeft = pMarginL;
277
m_PageMarginRight = pMarginR;
278
m_PageMarginTop = pMarginT;
279
m_PageMarginBottom = pMarginB;
280
m_ImgWidht = imgW;
281
m_ImgHeight = imgH;
282
m_WatermarkOffsetX = offsetX;
283
m_WatermarkOffsetY = offsetY;
284
m_fontSize = fontSize;
285![](/Images/OutliningIndicators/InBlock.gif)
286
}
287
288
private float m_DPI = 96.0f;
289
private double m_PageSizeWidth;
290![](/Images/OutliningIndicators/InBlock.gif)
291
public float PageSizeWidth
292
{
293
get { return (float)m_PageSizeWidth * 72; }
294
}
295
private double m_PageSizeHeight;
296![](/Images/OutliningIndicators/InBlock.gif)
297
public float PageSizeHeight
298
{
299
get { return (float)m_PageSizeHeight * 72; }
300
301
}
302
private int m_PageMarginLeft;
303![](/Images/OutliningIndicators/InBlock.gif)
304
public float PageMarginLeft
305
{
306
get { return m_PageMarginLeft/DPI*72; }
307
308
}
309
private int m_PageMarginRight;
310![](/Images/OutliningIndicators/InBlock.gif)
311
public float PageMarginRight
312
{
313
get { return m_PageMarginRight/DPI*72; }
314
315
}
316
private int m_PageMarginTop;
317![](/Images/OutliningIndicators/InBlock.gif)
318
public float PageMarginTop
319
{
320
get { return m_PageMarginTop / DPI * 72; }
321
322
}
323
private int m_PageMarginBottom;
324![](/Images/OutliningIndicators/InBlock.gif)
325
public float PageMarginBottom
326
{
327
get { return m_PageMarginBottom / DPI * 72; }
328
329
}
330
private int m_ImgWidht;
331![](/Images/OutliningIndicators/InBlock.gif)
332
public float ImgWidht
333
{
334
get { return m_ImgWidht / DPI * 72; }
335
336
}
337
private int m_ImgHeight;
338![](/Images/OutliningIndicators/InBlock.gif)
339
public float ImgHeight
340
{
341
get { return m_ImgHeight / DPI * 72; }
342
343
}
344
private int m_WatermarkOffsetX;
345![](/Images/OutliningIndicators/InBlock.gif)
346
public float WatermarkOffsetX
347
{
348
get { return (float)(m_WatermarkOffsetX / DPI * 72); }
349
350
}
351
private int m_WatermarkOffsetY;
352![](/Images/OutliningIndicators/InBlock.gif)
353
public float WatermarkOffsetY
354
{
355
get
356
{
357
return (float)((m_PageSizeHeight * (int)DPI - m_ImgHeight - m_WatermarkOffsetY) / (int)DPI * 72);
358
}
359
}
360
private int m_fontSize;
361![](/Images/OutliningIndicators/InBlock.gif)
362
public int FontSize
363
{
364
get { return m_fontSize; }
365
set { m_fontSize = value; }
366
}
367![](/Images/OutliningIndicators/InBlock.gif)
368![](/Images/OutliningIndicators/InBlock.gif)
369
public float DPI
370
{
371
get { return m_DPI; }
372
set { m_DPI = value; }
373
}
374![](/Images/OutliningIndicators/InBlock.gif)
375![](/Images/OutliningIndicators/InBlock.gif)
376
}
377![](/Images/OutliningIndicators/InBlock.gif)
378
}
379![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/InBlock.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/InBlock.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/InBlock.gif)
166
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
168
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
171
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/InBlock.gif)
174
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](/Images/OutliningIndicators/InBlock.gif)
176
![](/Images/OutliningIndicators/InBlock.gif)
177
![](/Images/OutliningIndicators/InBlock.gif)
178
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
179
![](/Images/OutliningIndicators/InBlock.gif)
180
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
181
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
182
![](/Images/OutliningIndicators/InBlock.gif)
183
![](/Images/OutliningIndicators/InBlock.gif)
184
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/InBlock.gif)
187
![](/Images/OutliningIndicators/InBlock.gif)
188
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
189
![](/Images/OutliningIndicators/InBlock.gif)
190
![](/Images/OutliningIndicators/InBlock.gif)
191
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
192
![](/Images/OutliningIndicators/InBlock.gif)
193
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
194
![](/Images/OutliningIndicators/InBlock.gif)
195
![](/Images/OutliningIndicators/InBlock.gif)
196
![](/Images/OutliningIndicators/InBlock.gif)
197
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
198
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
199
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
200
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](/Images/OutliningIndicators/InBlock.gif)
202
![](/Images/OutliningIndicators/InBlock.gif)
203
![](/Images/OutliningIndicators/InBlock.gif)
204
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
205
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
206
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
207
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
208
![](/Images/OutliningIndicators/InBlock.gif)
209
![](/Images/OutliningIndicators/InBlock.gif)
210
![](/Images/OutliningIndicators/InBlock.gif)
211
![](/Images/OutliningIndicators/InBlock.gif)
212
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
213
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
214
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
215
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
216
![](/Images/OutliningIndicators/InBlock.gif)
217
![](/Images/OutliningIndicators/InBlock.gif)
218
![](/Images/OutliningIndicators/InBlock.gif)
219
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
220
![](/Images/OutliningIndicators/InBlock.gif)
221
![](/Images/OutliningIndicators/InBlock.gif)
222
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
223
![](/Images/OutliningIndicators/InBlock.gif)
224
![](/Images/OutliningIndicators/InBlock.gif)
225
![](/Images/OutliningIndicators/InBlock.gif)
226
![](/Images/OutliningIndicators/InBlock.gif)
227
![](/Images/OutliningIndicators/InBlock.gif)
228
![](/Images/OutliningIndicators/InBlock.gif)
229
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
230
![](/Images/OutliningIndicators/InBlock.gif)
231
![](/Images/OutliningIndicators/InBlock.gif)
232
![](/Images/OutliningIndicators/InBlock.gif)
233
![](/Images/OutliningIndicators/InBlock.gif)
234
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
235
![](/Images/OutliningIndicators/InBlock.gif)
236
![](/Images/OutliningIndicators/InBlock.gif)
237
![](/Images/OutliningIndicators/InBlock.gif)
238
![](/Images/OutliningIndicators/InBlock.gif)
239
![](/Images/OutliningIndicators/InBlock.gif)
240
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
241
![](/Images/OutliningIndicators/InBlock.gif)
242
![](/Images/OutliningIndicators/InBlock.gif)
243
![](/Images/OutliningIndicators/InBlock.gif)
244
![](/Images/OutliningIndicators/InBlock.gif)
245
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
246
![](/Images/OutliningIndicators/InBlock.gif)
247
![](/Images/OutliningIndicators/InBlock.gif)
248
![](/Images/OutliningIndicators/InBlock.gif)
249
![](/Images/OutliningIndicators/InBlock.gif)
250
![](/Images/OutliningIndicators/InBlock.gif)
251
![](/Images/OutliningIndicators/InBlock.gif)
252
![](/Images/OutliningIndicators/InBlock.gif)
253
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
254
![](/Images/OutliningIndicators/InBlock.gif)
255
![](/Images/OutliningIndicators/InBlock.gif)
256
![](/Images/OutliningIndicators/InBlock.gif)
257
![](/Images/OutliningIndicators/InBlock.gif)
258
![](/Images/OutliningIndicators/InBlock.gif)
259
![](/Images/OutliningIndicators/InBlock.gif)
260
![](/Images/OutliningIndicators/InBlock.gif)
261
![](/Images/OutliningIndicators/InBlock.gif)
262
![](/Images/OutliningIndicators/InBlock.gif)
263
![](/Images/OutliningIndicators/InBlock.gif)
264
![](/Images/OutliningIndicators/InBlock.gif)
265
![](/Images/OutliningIndicators/InBlock.gif)
266
![](/Images/OutliningIndicators/InBlock.gif)
267
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
268
![](/Images/OutliningIndicators/InBlock.gif)
269
![](/Images/OutliningIndicators/InBlock.gif)
270
![](/Images/OutliningIndicators/InBlock.gif)
271
![](/Images/OutliningIndicators/InBlock.gif)
272
![](/Images/OutliningIndicators/InBlock.gif)
273
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
274
![](/Images/OutliningIndicators/InBlock.gif)
275
![](/Images/OutliningIndicators/InBlock.gif)
276
![](/Images/OutliningIndicators/InBlock.gif)
277
![](/Images/OutliningIndicators/InBlock.gif)
278
![](/Images/OutliningIndicators/InBlock.gif)
279
![](/Images/OutliningIndicators/InBlock.gif)
280
![](/Images/OutliningIndicators/InBlock.gif)
281
![](/Images/OutliningIndicators/InBlock.gif)
282
![](/Images/OutliningIndicators/InBlock.gif)
283
![](/Images/OutliningIndicators/InBlock.gif)
284
![](/Images/OutliningIndicators/InBlock.gif)
285
![](/Images/OutliningIndicators/InBlock.gif)
286
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
287
![](/Images/OutliningIndicators/InBlock.gif)
288
![](/Images/OutliningIndicators/InBlock.gif)
289
![](/Images/OutliningIndicators/InBlock.gif)
290
![](/Images/OutliningIndicators/InBlock.gif)
291
![](/Images/OutliningIndicators/InBlock.gif)
292
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
293
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
294
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
295
![](/Images/OutliningIndicators/InBlock.gif)
296
![](/Images/OutliningIndicators/InBlock.gif)
297
![](/Images/OutliningIndicators/InBlock.gif)
298
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
299
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
300
![](/Images/OutliningIndicators/InBlock.gif)
301
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
302
![](/Images/OutliningIndicators/InBlock.gif)
303
![](/Images/OutliningIndicators/InBlock.gif)
304
![](/Images/OutliningIndicators/InBlock.gif)
305
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
306
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
307
![](/Images/OutliningIndicators/InBlock.gif)
308
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
309
![](/Images/OutliningIndicators/InBlock.gif)
310
![](/Images/OutliningIndicators/InBlock.gif)
311
![](/Images/OutliningIndicators/InBlock.gif)
312
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
313
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
314
![](/Images/OutliningIndicators/InBlock.gif)
315
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
316
![](/Images/OutliningIndicators/InBlock.gif)
317
![](/Images/OutliningIndicators/InBlock.gif)
318
![](/Images/OutliningIndicators/InBlock.gif)
319
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
320
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
321
![](/Images/OutliningIndicators/InBlock.gif)
322
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
323
![](/Images/OutliningIndicators/InBlock.gif)
324
![](/Images/OutliningIndicators/InBlock.gif)
325
![](/Images/OutliningIndicators/InBlock.gif)
326
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
327
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
328
![](/Images/OutliningIndicators/InBlock.gif)
329
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
330
![](/Images/OutliningIndicators/InBlock.gif)
331
![](/Images/OutliningIndicators/InBlock.gif)
332
![](/Images/OutliningIndicators/InBlock.gif)
333
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
334
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
335
![](/Images/OutliningIndicators/InBlock.gif)
336
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
337
![](/Images/OutliningIndicators/InBlock.gif)
338
![](/Images/OutliningIndicators/InBlock.gif)
339
![](/Images/OutliningIndicators/InBlock.gif)
340
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
341
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
342
![](/Images/OutliningIndicators/InBlock.gif)
343
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
344
![](/Images/OutliningIndicators/InBlock.gif)
345
![](/Images/OutliningIndicators/InBlock.gif)
346
![](/Images/OutliningIndicators/InBlock.gif)
347
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
348
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
349
![](/Images/OutliningIndicators/InBlock.gif)
350
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
351
![](/Images/OutliningIndicators/InBlock.gif)
352
![](/Images/OutliningIndicators/InBlock.gif)
353
![](/Images/OutliningIndicators/InBlock.gif)
354
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
355
![](/Images/OutliningIndicators/InBlock.gif)
356
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
357
![](/Images/OutliningIndicators/InBlock.gif)
358
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
359
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
360
![](/Images/OutliningIndicators/InBlock.gif)
361
![](/Images/OutliningIndicators/InBlock.gif)
362
![](/Images/OutliningIndicators/InBlock.gif)
363
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
364
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
365
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
366
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
367
![](/Images/OutliningIndicators/InBlock.gif)
368
![](/Images/OutliningIndicators/InBlock.gif)
369
![](/Images/OutliningIndicators/InBlock.gif)
370
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
371
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
372
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
373
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
374
![](/Images/OutliningIndicators/InBlock.gif)
375
![](/Images/OutliningIndicators/InBlock.gif)
376
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
377
![](/Images/OutliningIndicators/InBlock.gif)
378
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
379
![](/Images/OutliningIndicators/None.gif)