rbpdf 1.18.7 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +12 -0
  3. data/Gemfile +3 -0
  4. data/README.md +1 -5
  5. data/Rakefile +10 -0
  6. data/lib/rbpdf.rb +715 -222
  7. data/lib/rbpdf/version.rb +1 -1
  8. data/rbpdf.gemspec +3 -3
  9. data/test/err_font1.rb +3 -0
  10. data/test/err_font2.rb +4 -0
  11. data/test/rbpdf_bidi_test.rb +85 -14
  12. data/test/rbpdf_bookmark_test.rb +1 -2
  13. data/test/rbpdf_cell_test.rb +1 -2
  14. data/test/rbpdf_content_test.rb +1 -1
  15. data/test/rbpdf_css_test.rb +1 -1
  16. data/test/rbpdf_dom_test.rb +1 -1
  17. data/test/rbpdf_font_func_test.rb +1 -1
  18. data/test/rbpdf_font_style_test.rb +1 -2
  19. data/test/rbpdf_font_test.rb +111 -1
  20. data/test/rbpdf_format_test.rb +1 -2
  21. data/test/rbpdf_func_test.rb +1 -1
  22. data/test/rbpdf_html_anchor_test.rb +107 -0
  23. data/test/rbpdf_html_func_test.rb +1 -1
  24. data/test/rbpdf_html_test.rb +196 -349
  25. data/test/rbpdf_htmlcell_test.rb +1 -1
  26. data/test/rbpdf_image_rmagick_test.rb +1 -2
  27. data/test/rbpdf_image_test.rb +1 -2
  28. data/test/rbpdf_test.rb +1 -1
  29. data/test/rbpdf_transaction_test.rb +1 -1
  30. data/test/rbpdf_viewerpreferences_test.rb +1 -1
  31. data/test/rbpdf_write_test.rb +1 -2
  32. data/test/test_helper.rb +2 -0
  33. metadata +38 -89
  34. data/lib/fonts/README.z +0 -2
  35. data/lib/fonts/arialunicid0_cw.rb +0 -1738
  36. data/lib/fonts/cid0cs.rb +0 -21
  37. data/lib/fonts/cid0ct.rb +0 -21
  38. data/lib/fonts/cid0jp.rb +0 -21
  39. data/lib/fonts/cid0kr.rb +0 -21
  40. data/lib/fonts/courier.rb +0 -37
  41. data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +0 -53
  42. data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +0 -3
  43. data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +0 -99
  44. data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +0 -1315
  45. data/lib/fonts/dejavu-fonts-ttf-2.33/README +0 -59
  46. data/lib/fonts/dejavusans.ctg.z +0 -0
  47. data/lib/fonts/dejavusans.rb +0 -338
  48. data/lib/fonts/dejavusans.z +0 -0
  49. data/lib/fonts/dejavusansb.ctg.z +0 -0
  50. data/lib/fonts/dejavusansb.rb +0 -330
  51. data/lib/fonts/dejavusansb.z +0 -0
  52. data/lib/fonts/dejavusansbi.ctg.z +0 -0
  53. data/lib/fonts/dejavusansbi.rb +0 -297
  54. data/lib/fonts/dejavusansbi.z +0 -0
  55. data/lib/fonts/dejavusansi.ctg.z +0 -0
  56. data/lib/fonts/dejavusansi.rb +0 -305
  57. data/lib/fonts/dejavusansi.z +0 -0
  58. data/lib/fonts/freefont-20080912/AUTHORS +0 -191
  59. data/lib/fonts/freefont-20080912/COPYING +0 -341
  60. data/lib/fonts/freefont-20080912/CREDITS +0 -506
  61. data/lib/fonts/freefont-20080912/ChangeLog +0 -3320
  62. data/lib/fonts/freefont-20080912/INSTALL +0 -81
  63. data/lib/fonts/freefont-20080912/README +0 -108
  64. data/lib/fonts/freemono.ctg.z +0 -0
  65. data/lib/fonts/freemono.rb +0 -203
  66. data/lib/fonts/freemono.z +0 -0
  67. data/lib/fonts/freemonob.ctg.z +0 -0
  68. data/lib/fonts/freemonob.rb +0 -120
  69. data/lib/fonts/freemonob.z +0 -0
  70. data/lib/fonts/freemonobi.ctg.z +0 -0
  71. data/lib/fonts/freemonobi.rb +0 -84
  72. data/lib/fonts/freemonobi.z +0 -0
  73. data/lib/fonts/freemonoi.ctg.z +0 -0
  74. data/lib/fonts/freemonoi.rb +0 -136
  75. data/lib/fonts/freemonoi.z +0 -0
  76. data/lib/fonts/freesans.ctg.z +0 -0
  77. data/lib/fonts/freesans.rb +0 -196
  78. data/lib/fonts/freesans.z +0 -0
  79. data/lib/fonts/freesansb.ctg.z +0 -0
  80. data/lib/fonts/freesansb.rb +0 -136
  81. data/lib/fonts/freesansb.z +0 -0
  82. data/lib/fonts/freesansbi.ctg.z +0 -0
  83. data/lib/fonts/freesansbi.rb +0 -108
  84. data/lib/fonts/freesansbi.z +0 -0
  85. data/lib/fonts/freesansi.ctg.z +0 -0
  86. data/lib/fonts/freesansi.rb +0 -136
  87. data/lib/fonts/freesansi.z +0 -0
  88. data/lib/fonts/freeserif.ctg.z +0 -0
  89. data/lib/fonts/freeserif.rb +0 -285
  90. data/lib/fonts/freeserif.z +0 -0
  91. data/lib/fonts/freeserifb.ctg.z +0 -0
  92. data/lib/fonts/freeserifb.rb +0 -164
  93. data/lib/fonts/freeserifb.z +0 -0
  94. data/lib/fonts/freeserifbi.ctg.z +0 -0
  95. data/lib/fonts/freeserifbi.rb +0 -130
  96. data/lib/fonts/freeserifbi.z +0 -0
  97. data/lib/fonts/freeserifi.ctg.z +0 -0
  98. data/lib/fonts/freeserifi.rb +0 -151
  99. data/lib/fonts/freeserifi.z +0 -0
  100. data/lib/fonts/helvetica.rb +0 -34
  101. data/lib/fonts/helveticab.rb +0 -34
  102. data/lib/fonts/helveticabi.rb +0 -34
  103. data/lib/fonts/helveticai.rb +0 -34
  104. data/lib/fonts/hysmyeongjostdmedium.rb +0 -31
  105. data/lib/fonts/kozgopromedium.rb +0 -47
  106. data/lib/fonts/kozminproregular.rb +0 -46
  107. data/lib/fonts/msungstdlight.rb +0 -23
  108. data/lib/fonts/sjis.rb +0 -834
  109. data/lib/fonts/stsongstdlight.rb +0 -23
  110. data/lib/fonts/symbol.rb +0 -33
  111. data/lib/fonts/times.rb +0 -34
  112. data/lib/fonts/timesb.rb +0 -34
  113. data/lib/fonts/timesbi.rb +0 -34
  114. data/lib/fonts/timesi.rb +0 -34
  115. data/lib/fonts/uni2cid_ac15.rb +0 -23613
  116. data/lib/fonts/uni2cid_ag15.rb +0 -30222
  117. data/lib/fonts/uni2cid_aj16.rb +0 -15705
  118. data/lib/fonts/uni2cid_ak12.rb +0 -17530
  119. data/lib/fonts/zapfdingbats.rb +0 -33
