rocrad 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -88,7 +88,7 @@ class Rocrad
88
88
  begin
89
89
  File.unlink(file) if File.exist?(file)
90
90
  rescue
91
- system "rm -f #{file} #{cco}"
91
+ `rm -f #{file} #{cco}`
92
92
  end
93
93
  end
94
94
  end
@@ -97,7 +97,7 @@ class Rocrad
97
97
  def image_to_pnm
98
98
  src = @tmp ? @tmp : @src
99
99
  pnm = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@src.sub(@src.extname, ".pnm").basename}")
100
- case @src.extname
100
+ case @src.extname.downcase
101
101
  when ".jpg" then
102
102
  `djpeg -colors 2 -grayscale -dct float -pnm #{src} > #{pnm} #{cco}`
103
103
  when ".tif" then
@@ -106,6 +106,8 @@ class Rocrad
106
106
  `pngtopnm #{src} > #{pnm} #{cco}`
107
107
  when ".bmp" then
108
108
  `bmptopnm #{src} > #{pnm} #{cco}`
109
+ when ".pdf", ".ps" then
110
+ `gs -sDEVICE=pnmraw -r300 -dNOPAUSE -dBATCH -sOutputFile=- -q #{src} > #{pnm} #{cco}`
109
111
  else
110
112
  raise UnsupportedFileTypeError
111
113
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rocrad}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ludwig Bratke"]
12
- s.date = %q{2011-05-29}
12
+ s.date = %q{2011-06-27}
13
13
  s.description = %q{Ruby library for working with Ocrad - The GNU OCR}
14
14
  s.email = %q{EeCnee1@netscape.net}
