rbpdf 1.18.7 → 1.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +12 -0
- data/Gemfile +3 -0
- data/README.md +1 -5
- data/Rakefile +10 -0
- data/lib/rbpdf.rb +715 -222
- data/lib/rbpdf/version.rb +1 -1
- data/rbpdf.gemspec +3 -3
- data/test/err_font1.rb +3 -0
- data/test/err_font2.rb +4 -0
- data/test/rbpdf_bidi_test.rb +85 -14
- data/test/rbpdf_bookmark_test.rb +1 -2
- data/test/rbpdf_cell_test.rb +1 -2
- data/test/rbpdf_content_test.rb +1 -1
- data/test/rbpdf_css_test.rb +1 -1
- data/test/rbpdf_dom_test.rb +1 -1
- data/test/rbpdf_font_func_test.rb +1 -1
- data/test/rbpdf_font_style_test.rb +1 -2
- data/test/rbpdf_font_test.rb +111 -1
- data/test/rbpdf_format_test.rb +1 -2
- data/test/rbpdf_func_test.rb +1 -1
- data/test/rbpdf_html_anchor_test.rb +107 -0
- data/test/rbpdf_html_func_test.rb +1 -1
- data/test/rbpdf_html_test.rb +196 -349
- data/test/rbpdf_htmlcell_test.rb +1 -1
- data/test/rbpdf_image_rmagick_test.rb +1 -2
- data/test/rbpdf_image_test.rb +1 -2
- data/test/rbpdf_test.rb +1 -1
- data/test/rbpdf_transaction_test.rb +1 -1
- data/test/rbpdf_viewerpreferences_test.rb +1 -1
- data/test/rbpdf_write_test.rb +1 -2
- data/test/test_helper.rb +2 -0
- metadata +38 -89
- data/lib/fonts/README.z +0 -2
- data/lib/fonts/arialunicid0_cw.rb +0 -1738
- data/lib/fonts/cid0cs.rb +0 -21
- data/lib/fonts/cid0ct.rb +0 -21
- data/lib/fonts/cid0jp.rb +0 -21
- data/lib/fonts/cid0kr.rb +0 -21
- data/lib/fonts/courier.rb +0 -37
- data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +0 -53
- data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +0 -3
- data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +0 -99
- data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +0 -1315
- data/lib/fonts/dejavu-fonts-ttf-2.33/README +0 -59
- data/lib/fonts/dejavusans.ctg.z +0 -0
- data/lib/fonts/dejavusans.rb +0 -338
- data/lib/fonts/dejavusans.z +0 -0
- data/lib/fonts/dejavusansb.ctg.z +0 -0
- data/lib/fonts/dejavusansb.rb +0 -330
- data/lib/fonts/dejavusansb.z +0 -0
- data/lib/fonts/dejavusansbi.ctg.z +0 -0
- data/lib/fonts/dejavusansbi.rb +0 -297
- data/lib/fonts/dejavusansbi.z +0 -0
- data/lib/fonts/dejavusansi.ctg.z +0 -0
- data/lib/fonts/dejavusansi.rb +0 -305
- data/lib/fonts/dejavusansi.z +0 -0
- data/lib/fonts/freefont-20080912/AUTHORS +0 -191
- data/lib/fonts/freefont-20080912/COPYING +0 -341
- data/lib/fonts/freefont-20080912/CREDITS +0 -506
- data/lib/fonts/freefont-20080912/ChangeLog +0 -3320
- data/lib/fonts/freefont-20080912/INSTALL +0 -81
- data/lib/fonts/freefont-20080912/README +0 -108
- data/lib/fonts/freemono.ctg.z +0 -0
- data/lib/fonts/freemono.rb +0 -203
- data/lib/fonts/freemono.z +0 -0
- data/lib/fonts/freemonob.ctg.z +0 -0
- data/lib/fonts/freemonob.rb +0 -120
- data/lib/fonts/freemonob.z +0 -0
- data/lib/fonts/freemonobi.ctg.z +0 -0
- data/lib/fonts/freemonobi.rb +0 -84
- data/lib/fonts/freemonobi.z +0 -0
- data/lib/fonts/freemonoi.ctg.z +0 -0
- data/lib/fonts/freemonoi.rb +0 -136
- data/lib/fonts/freemonoi.z +0 -0
- data/lib/fonts/freesans.ctg.z +0 -0
- data/lib/fonts/freesans.rb +0 -196
- data/lib/fonts/freesans.z +0 -0
- data/lib/fonts/freesansb.ctg.z +0 -0
- data/lib/fonts/freesansb.rb +0 -136
- data/lib/fonts/freesansb.z +0 -0
- data/lib/fonts/freesansbi.ctg.z +0 -0
- data/lib/fonts/freesansbi.rb +0 -108
- data/lib/fonts/freesansbi.z +0 -0
- data/lib/fonts/freesansi.ctg.z +0 -0
- data/lib/fonts/freesansi.rb +0 -136
- data/lib/fonts/freesansi.z +0 -0
- data/lib/fonts/freeserif.ctg.z +0 -0
- data/lib/fonts/freeserif.rb +0 -285
- data/lib/fonts/freeserif.z +0 -0
- data/lib/fonts/freeserifb.ctg.z +0 -0
- data/lib/fonts/freeserifb.rb +0 -164
- data/lib/fonts/freeserifb.z +0 -0
- data/lib/fonts/freeserifbi.ctg.z +0 -0
- data/lib/fonts/freeserifbi.rb +0 -130
- data/lib/fonts/freeserifbi.z +0 -0
- data/lib/fonts/freeserifi.ctg.z +0 -0
- data/lib/fonts/freeserifi.rb +0 -151
- data/lib/fonts/freeserifi.z +0 -0
- data/lib/fonts/helvetica.rb +0 -34
- data/lib/fonts/helveticab.rb +0 -34
- data/lib/fonts/helveticabi.rb +0 -34
- data/lib/fonts/helveticai.rb +0 -34
- data/lib/fonts/hysmyeongjostdmedium.rb +0 -31
- data/lib/fonts/kozgopromedium.rb +0 -47
- data/lib/fonts/kozminproregular.rb +0 -46
- data/lib/fonts/msungstdlight.rb +0 -23
- data/lib/fonts/sjis.rb +0 -834
- data/lib/fonts/stsongstdlight.rb +0 -23
- data/lib/fonts/symbol.rb +0 -33
- data/lib/fonts/times.rb +0 -34
- data/lib/fonts/timesb.rb +0 -34
- data/lib/fonts/timesbi.rb +0 -34
- data/lib/fonts/timesi.rb +0 -34
- data/lib/fonts/uni2cid_ac15.rb +0 -23613
- data/lib/fonts/uni2cid_ag15.rb +0 -30222
- data/lib/fonts/uni2cid_aj16.rb +0 -15705
- data/lib/fonts/uni2cid_ak12.rb +0 -17530
- data/lib/fonts/zapfdingbats.rb +0 -33
data/lib/rbpdf/version.rb
CHANGED
data/rbpdf.gemspec
CHANGED
@@ -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
|
data/test/err_font1.rb
ADDED
data/test/err_font2.rb
ADDED
data/test/rbpdf_bidi_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: ASCII-8BIT
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
|
-
class RbpdfTest <
|
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
|
-
|
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, [
|
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,
|
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,
|
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,
|
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,
|
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
|
|
data/test/rbpdf_bookmark_test.rb
CHANGED
data/test/rbpdf_cell_test.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class RbpdfTest <
|
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
|
data/test/rbpdf_content_test.rb
CHANGED
data/test/rbpdf_css_test.rb
CHANGED
data/test/rbpdf_dom_test.rb
CHANGED
data/test/rbpdf_font_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class RbpdfFontTest <
|
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
|
data/test/rbpdf_format_test.rb
CHANGED
data/test/rbpdf_func_test.rb
CHANGED
@@ -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
|