OSDN Git Service

binding with libharu.
[putex/putex.git] / src / texsourc / lib / libhpdf / if / vb.net / demo / TextDemo.vb
1 Imports HPdf
2
3 Module TextDemo
4
5     Private Sub ShowStripePattern(ByRef page As HPdfPage, ByVal x As Single, ByVal y As Single)
6         Dim iy As Integer = 0
7
8         Do While (iy < 50)
9             page.SetRGBStroke(0.0F, 0.0F, 0.5F)
10             page.SetLineWidth(1)
11             page.MoveTo(x, y + iy)
12             page.LineTo(x + page.TextWidth("ABCabc123"), y + iy)
13             page.Stroke()
14             iy += 3
15
16         Loop
17
18         page.SetLineWidth(2.5F)
19     End Sub
20
21     Private Sub ShowDescription(ByRef page As HPdfPage, ByVal x As Single, ByVal y As Single, ByVal text As String)
22         Dim fsize As Single = page.GetCurrentFontSize()
23         Dim font As HPdfFont = page.GetCurrentFont()
24         Dim c As HPdfRGBColor = page.GetRGBFill()
25
26         page.BeginText()
27         page.SetRGBFill(0, 0, 0)
28         page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL)
29         page.SetFontAndSize(font, 10)
30         page.TextOut(x, y - 12, text)
31         page.EndText()
32
33         page.SetFontAndSize(font, fsize)
34         page.SetRGBFill(c.r, c.g, c.b)
35     End Sub
36
37     Sub Main()
38         Const page_title As String = "Text Demo"
39         Const samp_text As String = "abcdefgABCDEFG123!#$%&+-@?"
40         Const samp_text2 As String = "The quick brown fox jumps over the lazy dog."
41         Console.WriteLine("libhpdf-" & HPdfDoc.HPdfGetVersion())
42
43         Try
44             Dim pdf As HPdfDoc = New HPdfDoc()
45
46             pdf.SetCompressionMode(HPdfDoc.HPDF_COMP_ALL)
47
48             ' create default-font 
49             Dim font As HPdfFont = pdf.GetFont("Helvetica", Nothing)
50
51             ' add a new page object. 
52             Dim page As HPdfPage = pdf.AddPage()
53
54             ' print the title of the page (with positioning center).
55             page.SetFontAndSize(font, 24)
56             Dim tw As Single = page.TextWidth(page_title)
57             page.BeginText()
58             page.TextOut((page.GetWidth() - tw) / 2, page.GetHeight() - 50, page_title)
59             page.EndText()
60
61             page.BeginText()
62             page.MoveTextPos(60, page.GetHeight() - 60)
63
64             '
65             ' font size
66             '
67             Dim fsize As Single = 8
68             While (fsize < 60)
69
70                 ' set style and size of font.
71                 page.SetFontAndSize(font, fsize)
72
73                 ' set the position of the text.
74                 page.MoveTextPos(0, -5 - fsize)
75
76                 ' measure the number of characters which included in the page.
77                 Dim tlen As UInt32 = page.MeasureText(samp_text, page.GetWidth() - 120, False)
78
79                 page.ShowText(samp_text.Substring(0, tlen))
80
81                 ' print the description.
82                 page.MoveTextPos(0, -10)
83                 page.SetFontAndSize(font, 8)
84                 page.ShowText("Fontsize=" & fsize)
85
86                 fsize *= 1.5
87             End While
88
89             '
90             ' font color
91             '
92             page.SetFontAndSize(font, 8)
93             page.MoveTextPos(0, -30)
94             page.ShowText("Font color")
95
96             page.SetFontAndSize(font, 18)
97             page.MoveTextPos(0, -20)
98             Dim len As Integer = samp_text.Length
99
100             For i As Integer = 0 To len - 1
101                 Dim buf As String
102
103                 Dim r As Single = i / len
104                 Dim g As Single = 1 - (i / len)
105                 buf = samp_text.Substring(i, 1)
106
107                 page.SetRGBFill(r, g, 0)
108                 page.ShowText(buf)
109             Next
110
111             page.MoveTextPos(0, -25)
112
113             For i As Integer = 0 To len - 1
114                 Dim buf As String
115
116                 Dim r As Single = i / len
117                 Dim b As Single = 1 - (i / len)
118                 buf = samp_text.Substring(i, 1)
119
120                 page.SetRGBFill(r, 0, b)
121                 page.ShowText(buf)
122             Next
123
124             page.MoveTextPos(0, -25)
125
126             For i As Integer = 0 To len - 1
127                 Dim buf As String
128
129                 Dim b As Single = i / len
130                 Dim g As Single = 1 - (i / len)
131                 buf = samp_text.Substring(i, 1)
132
133                 page.SetRGBFill(0, g, b)
134                 page.ShowText(buf)
135             Next
136
137             page.EndText()
138
139             Dim ypos As Integer = 450
140
141             '
142             ' Font rendering mode
143             '
144             page.SetFontAndSize(font, 32)
145             page.SetRGBFill(0.5F, 0.5F, 0)
146             page.SetLineWidth(1.5F)
147
148             ' PDF_FILL 
149             ShowDescription(page, 60, ypos, "RenderingMode=PDF_FILL")
150             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL)
151             page.BeginText()
152             page.TextOut(60, ypos, "ABCabc123")
153             page.EndText()
154
155             ' PDF_STROKE
156             ShowDescription(page, 60, ypos - 50, "RenderingMode=PDF_STROKE")
157             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_STROKE)
158             page.BeginText()
159             page.TextOut(60, ypos - 50, "ABCabc123")
160             page.EndText()
161
162             ' PDF_FILL_THEN_STROKE
163             ShowDescription(page, 60, ypos - 100, "RenderingMode=PDF_FILL_THEN_STROKE")
164             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL_THEN_STROKE)
165             page.BeginText()
166             page.TextOut(60, ypos - 100, "ABCabc123")
167             page.EndText()
168
169             ' PDF_FILL_CLIPPING 
170             ShowDescription(page, 60, ypos - 150, "RenderingMode=PDF_FILL_CLIPPING")
171             page.GSave()
172             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL_CLIPPING)
173             page.BeginText()
174             page.TextOut(60, ypos - 150, "ABCabc123")
175             page.EndText()
176             ShowStripePattern(page, 60, ypos - 150)
177             page.GRestore()
178
179             ' PDF_STROKE_CLIPPING
180             ShowDescription(page, 60, ypos - 200, "RenderingMode=PDF_STROKE_CLIPPING")
181             page.GSave()
182             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_STROKE_CLIPPING)
183             page.BeginText()
184             page.TextOut(60, ypos - 200, "ABCabc123")
185             page.EndText()
186             ShowStripePattern(page, 60, ypos - 200)
187             page.GRestore()
188
189             ' PDF_FILL_STROKE_CLIPPING
190             ShowDescription(page, 60, ypos - 250, "RenderingMode=PDF_FILL_STROKE_CLIPPING")
191             page.GSave()
192             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL_STROKE_CLIPPING)
193             page.BeginText()
194             page.TextOut(60, ypos - 250, "ABCabc123")
195             page.EndText()
196             ShowStripePattern(page, 60, ypos - 250)
197             page.GRestore()
198
199             ' Reset text attributes
200             page.SetTextRenderingMode(HPdfTextRenderingMode.HPDF_FILL)
201             page.SetRGBFill(0, 0, 0)
202             page.SetFontAndSize(font, 30)
203
204
205             '
206             ' Rotating text
207             '
208             Dim angle1 As Single = 30                       ' A rotation of 30 degrees.
209             Dim rad1 As Single = angle1 / 180 * 3.141592F   ' Calculate the radian value.
210
211             ShowDescription(page, 320, ypos - 60, "Rotating text")
212             page.BeginText()
213             page.SetTextMatrix(Math.Cos(rad1), Math.Sin(rad1), -Math.Sin(rad1), Math.Cos(rad1), 330, ypos - 60)
214             page.ShowText("ABCabc123")
215             page.EndText()
216
217
218             '
219             ' Skewing text.
220             '
221             ShowDescription(page, 320, ypos - 120, "Skewing text")
222             page.BeginText()
223
224             angle1 = 10
225             Dim angle2 As Single = 20
226             rad1 = angle1 / 180 * 3.141592F
227             Dim rad2 As Single = angle2 / 180 * 3.141592F
228
229             page.SetTextMatrix(1, Math.Tan(rad1), Math.Tan(rad2), 1, 320, ypos - 120)
230             page.ShowText("ABCabc123")
231             page.EndText()
232
233
234             '
235             ' scaling text (X direction)
236             '
237             ShowDescription(page, 320, ypos - 175, "Scaling text (X direction)")
238             page.BeginText()
239             page.SetTextMatrix(1.5F, 0, 0, 1, 320, ypos - 175)
240             page.ShowText("ABCabc12")
241             page.EndText()
242
243
244             '
245             ' scaling text (Y direction)
246             '
247             ShowDescription(page, 320, ypos - 250, "Scaling text (Y direction)")
248             page.BeginText()
249             page.SetTextMatrix(1, 0, 0, 2, 320, ypos - 250)
250             page.ShowText("ABCabc123")
251             page.EndText()
252
253
254             '
255             ' char spacing, word spacing
256             '
257
258             ShowDescription(page, 60, 140, "char-spacing 0")
259             ShowDescription(page, 60, 100, "char-spacing 1.5")
260             ShowDescription(page, 60, 60, "char-spacing 1.5, word-spacing 2.5")
261
262             page.SetFontAndSize(font, 20)
263             page.SetRGBFill(0.1F, 0.3F, 0.1F)
264
265             ' char-spacing 0
266             page.BeginText()
267             page.TextOut(60, 140, samp_text2)
268             page.EndText()
269
270             ' char-spacing 1.5
271             page.SetCharSpace(1.5F)
272
273             page.BeginText()
274             page.TextOut(60, 100, samp_text2)
275             page.EndText()
276
277             ' char-spacing 1.5, word-spacing 3.5
278             page.SetWordSpace(2.5F)
279
280             page.BeginText()
281             page.TextOut(60, 60, samp_text2)
282             page.EndText()
283
284             ' save the document to a file
285             pdf.SaveToFile("TextDemo.pdf")
286
287
288         Catch ex As Exception
289             Console.Error.WriteLine(ex.Message)
290         End Try
291     End Sub
292
293 End Module