15
15
  s.extra_rdoc_files = [
@@ -35,7 +35,9 @@ Gem::Specification.new do |s|
35
35
  "test/images/test.bmp",
36
36
  "test/images/test.foo",
37
37
  "test/images/test.jpg",
38
+ "test/images/test.pdf",
38
39
  "test/images/test.png",
40
+ "test/images/test.ps",
39
41
  "test/images/test.tif",
40
42
  "test/images/test1.tif",
41
43
  "test/test_binary.rb",
Binary file
@@ -0,0 +1,1163 @@
1
+ %!PS-Adobe-3.0
2
+ %%Creator: Writer
3
+ %%LanguageLevel: 2
4
+ %%DocumentSuppliedResources: (atend)
5
+ %%DocumentMedia: plain 612 792 0 () ()
6
+ %%BoundingBox: 0 0 612 792
7
+ %%Pages: 1
8
+ %%EndComments
9
+ %%BeginDefaults
10
+ %%PageMedia: plain
11
+ %%EndDefaults
12
+ %%BeginProlog
13
+ %%BeginResource: procset xpdf 3.00 0
14
+ %%Copyright: Copyright 1996-2004 Glyph & Cog, LLC
15
+ /xpdf 75 dict def xpdf begin
16
+ % PDF special state
17
+ /pdfDictSize 15 def
18
+ /pdfSetup {
19
+ 3 1 roll 2 array astore
20
+ /setpagedevice where {
21
+ pop 3 dict begin
22
+ /PageSize exch def
23
+ /ImagingBBox null def
24
+ { /Duplex true def } if
25
+ currentdict end setpagedevice
26
+ } {
27
+ pop pop
28
+ } ifelse
29
+ } def
30
+ /pdfStartPage {
31
+ pdfDictSize dict begin
32
+ /pdfFillCS [] def
33
+ /pdfFillXform {} def
34
+ /pdfStrokeCS [] def
35
+ /pdfStrokeXform {} def
36
+ /pdfFill [0] def
37
+ /pdfStroke [0] def
38
+ /pdfFillOP false def
39
+ /pdfStrokeOP false def
40
+ /pdfLastFill false def
41
+ /pdfLastStroke false def
42
+ /pdfTextMat [1 0 0 1 0 0] def
43
+ /pdfFontSize 0 def
44
+ /pdfCharSpacing 0 def
45
+ /pdfTextRender 0 def
46
+ /pdfTextRise 0 def
47
+ /pdfWordSpacing 0 def
48
+ /pdfHorizScaling 1 def
49
+ /pdfTextClipPath [] def
50
+ } def
51
+ /pdfEndPage { end } def
52
+ % PDF color state
53
+ /cs { /pdfFillXform exch def dup /pdfFillCS exch def
54
+ setcolorspace } def
55
+ /CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
56
+ setcolorspace } def
57
+ /sc { pdfLastFill not { pdfFillCS setcolorspace } if
58
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
59
+ /pdfLastFill true def /pdfLastStroke false def } def
60
+ /SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
61
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
62
+ /pdfLastStroke true def /pdfLastFill false def } def
63
+ /op { /pdfFillOP exch def
64
+ pdfLastFill { pdfFillOP setoverprint } if } def
65
+ /OP { /pdfStrokeOP exch def
66
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
67
+ /fCol {
68
+ pdfLastFill not {
69
+ pdfFillCS setcolorspace
70
+ pdfFill aload pop pdfFillXform setcolor
71
+ pdfFillOP setoverprint
72
+ /pdfLastFill true def /pdfLastStroke false def
73
+ } if
74
+ } def
75
+ /sCol {
76
+ pdfLastStroke not {
77
+ pdfStrokeCS setcolorspace
78
+ pdfStroke aload pop pdfStrokeXform setcolor
79
+ pdfStrokeOP setoverprint
80
+ /pdfLastStroke true def /pdfLastFill false def
81
+ } if
82
+ } def
83
+ % build a font
84
+ /pdfMakeFont {
85
+ 4 3 roll findfont
86
+ 4 2 roll matrix scale makefont
87
+ dup length dict begin
88
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
89
+ /Encoding exch def
90
+ currentdict
91
+ end
92
+ definefont pop
93
+ } def
94
+ /pdfMakeFont16 {
95
+ exch findfont
96
+ dup length dict begin
97
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
98
+ /WMode exch def
99
+ currentdict
100
+ end
101
+ definefont pop
102
+ } def
103
+ % graphics state operators
104
+ /q { gsave pdfDictSize dict begin } def
105
+ /Q {
106
+ end grestore
107
+ /pdfLastFill where {
108
+ pop
109
+ pdfLastFill {
110
+ pdfFillOP setoverprint
111
+ } {
112
+ pdfStrokeOP setoverprint
113
+ } ifelse
114
+ } if
115
+ } def
116
+ /cm { concat } def
117
+ /d { setdash } def
118
+ /i { setflat } def
119
+ /j { setlinejoin } def
120
+ /J { setlinecap } def
121
+ /M { setmiterlimit } def
122
+ /w { setlinewidth } def
123
+ % path segment operators
124
+ /m { moveto } def
125
+ /l { lineto } def
126
+ /c { curveto } def
127
+ /re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
128
+ neg 0 rlineto closepath } def
129
+ /h { closepath } def
130
+ % path painting operators
131
+ /S { sCol stroke } def
132
+ /Sf { fCol stroke } def
133
+ /f { fCol fill } def
134
+ /f* { fCol eofill } def
135
+ % clipping operators
136
+ /W { clip newpath } def
137
+ /W* { eoclip newpath } def
138
+ /Ws { strokepath clip newpath } def
139
+ % text state operators
140
+ /Tc { /pdfCharSpacing exch def } def
141
+ /Tf { dup /pdfFontSize exch def
142
+ dup pdfHorizScaling mul exch matrix scale
143
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
144
+ exch findfont exch makefont setfont } def
145
+ /Tr { /pdfTextRender exch def } def
146
+ /Ts { /pdfTextRise exch def } def
147
+ /Tw { /pdfWordSpacing exch def } def
148
+ /Tz { /pdfHorizScaling exch def } def
149
+ % text positioning operators
150
+ /Td { pdfTextMat transform moveto } def
151
+ /Tm { /pdfTextMat exch def } def
152
+ % text string operators
153
+ /cshow where {
154
+ pop
155
+ /cshow2 {
156
+ dup {
157
+ pop pop
158
+ 1 string dup 0 3 index put 3 index exec
159
+ } exch cshow
160
+ pop pop
161
+ } def
162
+ }{
163
+ /cshow2 {
164
+ currentfont /FontType get 0 eq {
165
+ 0 2 2 index length 1 sub {
166
+ 2 copy get exch 1 add 2 index exch get
167
+ 2 copy exch 256 mul add
168
+ 2 string dup 0 6 5 roll put dup 1 5 4 roll put
169
+ 3 index exec
170
+ } for
171
+ } {
172
+ dup {
173
+ 1 string dup 0 3 index put 3 index exec
174
+ } forall
175
+ } ifelse
176
+ pop pop
177
+ } def
178
+ } ifelse
179
+ /awcp {
180
+ exch {
181
+ false charpath
182
+ 5 index 5 index rmoveto
183
+ 6 index eq { 7 index 7 index rmoveto } if
184
+ } exch cshow2
185
+ 6 {pop} repeat
186
+ } def
187
+ /Tj {
188
+ fCol
189
+ 1 index stringwidth pdfTextMat idtransform pop
190
+ sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse
191
+ pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
192
+ 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
193
+ pdfTextMat dtransform
194
+ 6 5 roll Tj1
195
+ } def
196
+ /Tj16 {
197
+ fCol
198
+ 2 index stringwidth pdfTextMat idtransform pop
199
+ sub exch div
200
+ pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
201
+ 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
202
+ pdfTextMat dtransform
203
+ 6 5 roll Tj1
204
+ } def
205
+ /Tj16V {
206
+ fCol
207
+ 2 index stringwidth pdfTextMat idtransform exch pop
208
+ sub exch div
209
+ 0 pdfWordSpacing pdfTextMat dtransform 32
210
+ 4 3 roll pdfCharSpacing add 0 exch
211
+ pdfTextMat dtransform
212
+ 6 5 roll Tj1
213
+ } def
214
+ /Tj1 {
215
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
216
+ currentpoint 8 2 roll
217
+ pdfTextRender 1 and 0 eq {
218
+ 6 copy awidthshow
219
+ } if
220
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
221
+ 7 index 7 index moveto
222
+ 6 copy
223
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
224
+ false awcp currentpoint stroke moveto
225
+ } if
226
+ pdfTextRender 4 and 0 ne {
227
+ 8 6 roll moveto
228
+ false awcp
229
+ /pdfTextClipPath [ pdfTextClipPath aload pop
230
+ {/moveto cvx}
231
+ {/lineto cvx}
232
+ {/curveto cvx}
233
+ {/closepath cvx}
234
+ pathforall ] def
235
+ currentpoint newpath moveto
236
+ } {
237
+ 8 {pop} repeat
238
+ } ifelse
239
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
240
+ } def
241
+ /TJm { pdfFontSize 0.001 mul mul neg 0
242
+ pdfTextMat dtransform rmoveto } def
243
+ /TJmV { pdfFontSize 0.001 mul mul neg 0 exch
244
+ pdfTextMat dtransform rmoveto } def
245
+ /Tclip { pdfTextClipPath cvx exec clip newpath
246
+ /pdfTextClipPath [] def } def
247
+ /Tclip* { pdfTextClipPath cvx exec eoclip newpath
248
+ /pdfTextClipPath [] def } def
249
+ % Level 2 image operators
250
+ /pdfImBuf 100 string def
251
+ /pdfIm {
252
+ image
253
+ { currentfile pdfImBuf readline
254
+ not { pop exit } if
255
+ (%-EOD-) eq { exit } if } loop
256
+ } def
257
+ /pdfImM {
258
+ fCol imagemask
259
+ { currentfile pdfImBuf readline
260
+ not { pop exit } if
261
+ (%-EOD-) eq { exit } if } loop
262
+ } def
263
+ /pr { 2 index 2 index 3 2 roll putinterval 4 add } def
264
+ /pdfImClip {
265
+ gsave
266
+ 0 2 4 index length 1 sub {
267
+ dup 4 index exch 2 copy
268
+ get 5 index div put
269
+ 1 add 3 index exch 2 copy
270
+ get 3 index div put
271
+ } for
272
+ pop pop rectclip
273
+ } def
274
+ /pdfImClipEnd { grestore } def
275
+ % shading operators
276
+ /colordelta {
277
+ false 0 1 3 index length 1 sub {
278
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
279
+ pop true
280
+ } if
281
+ } for
282
+ exch pop exch pop
283
+ } def
284
+ /funcCol { func n array astore } def
285
+ /funcSH {
286
+ dup 0 eq {
287
+ true
288
+ } {
289
+ dup 6 eq {
290
+ false
291
+ } {
292
+ 4 index 4 index funcCol dup
293
+ 6 index 4 index funcCol dup
294
+ 3 1 roll colordelta 3 1 roll
295
+ 5 index 5 index funcCol dup
296
+ 3 1 roll colordelta 3 1 roll
297
+ 6 index 8 index funcCol dup
298
+ 3 1 roll colordelta 3 1 roll
299
+ colordelta or or or
300
+ } ifelse
301
+ } ifelse
302
+ {
303
+ 1 add
304
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
305
+ 6 index 6 index 4 index 4 index 4 index funcSH
306
+ 2 index 6 index 6 index 4 index 4 index funcSH
307
+ 6 index 2 index 4 index 6 index 4 index funcSH
308
+ 5 3 roll 3 2 roll funcSH pop pop
309
+ } {
310
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
311
+ funcCol sc
312
+ dup 4 index exch mat transform m
313
+ 3 index 3 index mat transform l
314
+ 1 index 3 index mat transform l
315
+ mat transform l pop pop h f*
316
+ } ifelse
317
+ } def
318
+ /axialCol {
319
+ dup 0 lt {
320
+ pop t0
321
+ } {
322
+ dup 1 gt {
323
+ pop t1
324
+ } {
325
+ dt mul t0 add
326
+ } ifelse
327
+ } ifelse
328
+ func n array astore
329
+ } def
330
+ /axialSH {
331
+ dup 0 eq {
332
+ true
333
+ } {
334
+ dup 8 eq {
335
+ false
336
+ } {
337
+ 2 index axialCol 2 index axialCol colordelta
338
+ } ifelse
339
+ } ifelse
340
+ {
341
+ 1 add 3 1 roll 2 copy add 0.5 mul
342
+ dup 4 3 roll exch 4 index axialSH
343
+ exch 3 2 roll axialSH
344
+ } {
345
+ pop 2 copy add 0.5 mul
346
+ axialCol sc
347
+ exch dup dx mul x0 add exch dy mul y0 add
348
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
349
+ dx abs dy abs ge {
350
+ 2 copy yMin sub dy mul dx div add yMin m
351
+ yMax sub dy mul dx div add yMax l
352
+ 2 copy yMax sub dy mul dx div add yMax l
353
+ yMin sub dy mul dx div add yMin l
354
+ h f*
355
+ } {
356
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
357
+ xMax sub dx mul dy div add xMax exch l
358
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
359
+ xMin sub dx mul dy div add xMin exch l
360
+ h f*
361
+ } ifelse
362
+ } ifelse
363
+ } def
364
+ /radialCol {
365
+ dup t0 lt {
366
+ pop t0
367
+ } {
368
+ dup t1 gt {
369
+ pop t1
370
+ } if
371
+ } ifelse
372
+ func n array astore
373
+ } def
374
+ /radialSH {
375
+ dup 0 eq {
376
+ true
377
+ } {
378
+ dup 8 eq {
379
+ false
380
+ } {
381
+ 2 index dt mul t0 add radialCol
382
+ 2 index dt mul t0 add radialCol colordelta
383
+ } ifelse
384
+ } ifelse
385
+ {
386
+ 1 add 3 1 roll 2 copy add 0.5 mul
387
+ dup 4 3 roll exch 4 index radialSH
388
+ exch 3 2 roll radialSH
389
+ } {
390
+ pop 2 copy add 0.5 mul dt mul t0 add
391
+ radialCol sc
392
+ encl {
393
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
394
+ 0 360 arc h
395
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
396
+ 360 0 arcn h f
397
+ } {
398
+ 2 copy
399
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
400
+ a1 a2 arcn
401
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
402
+ a2 a1 arcn h
403
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
404
+ a1 a2 arc
405
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
406
+ a2 a1 arc h f
407
+ } ifelse
408
+ } ifelse
409
+ } def
410
+ end
411
+ %%EndResource
412
+ %%EndProlog
413
+ %%BeginSetup
414
+ xpdf begin
415
+ %%BeginResource: font BAAAAA+TimesNewRomanPSMT
416
+ %!PS-TrueTypeFont-29810
417
+ 10 dict begin
418
+ /FontName /BAAAAA+TimesNewRomanPSMT def
419
+ /FontType 42 def
420
+ /FontMatrix [1 0 0 1 0 0] def
421
+ /FontBBox [0 -28 1280 1422] def
422
+ /PaintType 0 def
423
+ /Encoding 256 array
424
+ dup 0 /c00 put
425
+ dup 1 /c01 put
426
+ dup 2 /c02 put
427
+ dup 3 /c03 put
428
+ dup 4 /c04 put
429
+ dup 5 /c05 put
430
+ dup 6 /c06 put
431
+ dup 7 /c07 put
432
+ dup 8 /c08 put
433
+ dup 9 /c09 put
434
+ dup 10 /c0a put
435
+ dup 11 /c0b put
436
+ dup 12 /c0c put
437
+ dup 13 /c0d put
438
+ dup 14 /c0e put
439
+ dup 15 /c0f put
440
+ dup 16 /c10 put
441
+ dup 17 /c11 put
442
+ dup 18 /c12 put
443
+ dup 19 /c13 put
444
+ dup 20 /c14 put
445
+ dup 21 /c15 put
446
+ dup 22 /c16 put
447
+ dup 23 /c17 put
448
+ dup 24 /c18 put
449
+ dup 25 /c19 put
450
+ dup 26 /c1a put
451
+ dup 27 /c1b put
452
+ dup 28 /c1c put
453
+ dup 29 /c1d put
454
+ dup 30 /c1e put
455
+ dup 31 /c1f put
456
+ dup 32 /c20 put
457
+ dup 33 /c21 put
458
+ dup 34 /c22 put
459
+ dup 35 /c23 put
460
+ dup 36 /c24 put
461
+ dup 37 /c25 put
462
+ dup 38 /c26 put
463
+ dup 39 /c27 put
464
+ dup 40 /c28 put
465
+ dup 41 /c29 put
466
+ dup 42 /c2a put
467
+ dup 43 /c2b put
468
+ dup 44 /c2c put
469
+ dup 45 /c2d put
470
+ dup 46 /c2e put
471
+ dup 47 /c2f put
472
+ dup 48 /c30 put
473
+ dup 49 /c31 put
474
+ dup 50 /c32 put
475
+ dup 51 /c33 put
476
+ dup 52 /c34 put
477
+ dup 53 /c35 put
478
+ dup 54 /c36 put
479
+ dup 55 /c37 put
480
+ dup 56 /c38 put
481
+ dup 57 /c39 put
482
+ dup 58 /c3a put
483
+ dup 59 /c3b put
484
+ dup 60 /c3c put
485
+ dup 61 /c3d put
486
+ dup 62 /c3e put
487
+ dup 63 /c3f put
488
+ dup 64 /c40 put
489
+ dup 65 /c41 put
490
+ dup 66 /c42 put
491
+ dup 67 /c43 put
492
+ dup 68 /c44 put
493
+ dup 69 /c45 put
494
+ dup 70 /c46 put
495
+ dup 71 /c47 put
496
+ dup 72 /c48 put
497
+ dup 73 /c49 put
498
+ dup 74 /c4a put
499
+ dup 75 /c4b put
500
+ dup 76 /c4c put
501
+ dup 77 /c4d put
502
+ dup 78 /c4e put
503
+ dup 79 /c4f put
504
+ dup 80 /c50 put
505
+ dup 81 /c51 put
506
+ dup 82 /c52 put
507
+ dup 83 /c53 put
508
+ dup 84 /c54 put
509
+ dup 85 /c55 put
510
+ dup 86 /c56 put
511
+ dup 87 /c57 put
512
+ dup 88 /c58 put
513
+ dup 89 /c59 put
514
+ dup 90 /c5a put
515
+ dup 91 /c5b put
516
+ dup 92 /c5c put
517
+ dup 93 /c5d put
518
+ dup 94 /c5e put
519
+ dup 95 /c5f put
520
+ dup 96 /c60 put
521
+ dup 97 /c61 put
522
+ dup 98 /c62 put
523
+ dup 99 /c63 put
524
+ dup 100 /c64 put
525
+ dup 101 /c65 put
526
+ dup 102 /c66 put
527
+ dup 103 /c67 put
528
+ dup 104 /c68 put
529
+ dup 105 /c69 put
530
+ dup 106 /c6a put
531
+ dup 107 /c6b put
532
+ dup 108 /c6c put
533
+ dup 109 /c6d put
534
+ dup 110 /c6e put
535
+ dup 111 /c6f put
536
+ dup 112 /c70 put
537
+ dup 113 /c71 put
538
+ dup 114 /c72 put
539
+ dup 115 /c73 put
540
+ dup 116 /c74 put
541
+ dup 117 /c75 put
542
+ dup 118 /c76 put
543
+ dup 119 /c77 put
544
+ dup 120 /c78 put
545
+ dup 121 /c79 put
546
+ dup 122 /c7a put
547
+ dup 123 /c7b put
548
+ dup 124 /c7c put
549
+ dup 125 /c7d put
550
+ dup 126 /c7e put
551
+ dup 127 /c7f put
552
+ dup 128 /c80 put
553
+ dup 129 /c81 put
554
+ dup 130 /c82 put
555
+ dup 131 /c83 put
556
+ dup 132 /c84 put
557
+ dup 133 /c85 put
558
+ dup 134 /c86 put
559
+ dup 135 /c87 put
560
+ dup 136 /c88 put
561
+ dup 137 /c89 put
562
+ dup 138 /c8a put
563
+ dup 139 /c8b put
564
+ dup 140 /c8c put
565
+ dup 141 /c8d put
566
+ dup 142 /c8e put
567
+ dup 143 /c8f put
568
+ dup 144 /c90 put
569
+ dup 145 /c91 put
570
+ dup 146 /c92 put
571
+ dup 147 /c93 put
572
+ dup 148 /c94 put
573
+ dup 149 /c95 put
574
+ dup 150 /c96 put
575
+ dup 151 /c97 put
576
+ dup 152 /c98 put
577
+ dup 153 /c99 put
578
+ dup 154 /c9a put
579
+ dup 155 /c9b put
580
+ dup 156 /c9c put
581
+ dup 157 /c9d put
582
+ dup 158 /c9e put
583
+ dup 159 /c9f put
584
+ dup 160 /ca0 put
585
+ dup 161 /ca1 put
586
+ dup 162 /ca2 put
587
+ dup 163 /ca3 put
588
+ dup 164 /ca4 put
589
+ dup 165 /ca5 put
590
+ dup 166 /ca6 put
591
+ dup 167 /ca7 put
592
+ dup 168 /ca8 put
593
+ dup 169 /ca9 put
594
+ dup 170 /caa put
595
+ dup 171 /cab put
596
+ dup 172 /cac put
597
+ dup 173 /cad put
598
+ dup 174 /cae put
599
+ dup 175 /caf put
600
+ dup 176 /cb0 put
601
+ dup 177 /cb1 put
602
+ dup 178 /cb2 put
603
+ dup 179 /cb3 put
604
+ dup 180 /cb4 put
605
+ dup 181 /cb5 put
606
+ dup 182 /cb6 put
607
+ dup 183 /cb7 put
608
+ dup 184 /cb8 put
609
+ dup 185 /cb9 put
610
+ dup 186 /cba put
611
+ dup 187 /cbb put
612
+ dup 188 /cbc put
613
+ dup 189 /cbd put
614
+ dup 190 /cbe put
615
+ dup 191 /cbf put
616
+ dup 192 /cc0 put
617
+ dup 193 /cc1 put
618
+ dup 194 /cc2 put
619
+ dup 195 /cc3 put
620
+ dup 196 /cc4 put
621
+ dup 197 /cc5 put
622
+ dup 198 /cc6 put
623
+ dup 199 /cc7 put
624
+ dup 200 /cc8 put
625
+ dup 201 /cc9 put
626
+ dup 202 /cca put
627
+ dup 203 /ccb put
628
+ dup 204 /ccc put
629
+ dup 205 /ccd put
630
+ dup 206 /cce put
631
+ dup 207 /ccf put
632
+ dup 208 /cd0 put
633
+ dup 209 /cd1 put
634
+ dup 210 /cd2 put
635
+ dup 211 /cd3 put
636
+ dup 212 /cd4 put
637
+ dup 213 /cd5 put
638
+ dup 214 /cd6 put
639
+ dup 215 /cd7 put
640
+ dup 216 /cd8 put
641
+ dup 217 /cd9 put
642
+ dup 218 /cda put
643
+ dup 219 /cdb put
644
+ dup 220 /cdc put
645
+ dup 221 /cdd put
646
+ dup 222 /cde put
647
+ dup 223 /cdf put
648
+ dup 224 /ce0 put
649
+ dup 225 /ce1 put
650
+ dup 226 /ce2 put
651
+ dup 227 /ce3 put
652
+ dup 228 /ce4 put
653
+ dup 229 /ce5 put
654
+ dup 230 /ce6 put
655
+ dup 231 /ce7 put
656
+ dup 232 /ce8 put
657
+ dup 233 /ce9 put
658
+ dup 234 /cea put
659
+ dup 235 /ceb put
660
+ dup 236 /cec put
661
+ dup 237 /ced put
662
+ dup 238 /cee put
663
+ dup 239 /cef put
664
+ dup 240 /cf0 put
665
+ dup 241 /cf1 put
666
+ dup 242 /cf2 put
667
+ dup 243 /cf3 put
668
+ dup 244 /cf4 put
669
+ dup 245 /cf5 put
670
+ dup 246 /cf6 put
671
+ dup 247 /cf7 put
672
+ dup 248 /cf8 put
673
+ dup 249 /cf9 put
674
+ dup 250 /cfa put
675
+ dup 251 /cfb put
676
+ dup 252 /cfc put
677
+ dup 253 /cfd put
678
+ dup 254 /cfe put
679
+ dup 255 /cff put
680
+ readonly def
681
+ /CharStrings 256 dict dup begin
682
+ /.notdef 0 def
683
+ /c09 9 def
684
+ /c08 8 def
685
+ /c07 7 def
686
+ /c06 6 def
687
+ /c05 5 def
688
+ /c04 4 def
689
+ /c03 3 def
690
+ /c02 2 def
691
+ /c01 1 def
692
+ end readonly def
693
+ /sfnts [
694
+ <00010000000900800003001063767420f34dda810000009c000007c46670676d
695
+ 3775a72f0000086000000573676c79667c973f3f00000dd400000f6068656164
696
+ 0f113a1e00001d3400000036686865610779fe5000001d6c00000024686d7478
697
+ 21c5034100001d90000000286c6f6361150e130e00001db8000000166d617870
698
+ 062e0f8900001dd00000002070726570d2662bf400001df000000f1800>
699
+ <058e0000054c001f054c001c0394001b0000ffe10000ffe40000ffe8fe4afffc
700
+ 056b0023fe6affe00313000000ad000000ad0000000000250096009f002400f0
701
+ 013100c200c0004a00a6004100500094004700cf00af000e007901cb00040023
702
+ 004400a80025011f0002004600170105009900d9005c007200e500e00028004b
703
+ 00de011200240045007000160039ffe90016004b0088ffb900d9000a004300ae
704
+ 00ba016c0153002f00430048022c012b0025008fffc000170028ffcdffd80025
705
+ 009d00e50124ffb10048009d00e600110027007f00910012006a00cafffc0000
706
+ 0024006200a7017c01e900210060008b0434048aff6b003b00b500d5014bff6b
707
+ 004d007905d809b5006c009100a3011701c0ffdfffe700be04010065007f0082
708
+ 0088009900b200c0022e034305a000200026003d004e00610065007b00d90113
709
+ 01310340ff27ff42ff99004e00a700f2022b02c603070011002b0049005f008d
710
+ 00a100af00d600e400f5010b0135019d01ab01ab01d101ee05d80000004b0075
711
+ 007a0080009d00a600a700ac00b9013101310217021700020017002900550080
712
+ 008f00a500b200b300d0014b015901c001c103a50530fe3fff14ff15ffe7ffff
713
+ 002a00580099009f00c100e400f40130015901ab01ab03220374041e04740532
714
+ fd81004d0064009c00d000d100d600de00e500f500f8012a012a01e1027e027f
715
+ ff57ffa8ffe500000008001f00380051005a006f0076007700a200c000c200c4
716
+ 00f101fb0209027e02cf04c5057a05f0ff92001200260042004b004f00510053
717
+ 0064008b00ae00b200b800b800d600f50111012001310138014e01520167018f
718
+ 019601b801d901d902060221027102ea03b003cb03dc04360505ff3a00120016
719
+ 001e001f002300570068006c007e0088009200a500a800c500c901150126012d
720
+ 013001d601d901f6023b0244024402a302cf02de0385038f04fc0586fee0feeb
721
+ fefbff8a0007004400470058007500aa00e400ef011601200129016a017301e3
722
+ 027e029002b4030e0310032303350341035403590388039403c803ce047204ab
723
+ 04da0549056105ab0761fe6efed1ff4bff84000000010006001e0027002c0034
724
+ 003700620066006a006b006c007000700072007c0081008a008e0091009200a0
725
+ 00ab00b800bf00c900d500dd00ec00f40100012101300169016a016d017c0185
726
+ 018e018e019901ac01c101c501c901e101f601f601f60222022202280236023f
727
+ 02430246026702850285029402d002d602e8031c0363037f03800380039e03b6
728
+ 03d90400040404ff053205320548058b05a706cb07280748076208ccfcedfd2a
729
+ fd59fddefe00fe1afe5bfe96fec1fee7ff56ff7900010025002d002e007c0087
730
+ 0091009900a100a500a500aa00af00b600c600cc00d700dd00ec00f201020105
731
+ 011701180123012a012c0131013f014701490149014d01510151015501550157
732
+ 015a015a0161016201680168017f0180018201830184018d0195019501950198
733
+ 019901a501a901b601b601b701ba01ba01d501df01e601ea01f2020002000203
734
+ 021702250227022f0239024302430247024f025202520267026f026f02700272
735
+ 0276027e02a702b302b902d603130325032d03610371039903ae03c203d403f9
736
+ 0402042c042f043c04560467048304cf04d104d804fb051f05450568059e05c2
737
+ 061b06340655066a069806af06e806fc070607500762077c07d407ff082500ad
738
+ 00c700aa00b5000000000000000000000000002f06cf01730514047802df009c
739
+ 0018037005870155002500060254036c038e03d2056601f0032001da018a0369
740
+ 036bffa3034602f8036f015602bf0122031f053a0366008c00ff01ab02e102f4
741
+ 02e70415015402e90128049101b7026f034302060000000005d30415048305e8
742
+ 000002d7003a027d01c002c503830383ffbd003a059e01df059e02d1002004e0
743
+ 021300df01c001870297000000ce0269028b0058043405fb0069015a01a90578
744
+ 0182013e0288012a03d4049e00e5032302f301f00196007a00cd014a0424025e
745
+ 023901ab00cf00fd011e00ed017100700195004001bb01dd01b8000101a803a7
746
+ 014c020c018d01b0020d0137010000cd032101d4030a00590000000001260215
747
+ 015002f0025503bc06d00335010100d000d2007a01030130007c000000000000
748
+ 000000fe006e006600940227002b0045004d00d3013200180097004100f4febc
749
+ ffe9001605d8058b009100a1032c00520030005d02cb003a009200e500e50058
750
+ 0086003200ba0099008800300298007cff8001640028004d0065000200b8016a
751
+ 002f010b001100170100007f00040016022200a6005f000000f8000a00ca0043
752
+ 004b01ee0077012000f401c00028045f0000008c044500c20060007b008b008b
753
+ 0064005d00c2009c009206b505d3004f011700000420fe9e00cc00dc005e0046
754
+ 00e30032001a003c0091005a00a1042c0041002000490071009c009cfe480040
755
+ 0040008600cb0102007d003a003e006a0050044800290096ff6a0097006900e0
756
+ 004c001b00c90069ff970043ffbd0052ff83ff8b005fffa1ff5c00670053ffa8
757
+ 002a0076ffb20036008705590256052b043400de00c901c4004800db018b00b3
758
+ 004800da01160125011800ea00ea00ae0046003e05bb008a04d70053003fff8c
759
+ ffd500150028002200990062004a00e4006d00ee00e5004803c00033fe4e02b1
760
+ ff460370007905df0051ffa7ff1f010a0068ff6c004f00bc00a5070500ab0080
761
+ 001e05a500>
762
+ <4040403f3e3d3c3b3a393837363534333231302f2e2d2c2b2a29282726252423
763
+ 2221201f1e1d1c1b1a1918171614131211100f0e0d0c0b0a0908070605040302
764
+ 01002c4523466020b02660b004262348482d2c452346236120b02661b0042623
765
+ 48482d2c45234660b0206120b04660b004262348482d2c4523462361b0206020
766
+ b02661b02061b004262348482d2c45234660b0406120b06660b004262348482d
767
+ 2c4523462361b0406020b02661b04061b004262348482d2c0110203c003c2d2c
768
+ 20452320b0cd442320b8015a51582320b08d44235920b0ed51582320b04d4423
769
+ 5920b09051582320b00d44235921212d2c20204518684420b001602045b04676
770
+ 688a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b01723
771
+ 70b101173e01b0172370b10217453ab10200080d2d2c45b01a234445b0192344
772
+ 2d2c2045b00325456164b050515845441b2121592d2cb00143632362b0002342
773
+ b00f2b2d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b000
774
+ 8b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c45b0112bb017
775
+ 2344b0177ae4182d2c45b0112bb01723442d2cb01243588745b0112bb0172344
776
+ b0177ae41b038a45186920b01723448a8a8720b0a05158b0112bb0172344b017
777
+ 7ae41b21b0177ae45959182d2cb0022546608a46b040618c482d2c4b53205c58
778
+ b002855958b00185592d2c20b0032545b019234445b01a23444565234520b003
779
+ 25606a20b009234223688a6a606120b01a8ab000527921b21a1a40b9ffe0001a
780
+ 45208a54582321b03f1b235961441cb114008a5279b31940201945208a545823
781
+ 21b03f1b235961442d2cb110114323430b2d2cb10e0f4323430b2d2cb10c0d43
782
+ 23430b2d2cb10c0d432343650b2d2cb10e0f432343650b2d2cb1101143234365
783
+ 0b2d2c4b525845441b2121592d2c0120b003252349b04060b0206320b0005258
784
+ 23b002253823b002256538008a63381b212121212159012d2c4bb06451584569
785
+ b00943608a103a1b212110592d2c01b005251023208af500b0016023edec2d2c
786
+ 01b005251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b001
787
+ 600110203c003c2d2c20b001610110203c003c2d2cb02b2bb02a2a2d2c00b007
788
+ 43b006430b2d2c3eb02a2a2d2c352d2c76b802b023701020b802b04520b00050
789
+ 58b00161593a2f182d2c21210c6423648bb84000622d2c21b08051580c642364
790
+ 8bb82000621bb200402f2b59b002602d2c21b0c051580c6423648bb81555621b
791
+ b200802f2b59b002602d2c0c6423648bb84000626023212d2cb4000100000015
792
+ b00826b00826b00826b008260f10161345683ab001162d2cb4000100000015b0
793
+ 0826b00826b00826b008260f1016134568653ab001162d2c4b53234b515a5820
794
+ 458a60441b2121592d2c4b545820458a60441b2121592d2c4b53234b515a5838
795
+ 1b2121592d2c4b5458381b2121592d2c014b53234b515ab00225b00425b00625
796
+ 4923451869525a58b00225b00225b00525462345696048592121212d2cb01343
797
+ 58031b02592d2cb0134358021b03592d2c4b54b012435c5a58381b2121592d2c
798
+ b012435c580cb00425b00425060c6423646164b807085158b00425b004250120
799
+ 46b01060482046b0106048590a21211b2121592d2cb012435c580cb00425b004
800
+ 25060c6423646164b807085158b00425b00425012046b8fff060482046b8fff0
801
+ 6048590a21211b2121592d2c4b53234b515a58b03a2b1b2121592d2c4b53234b
802
+ 515a58b03b2b1b2121592d2c4b53234b515ab012435c5a58381b2121592d2c0c
803
+ 8a034b54b00426024b545a8a8a0ab012435c5a58381b2121592d2c462346608a
804
+ 8a462320468a608a61b8ff8062232010238ab9035803588a70456020b0005058
805
+ b00161b8ffba8b1bb0468c59b0106068013a2d0000>
806
+ <0002010000000500050000030007004db10201bb02be0006000702bfb2000504
807
+ b802beb403000a0704b802beb5010019080605bf02be0002000301290009016b
808
+ 015e00182b10f63cfd3c4e10f43c4dfd3c003f3cfd3c10fc3cfd3c3130211121
809
+ 112521112101000400fc2003c0fc400500fb002004c0000000>
810
+ <0001003e000004b0054c001f00c9403a5a015a025a1d5a1e6b016b026b1d6b1e
811
+ 082f213f214f219805971ba805a61b0702011d1e161f1b102122091f1b0f2123
812
+ 071823001f02100f0821b802c0401309012b0040170e3f120f001f005000af00
813
+ 0400b80228b708092217161f2b1eb8ffc0400e170e3f12001e101e5f1ea01e04
814
+ 1eba0228001602c0b320645d182b10f6f45d4358b9001effc0b20b351eb8ffc0
815
+ b20b0f342b2b592be4103cfd3cf45d4358400900400b3500400b0f342b2b592b
816
+ e410e6003f3c3f3cfd3c2b2b0110c910c93130015d005d011323262726262323
817
+ 111417163333152135333237363511232207060607231304a10f260b131f6754
818
+ bf1b264f2ffdc130562416a35f28344a072610054cfec254243a37fbf47d1f2a
819
+ 2525342072040c0e136c5c013e00000000>
820
+ <0001000d000003f3058e003600fa402f38402a350a38600d5d360f250f268038
821
+ 903804b038c038d038032b0601503860387038903804403801200818291e11b8
822
+ 030f4011222d291e274a220a291e104a2321291e26b8030e402e2335272e4134
823
+ 1e35440120273600001d2c04072726261111100a19182409900a01b00a010f0a
824
+ 700a9f0acf0a040ab802bd40252d0021242e1f2d502d602d702d04802d902d02
825
+ b02d01002d102dc02dd02d042d6037a67f182b10f65d5d71723cfd3c10fd5d71
826
+ 723cfd3c003f3c103c103c3fed3f3c113939f5edfc01f52b2b2b2b3130437940
827
+ 141a1c050806251b261c05191c0107081a071d1c012b01103c2b2b2b81810171
828
+ 72005d015d712b2b011136363332161716151114171616331521353332363736
829
+ 3511342626232206071114161633152135323736363511342626232207272501
830
+ 4d6f82414e701b130e0a3040fe3e1540320a031f4430316a4a153946fe3a3d23
831
+ 14180f1f1a152f0e0112058efd627a45565c40aafebc5720181c24242726104e
832
+ 0144965e2f344ffe1c5e2e1f2424130a3856033d9d481a102370000000>
833
+ <0002003c00000207058e000b002200db4019902401602470249024a024f02405
834
+ 2024502402402450240224b8ffc0b332323424b8ffc0b3383a3424b8ffc0b32d
835
+ 303424b8ffc0b323253424b8ffc0402e191a3418291e134a220d291e124a2321
836
+ 271941201e21440c190c1390060106390000220c0713120a900901093903b8ff
837
+ c0b2433503b8ffc0400f3f35036b0c0c0d190d2418402b3918b8ffc0401a363a
838
+ 34901801501801601870189018a018f0180518b223b2a3182b10f65d71722b2b
839
+ ed3c103c10f42b2bed72003f3c3f3c3fed7211123910f5edfc01f52b2b313001
840
+ 2b2b2b2b2b015d715d0172013216151406232226353436131114161633152135
841
+ 323636351134272626232207272501292a3b3b2a2a3c3b7e193141fe43432e1b
842
+ 09071e1a1c280e0114058e3b2a2a3c3c2a2a3bfe21fd2056391c24241a3c5501
843
+ 61952c20190f247000>
844
+ <00010064ffe402d503af003103094029092c192c0212122e400b392c280b3918
845
+ 14590c5a269b109424050a070a280a29603370338033060f33b8012040870d5d
846
+ 36cb0dcb0ec424c425d723d624d92ce604e623e624e92c0b123f2c5d2c6e2d7d
847
+ 2c8f018f028f038015801a801b801c892d8f2e0d0f010f020a03090c061c0a2c
848
+ c822c923081c031614121c161d19291b2c9909990a9b20932393240b122b0d28
849
+ 2c4a2c4f335f337829782c860ea823af33e803e61c0c2908311e00bd021e011f
850
+ 012f010201b8012bb200bd2eb8011a40112a181e19bd1b1e1a1f1a01101a201a
851
+ 021ab8012bb219bd16b8011a4022121224230d0b040f2724230d0b04051e01c7
852
+ 002e2f2a31000005252a071a7e191918b803464014162f1e25120b02cc120101
853
+ 12cf21df21ef210321b80314400b700f01600f700f900f030fb801364019271a
854
+ 192e1f0801082c9f270160277027802703202730270227ba012000320120b14b
855
+ 182b4e10f45d71724ded72f43c10fd5d71fd5d4358b2ff21015d59392f435c58
856
+ b2ff01015d59ed003fede4f43c10ed3fed3c103c10e410ed1112173901111217
857
+ 394358400a242323240d0b140d0d0b870e2e2b0e7d10c459180010ecf4ed5d72
858
+ 0110edf4ed0010ecf4ed5d0110edf4ed31304379401c28291f20101106071f11
859
+ 211c010629081c0020101e1c000728051c01002b2b012b2b81818181015d4358
860
+ 4009fb07f610f611fb28045d5901720071005d435840199f019f029f039f0b9a
861
+ 0d9015901a901b901c992297239f2d0c5d595d2b017100722b2b4358400b2f23
862
+ 2f248b2c9b249b2c055d59435c584011282019390928193901400a3902400a39
863
+ 1bb8ffc0b20a391ab8ffc040190a392e400a392c400a392c4009390c101e123f
864
+ 0e201e123f0eb8fff0b21b390eb8fff0b2193924b8ffe8b2133923b8ffe8b213
865
+ 390cb8ffe8b613392c1813391bb8ffc0b212391ab8ffc0400f12390140123902
866
+ 4012392c20123924b8fff0400f0f392c180f3903100d392e400d3923b8fff040
867
+ 120d390c100d392c200d392c1811392c181139002b2b2b2b2b2b2b2b2b2b2b2b
868
+ 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b012b2b59005d011123262623220615
869
+ 1417161717161514062322272623220723113316163332363534262427263534
870
+ 36333217163332363702902126775c4656201f5f92cbbd75546c2115170d2121
871
+ 1c9e62455761fede2d2d9b7b364d331110120c03affec8936a4a2d3828292e47
872
+ 63a27d991e0a1a01478c8e5139455e903a39577198170f0e1800000000>
873
+ <00020049ffed038903af0032003d0255406f0b1c8a33021253360112201f3980
874
+ 3fa809b60a03122b127d007d3386008b0b8b35061d12163a103f803f04091c4c
875
+ 054c06452045224c3a403f891d080a0e0720002249014b0a490b49354b37433a
876
+ 493d570b670b8509840a840b0f54168316021f3f5f3f0260083300343c2e292d
877
+ 34bb011b000c000cffc0b609390c280b390cb8ffc0401a3a35100c500c02400c
878
+ 500c600c03200c500c600c760c040c3c18b8ffd840290b394f185f186f18032f
879
+ 187f1802187e1f100110251e07303c403c023c2c04702d802d022d35292c30b8
880
+ 03464011040b2ec02d012d602500330d0c0c343433bb016700240025ffc04014
881
+ 0e3900251f2580259025044025f0250280250125bb024300070015ffc0b21f39
882
+ 15b80167401e1b2f393107400e3920075007800703100701f007015007010743
883
+ 3e436e182b4e10f45d7172722b4dedf4ed2b10fd5d71722b3cfd3c103c103c10
884
+ 3c10f65d3c003ff4fde45d10ed713fed72fd5d712b11395d71722b2b2b2fed11
885
+ 123911123939313043794047353b1c23051337383638020609080a0802062122
886
+ 20220206350b392000111d131c0012130f1f0d1c0122233b05391c0038083420
887
+ 0135340b121c101c010e22101c013a063c1c002b2b2b3c103c2b012b103c2b10
888
+ 3c2b2b2a2a2a818181017201710071017172005d4358b23f12015d59015d2b00
889
+ 72435c58b431400e392eb8ffe0b210392eb8ffe0b60e3937200e3920b8ffe8b2
890
+ 0c3920b8ffe0400b0b3918200b3917200b391cb8fff0401a0b390a280b393728
891
+ 0b390a280a3937280a390a28093937280939002b2b2b2b2b2b2b2b2b2b2b2b2b
892
+ 2b2b59005d250607062322263534373636373534262322070615171406232226
893
+ 3534363332171617161511141616333237363715062322262711060706061514
894
+ 16333202478d24363d5f7b1e29cbec57533f2526022f26252fb09f7a4e3b1c12
895
+ 0a170f100c153c7066313a01972c4f4456384c846d1119826a43314478562489
896
+ 6622222c3a2e32342d5690291f422b85fec9833b14070d3c38964493015d3c19
897
+ 2c6039485f00000000>
898
+ <00010014fff1023c04c1001b00d6b9000dffe840410c395f015f02023f1d9911
899
+ 9919bf15bf16b819e819079f1d01891a014f0c4f0d5f0c5f0df5180506181518
900
+ 271803161518191a030118191a03141ba00103153004b8011b401c0103300202
901
+ 01060c35082c0f0b16cf15df15ef15031565141bcc000bb801ec402c200c010c
902
+ 2e2f1db01d021d000101040405241450130180130100131013b013c013d013e0
903
+ 130613601cab89182b10f65d71723cfd3c103c103c105df45ded10ed10f45d3c
904
+ 003ffde43f3c10ed10edfd3c10e401111739001117391239313000715d017172
905
+ 5d00722b01113315231114163332363733060623222626351123353636373637
906
+ 014ad6d63328213e11272380442e582a9137732d172904c1fed346fdae593e29
907
+ 286263335f630268211669482665000000>
908
+ <0002004cffe4035303b00014001d02434019125f185d1960006014d603051920
909
+ 1c3917201c3916401c391fb8ffc0400a434a34081f430d5d361fb8ffc0b32828
910
+ 341fb8ffc0405b2a2e341b06190958135e165f175a185b1a0701030906070908
911
+ 0c0515490689028c06870c8a10851da302ab18b513d402d90fda10f402f30313
912
+ 12000700081007100860076008700780078909c107c80ff0070c0401070d8402
913
+ 0309baffe00006ffe040433609460247094f1f54025409620272028913891999
914
+ 13a409a40ab808b509b00ac702e702e00cf40a1408d007010007d00702200790
915
+ 07a007b00704077d041400301615b8ffc040131239125f157f159f15df150415
916
+ 151bd3040104b8ffd0b2143904b8ffe8b2133904b8ffd84048123904310b0b5c
917
+ 1b011b25110707cc0816281b390f16016f167f168f160316f414148008013008
918
+ 90080230088f08df08031008400860087008b008e0080608aa0e150400890002
919
+ 00b8032c4012300e400e500e03000e100e200e03f00e010eb8ffc04009434a34
920
+ 0e431e434b182b4e10f42b7172724dfd713c10fd5d715d713c10ed5d712b10ed
921
+ 003fed723fed2b2b2b7211392f5d4358b26f15015d592b3cfd3c10f45d717239
922
+ 3130015d00383800715d014358b40600010202715971722b2b2b2b2b2b2b0072
923
+ 435c58b90007ffc0400b23390c402d390d402d3908b8ffc0b2283907b8ffc0b2
924
+ 283906b8ffc0b21b3907b8ffc0b21b3908b8ffc0b21b3907b8ffc0b20a3908b8
925
+ ffc0b20a3907b8ffc0b2093908b8ffc0400e093915101939192011390d201139
926
+ 002b2b012b002b2b2b2b2b2b2b2b2b2b2b2b5913061716333236371706062322
927
+ 0235341233321615252126272626232206da016464875a852d1f15ca98a5ebf1
928
+ b69ac6fd8701a805101963365383023bcc747463781489e10101d9eb0107cbaa
929
+ 3a5824384081000000>
930
+ <00010091ffe4016f00c2000b002b401c0040060b034009403a3509403f355f09
931
+ 019f09af090209850c6a7a182b10f671722b2bed003fed313025321615140623
932
+ 222635343601002f40412e2e4141c2412e2e41412e2f400000>
933
+ <000100000002d1ec623652885f0f3cf50819080000000000a2e31dc200000000
934
+ 000000000000ffe40500058e00000009000100000000000000>
935
+ <000100000721fe45005700000000000000000001000000000000000000000000
936
+ 0000000a00>
937
+ <0639011c04e3003e0400000d0239003c031d006402000000038d004902390014
938
+ 038d004c0200009100>
939
+ <0000003c00d401a202460414041405980630078407b0000000>
940
+ <00010000000a003e00020000000000020010002f0041000005cd0f180003000200>
941
+ <b9ffc003e1b345453240b803e1b32b2e3240b803e1b2282932b9ffc003e1b21a
942
+ 1c32bd03e102ac0027001fffc003dfb2161b32b9ffc003deb2424232b9ffc003
943
+ deb2363832b9ffc003deb32a2d32df410a03de00ef03de000203de03df002800
944
+ 1fffc003dfb3282e32f0410d03df0001037e000f0101001f00a003dd00b003dd
945
+ 0002004003dab32426329fbf03cc000103ca03c90064001fffc003c9b20d1132
946
+ 410a03c703b70012001f03b603b50064001fffc003b5b30e1132004173038d00
947
+ 0100c0038d00d0038d00e0038d00f0038d0004006f03a7007f03a7008f03a700
948
+ af03a70004000f03a7001f03a7002f03a7004f03a7000403ab03ab00ef03a500
949
+ 01000f03a5002f03a5006f03a5008f03a50004005403aa0001006b03aa000103
950
+ a8036a0022001f038c03940015001f038b03930015001f03a40393001a001f03
951
+ a20394001e001f03a10393001e001f039f0394001e001f039b0394001a001f03
952
+ 9a0393001e001f039903940016001f039803940016001f03970393001b001f03
953
+ 960394001b001f03950393001b001f03760375001a001f03740375001a001f03
954
+ a00373b21e1f10411e0393002003930030039300030020039400300394004003
955
+ 9400030000039400010383036c001e001f03b1036c0032001f036d036c003200
956
+ 1fffc0037db2212332b9ffc0037db3171932a0410a037d00b0037d00c0037d00
957
+ d0037d0004ffc0037cb2212332b9ffc0037cb3171932a0412d037c00b0037c00
958
+ c0037c00d0037c00040030037300400373000200000373001003730020037300
959
+ 0300e0037300f00373000200b0037300c0037300d00373000300840373009003
960
+ 7300a0037300030377036a0029001f0389036ab2281f40b80367b33940323fbb
961
+ 0366000100400366b3191d328fbb0366000100400366b3090a3240b80366b309
962
+ 0e3240b80366b3090f323fbb0365000100400365b3090c3240b80365b31a1d32
963
+ 40b80365b3090e326b410e0363007b0363000200140363002403630034036300
964
+ 44036300040363b2242f1fba034e006d0800400e1f7f027f037f047f05043044
965
+ 0112bf033200500800001f0012032d003c080040291f5f3c0137600970098009
966
+ 0310092009300940095009056f037f038f03031f032f033f034f035f0305b8ff
967
+ c0b2073a33b8ffc04047063a33900ba00bb00bc00bd00b05b006c006d006e006
968
+ f0060520063006400650066006700680069006a006099006900702600b700b80
969
+ 0b03100b200b300b400b500b051f0701a0418503620001000003620010036200
970
+ 70036200900362000400f0035f00010020035e0020035f0030035f0040035e00
971
+ 040000035e0000035f0010035f00d0035e00e0035f00050010030f0020030f00
972
+ 30030f00d0030f00e0030f00050000030f0010030f0050030f0060030f007003
973
+ 0f00d0030f00060000030f0010030f0020030f0030030f00e0030f00f0030f00
974
+ 06030f00270000030e0030030e000200e0030e00f0030e0002030e004a00e003
975
+ 0d00f0030d0002030d002700d002fc0001001002fc002002fc005002fc000300
976
+ d002fc00e002fc0002000002fc001002fc002002fc003002fc005002fc006002
977
+ fc000600e002fc00f002fc0002002002fc003002fc004002fc000302fc406127
978
+ c02901b02901a02901902901403c3f413240223f41321212125f235f255f285f
979
+ a5046f236f256f286fa5044f234f254f284fa5043f233f253f283fa5042f232f
980
+ 252f282fa5041f231f251f281fa5048f4caf4cbf4ccf4c045f4c6f4c7f4c0337
981
+ b8ffc0b3b22b3032b8ffc0b3b2222532b8ffc0b5b2191a32370f413d02af0001
982
+ 005f02af009f02af00df02af0003000f02af001f02af002f02af003f02af006f
983
+ 02af000502af02af001f02ad002f02ad003f02ad004f02ad005f02ad000500df
984
+ 02ad0001000f02ad001f02ad003f02ad005f02ad009f02ad0005005f02ad00df
985
+ 02ad0002000f02ad001f02ad003f02ad0003004002acb23a334f414c02ac005f
986
+ 02ac009f02ac0003002f02ac003f02ac0002000f02ac003f02ac00af02ac0003
987
+ 00b002ac00e002ac0002004f02ac005f02ac00a002ac0003000f02ac001f02ac
988
+ 002f02ac003f02ac0004000f035a0001000f035a001f035a003f035a005f035a
989
+ 0070035a000500cf035700df03570002000f0357001f03570070035700af0357
990
+ 0004035a035a0357035702ad02ad02ac02ac032c400d31151f00161600000012
991
+ 1108104110020c004a000d01a8004a000d0198004a000d0189004a000d013f00
992
+ 4a000d0124400e4a0df64a0dbe4a0d864a0d274a0dbe02280041000d01940041
993
+ 000d0121400b410db4410d4f410d29410d411002170021000d02150021000d02
994
+ 060021000d01eb0021000d014e0021000d012c4014210df9210df3210df1210d
995
+ 9d210d71210d3d210d4110021c001f000d0214001f000d020b001f000d019600
996
+ 1f000d014a001f000d0126400b1f0dc61f0d571f0d371f0d410d019e0141000d
997
+ 00420141000d001e0141000d001b0141000d01f2b40f440f0009bb01f2004400
998
+ 0d0201b23c291fb80200b23c291fb801ffb23c411fb801feb23c471fb801fdb2
999
+ 3c9e1fb801fab23c931fbc01f9010f0101001f01f6b224e41f411501f4014904
1000
+ 01001f01f301490401001f01f1014900ab001f01f001490067001f01a6003c01
1001
+ 25001f01a4b23c811f411501a3010f019a001f01a200220801001f01a1005004
1002
+ 01001f019f0149019a001f019d01490067001f019cb22c621fb8019bb22c791f
1003
+ bc019a002c0101001f0197b22ce41fb80193b22c891fb80192b22c6c1fb8018f
1004
+ b2259e1fb8016ab23c2a1f4111016700240201001f0163002502ab001f014c01
1005
+ 0f019a001f01480149006c001f0147b22c891fb80145b22c9e1fb80144b22c79
1006
+ 1fb80143b223311fb80127b23c811fbc012300500101001f011fb223e41f4115
1007
+ 011d0023019a001f011c00230801001f011b00250801001f010e010f0401001f
1008
+ 010d00220401001f0108b223811fb80106b425e41ff73cbb0125001f00f5010f
1009
+ b29e1fe3bc01490156001f00e20149b2ab1fd1b901490401b21fcf2cb80125b6
1010
+ 1fce23bb1fc524b80156b21fc02cb80801b21fbf2cb80201b51fb124e41fb0b9
1011
+ 01490201b61faf2c671fad23b80801b21fa523b80201400b1f9f3c2d1f9b235a
1012
+ 1f9925b80201b21f812cbc0401001f006d010f0156400b1f592c3e1f4c3cab1f
1013
+ 4625b80101b21f403cb80125400a1f3a23721f393cab1f38b80149b3ab1f3124
1014
+ b80401b21f3025b802abb61f2a24e41f2623b80156b21f5537ba023500070175
1015
+ 402c0774076207560751073b0733072d0720071d071c071408120810080e080c
1016
+ 080a080808060804080208000814b8ffe0402b00000100140610000001000604
1017
+ 000001000410000001001002000001000200000001000002010802004a00b013
1018
+ 034b024b534201b0124b004b5442b0372b4bb807ff52b0382b4bb008505b58b1
1019
+ 01018e59b0382bb00288b801005458b801ffb101018e851bb0124358b9000101
1020
+ 2f858d1bb90001017c858d5959014bb0c063004b6220b0f65323b8010a515ab0
1021
+ 052342180016763f183f123e113946443e113946443e113946443e113946443e
1022
+ 11394660443e11394660442b2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b
1023
+ 2b2b2b2b181db0964b5358b0aa1d59b0324b5358b0ff1d594bb04753205c58b9
1024
+ 0271026f4544b90270026f45445958b9017a0271455258b90271017a4459594b
1025
+ b04753205c58b9002202704544b9003c027045445958b901b30022455258b900
1026
+ 2201b34459594bb04c53205c58b9014900224544b1222245445958b901c20149
1027
+ 455258b9014901c24459594bb06753205c58b9002402714544b9005002714544
1028
+ 5958b9021e0024455258b90024021e4459594bb8020153205c58b9010f002245
1029
+ 44b1222245445958b90c00010f455258b9010f0c004459594bb01c53205c58b1
1030
+ 25254544b12c2545445958b13725455258b125374459594bb0ab53205c58b125
1031
+ 254544b1232545445958b901590025455258b9002501594459594bb801015320
1032
+ 5c58b125254544b1282545445958b902080025455258b9002502084459592b2b
1033
+ 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
1034
+ 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
1035
+ 2b2b2b2b2b2b2b2b2b2b2b65422b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
1036
+ 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b01b361dc64634565
1037
+ 23456023456560234560b08b766818b080622020b164dc4565234520b0032660
1038
+ 62636820b003266165b0dc236544b064234420b161634565234520b003266062
1039
+ 636820b003266165b063236544b0612344b10063455458b163406544b2614061
1040
+ 4523614459b3a67f434b456523456023456560234560b089766818b080622020
1041
+ b1437f4565234520b003266062636820b003266165b07f236544b043234420b1
1042
+ a64b4565234520b003266062636820b003266165b04b236544b0a62344b1004b
1043
+ 455458b14b406544b2a640a645236144594b5242014b5058b108004259435c58
1044
+ b108004259b3020b0a124358601b2159421610703eb0124358b93b21187e1bba
1045
+ 040001a8000b2b59b00c2342b00d2342b0124358b92d412d411bba0400040000
1046
+ 0b2b59b00e2342b00f2342b0124358b9187e3b211bba01a80400000b2b59b010
1047
+ 2342b0112342002b001845694445694445694445694473737374737373747575
1048
+ 2b7373747475184569447373742b4bb021534bb046515a58b03cb03c45b04060
1049
+ 4459012b2b2b2b757575757575757543584010bf3ccf3c026f3c7f3c8f3c9f3c
1050
+ af3c0575755943584012bf22cf22025f226f227f228f229f22af220675755943
1051
+ 5c58b6403c9f22ef220375592b2b017474747445447373747475754544734544
1052
+ 73744544737475737373737300757575737575752b2b757575752b752b435841
1053
+ 220063032d00010003032d0013032d0023032d0033032d0053032d000500c303
1054
+ 2d00d3032d00e3032d00f3032d00040083032d0093032d00a3032d00b3032d00
1055
+ 04032d032d4518694474747575592b4358b900180332b330353238b80332b361
1056
+ 663238b80332b3535a3238b80332b3454e3238b80332b33c413218b80332b23f
1057
+ 330a410f0332000100ba033200ca033200da033200ea033200fa033200050332
1058
+ 03324518694474752b2b2b2b2b2b597300732b012b7575002b2b2b74002b2b2b
1059
+ 732b74012b002b2b017373737474732b2b00732b2b002b2b2b017374732b012b
1060
+ 2b012b2b2b2b2b2b2b2b2b2b2b2b2b2b00017375007373004569440073730173
1061
+ 742b2b2b2b2b732b00732b752b2b732b2b2b2b2b2b2b2b2b00>
1062
+ ] def
1063
+ FontName currentdict end definefont pop
1064
+ %%EndResource
1065
+ /F9_0 /BAAAAA+TimesNewRomanPSMT 1 1
1066
+ [ /c00/c01/c02/c03/c04/c05/c06/c07
1067
+ /c08/c09/c0a/c0b/c0c/c0d/c0e/c0f
1068
+ /c10/c11/c12/c13/c14/c15/c16/c17
1069
+ /c18/c19/c1a/c1b/c1c/c1d/c1e/c1f
1070
+ /c20/c21/c22/c23/c24/c25/c26/c27
1071
+ /c28/c29/c2a/c2b/c2c/c2d/c2e/c2f
1072
+ /c30/c31/c32/c33/c34/c35/c36/c37
1073
+ /c38/c39/c3a/c3b/c3c/c3d/c3e/c3f
1074
+ /c40/c41/c42/c43/c44/c45/c46/c47
1075
+ /c48/c49/c4a/c4b/c4c/c4d/c4e/c4f
1076
+ /c50/c51/c52/c53/c54/c55/c56/c57
1077
+ /c58/c59/c5a/c5b/c5c/c5d/c5e/c5f
1078
+ /c60/c61/c62/c63/c64/c65/c66/c67
1079
+ /c68/c69/c6a/c6b/c6c/c6d/c6e/c6f
1080
+ /c70/c71/c72/c73/c74/c75/c76/c77
1081
+ /c78/c79/c7a/c7b/c7c/c7d/c7e/c7f
1082
+ /c80/c81/c82/c83/c84/c85/c86/c87
1083
+ /c88/c89/c8a/c8b/c8c/c8d/c8e/c8f
1084
+ /c90/c91/c92/c93/c94/c95/c96/c97
1085
+ /c98/c99/c9a/c9b/c9c/c9d/c9e/c9f
1086
+ /ca0/ca1/ca2/ca3/ca4/ca5/ca6/ca7
1087
+ /ca8/ca9/caa/cab/cac/cad/cae/caf
1088
+ /cb0/cb1/cb2/cb3/cb4/cb5/cb6/cb7
1089
+ /cb8/cb9/cba/cbb/cbc/cbd/cbe/cbf
1090
+ /cc0/cc1/cc2/cc3/cc4/cc5/cc6/cc7
1091
+ /cc8/cc9/cca/ccb/ccc/ccd/cce/ccf
1092
+ /cd0/cd1/cd2/cd3/cd4/cd5/cd6/cd7
1093
+ /cd8/cd9/cda/cdb/cdc/cdd/cde/cdf
1094
+ /ce0/ce1/ce2/ce3/ce4/ce5/ce6/ce7
1095
+ /ce8/ce9/cea/ceb/cec/ced/cee/cef
1096
+ /cf0/cf1/cf2/cf3/cf4/cf5/cf6/cf7
1097
+ /cf8/cf9/cfa/cfb/cfc/cfd/cfe/cff]
1098
+ pdfMakeFont
1099
+ 612 792 false pdfSetup
1100
+ %%EndSetup
1101
+ %%Page: 1 1
1102
+ %%BeginPageSetup
1103
+ %%PageOrientation: Portrait
1104
+ pdfStartPage
1105
+ 0 0 612 792 re W
1106
+ %%EndPageSetup
1107
+ [] 0 d
1108
+ 1 i
1109
+ 0 j
1110
+ 0 J
1111
+ 10 M
1112
+ 1 w
1113
+ /DeviceGray {} cs
1114
+ [0] sc
1115
+ /DeviceGray {} CS
1116
+ [0] SC
1117
+ false op
1118
+ false OP
1119
+ {} settransfer
1120
+ q
1121
+ 0.1 w
1122
+ q
1123
+ 0 -0.1 612.1 792.1 re
1124
+ W*
1125
+ q
1126
+ /DeviceRGB {} cs
1127
+ [0 0 0] sc
1128
+ [1 0 0 1 0 0] Tm
1129
+ 0 0 Td
1130
+ 56.8 724.1 Td
1131
+ /F9_0 12 Tf
1132
+ (\001) 7.32 Tj
1133
+ 2 TJm
1134
+ (\002\003) 9.324 Tj
1135
+ 2 TJm
1136
+ (\004) 4.668 Tj
1137
+ -10 TJm
1138
+ (\005\003) 6.324 Tj
1139
+ 2 TJm
1140
+ (\004) 4.668 Tj
1141
+ -2 TJm
1142
+ (\005\006) 8.316 Tj
1143
+ 1 TJm
1144
+ (\005\007) 6.324 Tj
1145
+ 2 TJm
1146
+ (\010) 5.316 Tj
1147
+ 1 TJm
1148
+ (\004) 4.668 Tj
1149
+ -2 TJm
1150
+ (\007) 3.324 Tj
1151
+ 2 TJm
1152
+ (\011) 3 Tj
1153
+ Q
1154
+ Q
1155
+ Q
1156
+ showpage
1157
+ %%PageTrailer
1158
+ pdfEndPage
1159
+ %%Trailer
1160
+ end
1161
+ %%DocumentSuppliedResources:
1162
+ %%+ font BAAAAA+TimesNewRomanPSMT
1163
+ %%EOF
@@ -12,10 +12,18 @@ class TestRocrad < Test::Unit::TestCase
12
12
  f = File.open(@jpg.to_s, "r")