@@ -1,3 +1,3 @@
1
1
  module Rbpdf
2
- VERSION = "1.18.7"
2
+ VERSION = "1.19.0"
3
3
  end
@@ -15,9 +15,6 @@ Gem::Specification.new do |spec|
15
15
  spec.files = Dir.glob("lib/rbpdf/version.rb") +
16
16
  Dir.glob("lib/*.rb") +
17
17
  Dir.glob("lib/core/rmagick.rb") +
18
- Dir.glob("lib/fonts/*.{rb,z}") +
19
- Dir.glob("lib/fonts/freefont-*/*") +
20
- Dir.glob("lib/fonts/dejavu-fonts-ttf-*/{AUTHORS,BUGS,LICENSE,NEWS,README}") +
21
18
  Dir.glob("test/*") +
22
19
  ["Rakefile", "rbpdf.gemspec", "Gemfile",
23
20
  "CHANGELOG", "test_unicode.rbpdf", "README.md", "LICENSE.TXT",
@@ -31,7 +28,10 @@ Gem::Specification.new do |spec|
31
28
  spec.require_paths = ["lib"]
32
29
 
33
30
  spec.add_runtime_dependency "htmlentities", "= 4.3.1"
31
+ spec.add_runtime_dependency "rbpdf-font", "~> 1.19.0"
32
+ spec.required_ruby_version = '>= 1.8.7'
34
33
 
35
34
  spec.add_development_dependency "bundler", "~> 1.6"
36
35
  spec.add_development_dependency "rake"
36
+ spec.add_development_dependency "test-unit", "~> 3.0"
37
37
  end
@@ -0,0 +1,3 @@
1
+ RBPDFFontDescriptor.define('err_font1') do |font|
2
+ font[:type]='Type0'
3
+ end
@@ -0,0 +1,4 @@
1
+ RBPDFFontDescriptor.define('err_font2') do |font|
2
+ font[:type]='Type0'
3
+ font[:cw]={}
4
+ end
@@ -1,7 +1,7 @@
1
1
  # coding: ASCII-8BIT
2
2
  require 'test_helper'
3
3
 
4
- class RbpdfTest < ActiveSupport::TestCase
4
+ class RbpdfTest < Test::Unit::TestCase
5
5
  class MYPDF < RBPDF
6
6
  def UTF8StringToArray(str)
7
7
  super
@@ -15,6 +15,9 @@ class RbpdfTest < ActiveSupport::TestCase
15
15
  def rtl_text_dir
16
16
  super
17
17
  end
18
+ def get_current_font
19
+ return @current_font
20
+ end
18
21
  end
19
22
 
20
23
  test "RTL test" do
@@ -50,6 +53,19 @@ class RbpdfTest < ActiveSupport::TestCase
50
53
  assert_equal rtl, 'L'
51
54
  end
52
55
 
56
+ test "Bidi subset font test" do
57
+ pdf = MYPDF.new
58
+ ary_ucs4 = pdf.UTF8StringToArray("abc")
59
+ assert_equal [0x61, 0x62, 0x63], ary_ucs4
60
+ current_font = pdf.get_current_font
61
+ assert_equal 256, current_font['subsetchars'].length
62
+
63
+ ary_ucs4 = pdf.UTF8StringToArray("\xd7\xa2\xd7\x91\xd7\xa8\xd7\x99\xd7\xaa")
64
+ assert_equal [0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea], ary_ucs4
65
+ current_font = pdf.get_current_font
66
+ assert_equal 261, current_font['subsetchars'].compact.length
67
+ end
68
+
53
69
  test "Bidi" do
54
70
  pdf = MYPDF.new
55
71
 
@@ -62,8 +78,13 @@ class RbpdfTest < ActiveSupport::TestCase
62
78
  # UTF-8 string -> array of UCS4 charactor
63
79
  ary_ucs4 = pdf.UTF8StringToArray("abc")
64
80
  assert_equal [0x61, 0x62, 0x63], ary_ucs4
81
+ current_font = pdf.get_current_font
82
+ assert_equal 256, current_font['subsetchars'].compact.length
83
+
65
84
  ary_ucs4 = pdf.UTF8StringToArray("\xd7\xa2\xd7\x91\xd7\xa8\xd7\x99\xd7\xaa")
66
85
  assert_equal [0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea], ary_ucs4
86
+ current_font = pdf.get_current_font
87
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
67
88
 
68
89
  # Bidirectional Algorithm
69
90
  ascii_str = "abc"
@@ -77,21 +98,38 @@ class RbpdfTest < ActiveSupport::TestCase
77
98
 
78
99
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_str_1))
79
100
  assert_equal [0x5e2], ary_ucs4
101
+ current_font = pdf.get_current_font
102
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
103
+
80
104
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_str_1), utf8_str_1, 'R')
81
105
  assert_equal [0x5e2], ary_ucs4
106
+ current_font = pdf.get_current_font
107
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
82
108
 
83
109
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_str_2))
84
110
  assert_equal [0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2], ary_ucs4
111
+ current_font = pdf.get_current_font
112
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
113
+
85
114
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_str_2), utf8_str_2, 'R')
86
115
  assert_equal [0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2], ary_ucs4 ##
116
+ current_font = pdf.get_current_font
117
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
87
118
 
88
119
  ary_str = pdf.utf8Bidi(pdf.UTF8StringToArray(ascii_str + utf8_str_2), ascii_str + utf8_str_2, 'L')
89
120
  assert_equal [0x61, 0x62, 0x63, 0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2], ary_str
121
+ current_font = pdf.get_current_font
122
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
123
+
90
124
  ary_str = pdf.utf8Bidi(pdf.UTF8StringToArray(ascii_str + utf8_str_2)) # LTR
91
125
  assert_equal [0x61, 0x62, 0x63, 0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2], ary_str
92
- ary_str = pdf.utf8Bidi(pdf.UTF8StringToArray(ascii_str + utf8_str_2), ascii_str + utf8_str_2, 'R')
126
+ current_font = pdf.get_current_font
127
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
93
128
 