13
13
  @chars = f.chars.to_a
14
14
  f.close
15
- @txt_jpg = ["3", "R", "8", "Z".downcase].*""
15
+ @txt_jpg = ["3", "R", "8", "Z".downcase].* ""
16
16
  @txt_tif = "43ZZ".downcase
17
- @txt_png = ["H", "W", "9", "W".downcase].*""
18
- @txt_bmp = ["Z".downcase, "L", "A", "6"].*""
17
+ @txt_png = ["H", "W", "9", "W".downcase].* ""
18
+ @txt_bmp = ["Z".downcase, "L", "A", "6"].* ""
19
+ end
20
+
21
+ def test_pdf
22
+ assert Rocrad.new(@path.join("images", "test.pdf")).to_s.include?("This is a test.")
23
+ end
24
+
25
+ def test_ps
26
+ assert Rocrad.new(@path.join("images", "test.ps")).to_s.include?("This is a test.")
19
27
  end
20
28
 
21
29
  def test_convert_via_http
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocrad
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ludwig Bratke
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-29 00:00:00 +02:00
18
+ date: 2011-06-27 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -174,7 +174,9 @@ files:
174
174
  - test/images/test.bmp
175
175
  - test/images/test.foo
176
176
  - test/images/test.jpg
177
+ - test/images/test.pdf
177
178
  - test/images/test.png
179
+ - test/images/test.ps
178
180
  - test/images/test.tif
179
181
  - test/images/test1.tif
180
182
  - test/test_binary.rb