129
+ ary_str = pdf.utf8Bidi(pdf.UTF8StringToArray(ascii_str + utf8_str_2), ascii_str + utf8_str_2, 'R')
94
130
  assert_equal [0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2, 0x61, 0x62, 0x63], ary_str
131
+ current_font = pdf.get_current_font
132
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
95
133
 
96
134
  ary_str = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_str_2 + ascii_str), utf8_str_2 + ascii_str, 'L')
97
135
  assert_equal [0x5ea, 0x5d9, 0x5e8, 0x5d1, 0x5e2, 0x61, 0x62, 0x63], ary_str
@@ -233,28 +271,48 @@ class RbpdfTest < ActiveSupport::TestCase
233
271
  test "Bidi Persian Sunday test" do
234
272
  pdf = MYPDF.new
235
273
 
236
- utf8_persian_str_1 = "\xdb\x8c"
237
- utf8_persian_str_2 = "\xdb\x8c\xda\xa9"
238
- utf8_persian_str_3 = "\xdb\x8c\xda\xa9\xe2\x80\x8c"
239
- utf8_persian_str_4 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4"
240
- utf8_persian_str_5 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86"
241
- utf8_persian_str_6 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86\xd8\xa8"
242
- utf8_persian_str_7 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86\xd8\xa8\xd9\x87" # Sunday
274
+ utf8_persian_str_1 = "\xdb\x8c" # 0x06cc
275
+ utf8_persian_str_2 = "\xdb\x8c\xda\xa9" # 0x06cc, 0x06a9
276
+ utf8_persian_str_3 = "\xdb\x8c\xda\xa9\xe2\x80\x8c" # 0x06cc, 0x06a9, 0x200c
277
+ utf8_persian_str_4 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4" # 0x06cc, 0x06a9, 0x200c, 0x0634
278
+ utf8_persian_str_5 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86" # 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646
279
+ utf8_persian_str_6 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86\xd8\xa8" # 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646, 0x0628
280
+ utf8_persian_str_7 = "\xdb\x8c\xda\xa9\xe2\x80\x8c\xd8\xb4\xd9\x86\xd8\xa8\xd9\x87" # Sunday # 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646, 0x0628, 0x0647
243
281
 
244
282
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_1))
245
283
  assert_equal ary_ucs4, [0xfbfc]
284
+ current_font = pdf.get_current_font
285
+ assert_equal 256 + 2, current_font['subsetchars'].compact.length # 0x06cc, 0xfbfc
286
+
246
287
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_2))
247
288
  assert_equal ary_ucs4, [0xfb8f, 0xfbfe]
289
+ current_font = pdf.get_current_font
290
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length # 0xfbfc + 0x06cc, 0x06a9, 0xfb8f, 0xfbfe
291
+
248
292
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_3))
249
- assert_equal ary_ucs4, [0x200C, 0xfb8f, 0xfbfe]
293
+ assert_equal ary_ucs4, [0x200c, 0xfb8f, 0xfbfe]
294
+ current_font = pdf.get_current_font
295
+ assert_equal 256 + 6, current_font['subsetchars'].compact.length # 0xfbfc + 0x06cc, 0x06a9, 0x200c, 0xfb8f, 0xfbfe
296
+
250
297
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_4))
251
- assert_equal ary_ucs4, [0xfeb5, 0x200C, 0xfb8f, 0xfbfe]
298
+ assert_equal ary_ucs4, [0xfeb5, 0x200c, 0xfb8f, 0xfbfe]
299
+ current_font = pdf.get_current_font
300
+ assert_equal 256 + 8, current_font['subsetchars'].compact.length # 0xfbfc + 0x06cc, 0x06a9, 0x200c, 0x0634, 0xfeb5, 0xfb8f, 0xfbfe
301
+
252
302
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_5))
253
- assert_equal ary_ucs4, [0xfee6, 0xfeb7, 0x200C, 0xfb8f, 0xfbfe]
303
+ assert_equal ary_ucs4, [0xfee6, 0xfeb7, 0x200c, 0xfb8f, 0xfbfe]
304
+ current_font = pdf.get_current_font
305
+ assert_equal 256 + 11, current_font['subsetchars'].compact.length # 0xfbfc, 0xfeb5 + 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646, 0xfee6, 0xfeb7, 0xfb8f, 0xfbfe
306
+
254
307
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_6))
255
- assert_equal ary_ucs4, [0xfe90, 0xfee8, 0xfeb7, 0x200C, 0xfb8f, 0xfbfe]
308
+ assert_equal ary_ucs4, [0xfe90, 0xfee8, 0xfeb7, 0x200c, 0xfb8f, 0xfbfe]
309
+ current_font = pdf.get_current_font
310
+ assert_equal 256 + 14, current_font['subsetchars'].compact.length # 0xfbfc, 0xfeb5, 0xfee6 + 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646, 0x0628, 0xfe90, 0xfee8, 0xfeb7, 0xfb8f, 0xfbfe
311
+
256
312
  ary_ucs4 = pdf.utf8Bidi(pdf.UTF8StringToArray(utf8_persian_str_7))
257
- assert_equal ary_ucs4, [0xfeea, 0xfe92, 0xfee8, 0xfeb7, 0x200C, 0xfb8f, 0xfbfe]
313
+ assert_equal ary_ucs4, [0xfeea, 0xfe92, 0xfee8, 0xfeb7, 0x200c, 0xfb8f, 0xfbfe]
314
+ current_font = pdf.get_current_font
315
+ assert_equal 256 + 17, current_font['subsetchars'].compact.length # 0xfbfc, 0xfeb5, 0xfee6, 0xfe90 + 0x06cc, 0x06a9, 0x200c, 0x0634, 0x0646, 0x0628, 0x0647, 0xfeea, 0xfe92, 0xfee8, 0xfeb7, 0xfb8f, 0xfbfe
258
316
  end
259
317
 
260
318
  test "Bidi Persian Sunday forcertl test" do
@@ -349,6 +407,19 @@ class RbpdfTest < ActiveSupport::TestCase
349
407
  assert_equal [0x31, 0x32, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x31, 0x34], ary_ucs4 # 12/01/2014
350
408
  end
351
409
 
410
+ test "Bidi Japanese test" do
411
+ pdf = MYPDF.new
412
+
413
+ utf8_japanese_aiueo_str_1 = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a"
414
+
415
+ # UTF-8 string -> array of UCS4 charactor
416
+ ary_ucs4 = pdf.UTF8StringToArray(utf8_japanese_aiueo_str_1)
417
+ assert_equal [0x3042, 0x3044, 0x3046, 0x3048, 0x304a], ary_ucs4 # Japanese aiueo
418
+
419
+ current_font = pdf.get_current_font
420
+ assert_equal 256 + 5, current_font['subsetchars'].compact.length
421
+ end
422
+
352
423
  test "UTF8StringToArray cache_utf8_string_to_array test" do
353
424
  pdf = MYPDF.new
354
425
 
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfTest < ActiveSupport::TestCase
4
-
3
+ class RbpdfTest < Test::Unit::TestCase
5
4
  test "bookmark test" do
6
5
  pdf = RBPDF.new
7
6
  pdf.add_page()
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfTest < ActiveSupport::TestCase
4
-
3
+ class RbpdfTest < Test::Unit::TestCase
5
4
  class MYPDF < RBPDF
6
5
  def getCellCode(w, h=0, txt='', border=0, ln=0, align='', fill=0, link=nil, stretch=0, ignore_min_height=false, calign='T', valign='M')
7
6
  super
@@ -1,7 +1,7 @@
1
1
  # coding: ASCII-8BIT
2
2
  require 'test_helper'
3
3
 
4
- class RbpdfPageTest < ActiveSupport::TestCase
4
+ class RbpdfPageTest < Test::Unit::TestCase
5
5
  class MYPDF < RBPDF
6
6
  def getPageBuffer(page)
7
7
  super
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfCssTest < ActiveSupport::TestCase
3
+ class RbpdfCssTest < Test::Unit::TestCase
4
4
  class MYPDF < RBPDF
5
5
  def extractCSSproperties(cssdata)
6
6
  super
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfTest < ActiveSupport::TestCase
3
+ class RbpdfTest < Test::Unit::TestCase
4
4
  class MYPDF < RBPDF
5
5
  def getHtmlDomArray(html)
6
6
  super
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfFontFuncTest < ActiveSupport::TestCase
3
+ class RbpdfFontFuncTest < Test::Unit::TestCase
4
4
  class MYPDF < RBPDF
5
5
  def putAPXObject(w=0, h=0, stream='')
6
6
  super
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfFontStyleTest < ActiveSupport::TestCase
4
-
3
+ class RbpdfFontStyleTest < Test::Unit::TestCase
5
4
  class MYPDF < RBPDF
6
5
  def dounderline(x, y, txt)
7
6
  super
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfFontTest < ActiveSupport::TestCase
3
+ class RbpdfFontTest < Test::Unit::TestCase
4
4
  class MYPDF < RBPDF
5
5
  def putfonts()
6
6
  super
@@ -19,6 +19,20 @@ class RbpdfFontTest < ActiveSupport::TestCase
19
19
  end
20
20
  end
21
21
 
22
+ test "Font subsetting enable/disable test" do
23
+ pdf = MYPDF.new
24
+ subsetting = pdf.get_font_subsetting
25
+ assert_equal true, subsetting
26
+
27
+ pdf.set_font_subsetting(false)
28
+ subsetting = pdf.get_font_subsetting
29
+ assert_equal false, subsetting
30
+
31
+ pdf.set_font_subsetting(true)
32
+ subsetting = pdf.get_font_subsetting
33
+ assert_equal true, subsetting
34
+ end
35
+
22
36
  test "Font getFontsList" do
23
37
  pdf = MYPDF.new
24
38
  pdf.getFontsList()
@@ -86,8 +100,58 @@ class RbpdfFontTest < ActiveSupport::TestCase
86
100
  pdf.putfonts()
87
101
  end
88
102
 
103
+ test "TrueTypeUnicode Subset Font test" do
104
+ pdf = MYPDF.new
105
+ pdf.set_font_subsetting(true)
106
+
107
+ pdf.set_font('freesans', '', 18)
108
+ pdf.set_font('freesans', 'B', 18)
109
+ pdf.set_font('freesans', 'I', 18)
110
+ pdf.set_font('freesans', 'BI', 18)
111
+
112
+ pdf.set_font('freeserif', '', 18)
113
+ pdf.set_font('freeserif', 'B', 18)
114
+ pdf.set_font('freeserif', 'I', 18)
115
+ pdf.set_font('freeserif', 'BI', 18)
116
+
117
+ pdf.set_font('freemono', '', 18)
118
+ pdf.set_font('freemono', 'B', 18)
119
+ pdf.set_font('freemono', 'I', 18)
120
+ pdf.set_font('freemono', 'BI', 18)
121
+
122
+ pdf.set_font('dejavusans', '', 18)
123
+ pdf.set_font('dejavusans', 'B', 18)
124
+ pdf.set_font('dejavusans', 'I', 18)
125
+ pdf.set_font('dejavusans', 'BI', 18)
126
+
127
+ pdf.set_font('dejavusanscondensed', '', 18)
128
+ pdf.set_font('dejavusanscondensed', 'B', 18)
129
+ pdf.set_font('dejavusanscondensed', 'I', 18)
130
+ pdf.set_font('dejavusanscondensed', 'BI', 18)
131
+
132
+ pdf.set_font('dejavusansmono', '', 18)
133
+ pdf.set_font('dejavusansmono', 'B', 18)
134
+ pdf.set_font('dejavusansmono', 'I', 18)
135
+ pdf.set_font('dejavusansmono', 'BI', 18)
136
+
137
+ pdf.set_font('dejavuserif', '', 18)
138
+ pdf.set_font('dejavuserif', 'B', 18)
139
+ pdf.set_font('dejavuserif', 'I', 18)
140
+ pdf.set_font('dejavuserif', 'BI', 18)
141
+
142
+ pdf.set_font('dejavuserifcondensed', '', 18)
143
+ pdf.set_font('dejavuserifcondensed', 'B', 18)
144
+ pdf.set_font('dejavuserifcondensed', 'I', 18)
145
+ pdf.set_font('dejavuserifcondensed', 'BI', 18)
146
+
147
+ pdf.set_font('dejavusansextralight', '', 18)
148
+
149
+ pdf.putfonts()
150
+ end
151
+
89
152
  test "TrueTypeUnicode Font test" do
90
153
  pdf = MYPDF.new
154
+ pdf.set_font_subsetting(false)
91
155
 
92
156
  pdf.set_font('freesans', '', 18)
93
157
  pdf.set_font('freesans', 'B', 18)
@@ -109,6 +173,28 @@ class RbpdfFontTest < ActiveSupport::TestCase
109
173
  pdf.set_font('dejavusans', 'I', 18)
110
174
  pdf.set_font('dejavusans', 'BI', 18)
111
175
 
176
+ pdf.set_font('dejavusanscondensed', '', 18)
177
+ pdf.set_font('dejavusanscondensed', 'B', 18)
178
+ pdf.set_font('dejavusanscondensed', 'I', 18)
179
+ pdf.set_font('dejavusanscondensed', 'BI', 18)
180
+
181
+ pdf.set_font('dejavusansmono', '', 18)
182
+ pdf.set_font('dejavusansmono', 'B', 18)
183
+ pdf.set_font('dejavusansmono', 'I', 18)
184
+ pdf.set_font('dejavusansmono', 'BI', 18)
185
+
186
+ pdf.set_font('dejavuserif', '', 18)
187
+ pdf.set_font('dejavuserif', 'B', 18)
188
+ pdf.set_font('dejavuserif', 'I', 18)
189
+ pdf.set_font('dejavuserif', 'BI', 18)
190
+
191
+ pdf.set_font('dejavuserifcondensed', '', 18)
192
+ pdf.set_font('dejavuserifcondensed', 'B', 18)
193
+ pdf.set_font('dejavuserifcondensed', 'I', 18)
194
+ pdf.set_font('dejavuserifcondensed', 'BI', 18)
195
+
196
+ pdf.set_font('dejavusansextralight', '', 18)
197
+
112
198
  pdf.putfonts()
113
199
  end
114
200
 
@@ -178,4 +264,28 @@ class RbpdfFontTest < ActiveSupport::TestCase
178
264
 
179
265
  pdf.putfonts()
180
266
  end
267
+
268
+ test "Font Error test" do
269
+ pdf = RBPDF.new
270
+ RBPDF.k_path_fonts = File.join File.dirname(__FILE__)
271
+
272
+ err = assert_raises(RuntimeError) {
273
+ pdf.set_font('err_font', '', 18)
274
+ }
275
+ assert_equal 'RBPDF error: Could not include font definition file: err_font', err.message
276
+
277
+ err = assert_raises(RuntimeError) {
278
+ pdf.set_font('err_font1', '', 18)
279
+ }
280
+ assert_match /RBPDF error: The font definition file has a bad format: .*err_font1.rb/, err.message
281
+
282
+ err = assert_raises(RuntimeError) {
283
+ pdf.set_font('err_font2', '', 18)
284
+ }
285
+ assert_equal 'RBPDF error: Unknow font type: Type0', err.message
286
+
287
+ # Font path reset test
288
+ pdf = RBPDF.new
289
+ pdf.set_font('helvetica', '', 18)
290
+ end
181
291
  end
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfFormatTest < ActiveSupport::TestCase
4
-
3
+ class RbpdfFormatTest < Test::Unit::TestCase
5
4
  test "set_page_orientation" do
6
5
  pdf = RBPDF.new
7
6
 
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RbpdfTest < ActiveSupport::TestCase
3
+ class RbpdfTest < Test::Unit::TestCase
4
4
  class MYPDF < RBPDF
5
5
  def getSpaceString
6
6
  super
@@ -0,0 +1,107 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < Test::Unit::TestCase
4
+ class MYPDF < RBPDF
5
+ def getPageBuffer(page)
6
+ super
7
+ end
8
+ end
9
+
10
+ test "anchor with text inside" do
11
+ pdf = RBPDF.new
12
+ pdf.add_page()
13
+
14
+ htmlcontent = '<a name="foo">HTML Example</a>'
15
+ pdf.write_html(htmlcontent, true, 0, true, 0)
16
+
17
+ position = pdf.get_html_anchor_position('foo')
18
+ assert_equal position, [1, 10.001249999999999]
19
+ end
20
+
21
+ test "anchor with id" do
22
+ pdf = RBPDF.new
23
+ pdf.add_page()
24
+
25
+ htmlcontent = '<a id="foo">HTML Example</a>'
26
+ pdf.write_html(htmlcontent, true, 0, true, 0)
27
+
28
+ position = pdf.get_html_anchor_position('foo')
29
+ assert_equal position, [1, 10.001249999999999]
30
+ end
31
+
32
+ test "empty anchor" do
33
+ pdf = RBPDF.new
34
+ pdf.add_page()
35
+
36
+ htmlcontent = '<a id="foo"></a>'
37
+ pdf.write_html(htmlcontent, true, 0, true, 0)
38
+
39
+ position = pdf.get_html_anchor_position('foo')
40
+ assert_equal position, [1, 10.001249999999999]
41
+ end
42
+
43
+
44
+ test "anchor with overtical offset" do
45
+ pdf = RBPDF.new
46
+ pdf.add_page()
47
+
48
+ htmlcontent = '<br><br><br><br><br><br><br><br><br><br><a id="foo"></a>'
49
+ pdf.write_html(htmlcontent, true, 0, true, 0)
50
+
51
+ position = pdf.get_html_anchor_position('foo')
52
+ assert_equal position, [1, 57.626249999999985]
53
+ end
54
+
55
+
56
+ test "on the second page" do
57
+ pdf = RBPDF.new
58
+ pdf.add_page()
59
+ htmlcontent = '1<br><br><br><br><br><br><br><br><br><br> 2<br><br><br><br><br><br><br><br><br><br> 3<br><br><br><br><br><br><br><br><br><br> 4<br><br><br><br><br><br><br><br><br><br> 5<br><br><br><br><br><br><br><br><br><br> 6<br><br><br><br><br><br><br><br><br><br> 7<br><br><br><br><br><br><br><br><br><br> 8<br><br><br><br><br><br><br><br><br><br> 9<br><br><br><br><br><br><br><br><br><br> 10<br><br><br><br><br><br><br><br><br><br> 11<br><br><br><br><br><br><br><br><br><br>'
60
+ pdf.write_html(htmlcontent, true, 0, true, 0)
61
+
62
+ htmlcontent = '<a id="foo"></a>'
63
+ pdf.write_html(htmlcontent, true, 0, true, 0)
64
+
65
+ position = pdf.get_html_anchor_position('foo')
66
+ assert_equal position, [3, 68.20958333333331]
67
+ end
68
+
69
+
70
+ test "maps when anchor after link" do
71
+ pdf = RBPDF.new
72
+ pdf.add_page()
73
+
74
+ htmlcontent = '<a href="#foo">FooLink</a>'
75
+ pdf.write_html(htmlcontent, true, 0, true, 0)
76
+
77
+ htmlcontent = '1<br><br><br><br><br><br><br><br><br><br> 2<br><br><br><br><br><br><br><br><br><br> 3<br><br><br><br><br><br><br><br><br><br> 4<br><br><br><br><br><br><br><br><br><br> 5<br><br><br><br><br><br><br><br><br><br> 6<br><br><br><br><br><br><br><br><br><br> 7<br><br><br><br><br><br><br><br><br><br> 8<br><br><br><br><br><br><br><br><br><br> 9<br><br><br><br><br><br><br><br><br><br> 10<br><br><br><br><br><br><br><br><br><br> 11<br><br><br><br><br><br><br><br><br><br>'
78
+ pdf.write_html(htmlcontent, true, 0, true, 0)
79
+
80
+ htmlcontent = '<a id="foo"></a>'
81
+ pdf.write_html(htmlcontent, true, 0, true, 0)
82
+
83
+ pdf.send(:mapLinksToHtmlAnchors)
84
+ link_position = pdf.instance_variable_get(:@links)[1]
85
+ assert_equal link_position, [3, 73.50124999999998]
86
+ end
87
+
88
+ test "maps when anchor before link" do
89
+ pdf = RBPDF.new
90
+ pdf.add_page()
91
+
92
+ htmlcontent = '<a id="foo"></a>'
93
+ pdf.write_html(htmlcontent, true, 0, true, 0)
94
+
95
+ htmlcontent = '1<br><br><br><br><br><br><br><br><br><br> 2<br><br><br><br><br><br><br><br><br><br> 3<br><br><br><br><br><br><br><br><br><br> 4<br><br><br><br><br><br><br><br><br><br> 5<br><br><br><br><br><br><br><br><br><br> 6<br><br><br><br><br><br><br><br><br><br> 7<br><br><br><br><br><br><br><br><br><br> 8<br><br><br><br><br><br><br><br><br><br> 9<br><br><br><br><br><br><br><br><br><br> 10<br><br><br><br><br><br><br><br><br><br> 11<br><br><br><br><br><br><br><br><br><br>'
96
+ pdf.write_html(htmlcontent, true, 0, true, 0)
97
+
98
+ htmlcontent = '<a href="#foo">FooLink</a>'
99
+ pdf.write_html(htmlcontent, true, 0, true, 0)
100
+
101
+ pdf.send(:mapLinksToHtmlAnchors)
102
+
103
+ link_position = pdf.instance_variable_get(:@links)[1]
104
+ assert_equal link_position, [1, 10.001249999999999]
105
+ end
106
+
107
+ end