rbpdf 1.20.0 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +4 -0
- data/lib/rbpdf/version.rb +1 -1
- data/rbpdf.gemspec +1 -2
- metadata +4 -90
- data/test/err_font1.rb +0 -7
- data/test/err_font2.rb +0 -8
- data/test/input.jpg +0 -0
- data/test/json: +0 -0
- data/test/logo_rbpdf_8bit .png +0 -0
- data/test/logo_rbpdf_8bit+ .png +0 -0
- data/test/logo_rbpdf_8bit.gif +0 -0
- data/test/logo_rbpdf_8bit.jpg +0 -0
- data/test/logo_rbpdf_8bit.png +0 -0
- data/test/logo_rbpdf_8bit_alpha.gif +0 -0
- data/test/logo_rbpdf_mono_gray.jpg +0 -0
- data/test/logo_rbpdf_mono_gray.png +0 -0
- data/test/logo_rbpdf_mono_rgb.jpg +0 -0
- data/test/logo_rbpdf_mono_rgb.png +0 -0
- data/test/output.png +0 -0
- data/test/png_test_alpha.png +0 -0
- data/test/png_test_msk_alpha.png +0 -0
- data/test/png_test_non_alpha.png +0 -0
- data/test/rbpdf_bidi_test.rb +0 -453
- data/test/rbpdf_bookmark_test.rb +0 -66
- data/test/rbpdf_cell_test.rb +0 -231
- data/test/rbpdf_content_test.rb +0 -213
- data/test/rbpdf_css_test.rb +0 -640
- data/test/rbpdf_dom_test.rb +0 -272
- data/test/rbpdf_examples_test.rb +0 -83
- data/test/rbpdf_font_func_test.rb +0 -45
- data/test/rbpdf_font_style_test.rb +0 -37
- data/test/rbpdf_font_test.rb +0 -308
- data/test/rbpdf_format_test.rb +0 -30
- data/test/rbpdf_func_test.rb +0 -139
- data/test/rbpdf_html_anchor_test.rb +0 -105
- data/test/rbpdf_html_func_test.rb +0 -170
- data/test/rbpdf_html_test.rb +0 -658
- data/test/rbpdf_htmlcell_test.rb +0 -60
- data/test/rbpdf_http_test.rb +0 -76
- data/test/rbpdf_image_rmagick_test.rb +0 -170
- data/test/rbpdf_image_test.rb +0 -174
- data/test/rbpdf_test.rb +0 -375
- data/test/rbpdf_transaction_test.rb +0 -203
- data/test/rbpdf_viewerpreferences_test.rb +0 -41
- data/test/rbpdf_write_test.rb +0 -229
- data/test/test.rb +0 -22
- data/test/test_helper.rb +0 -9
data/test/rbpdf_format_test.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 NAITOH Jun
|
2
|
-
# Released under the MIT license
|
3
|
-
# http://www.opensource.org/licenses/MIT
|
4
|
-
|
5
|
-
require 'test_helper'
|
6
|
-
|
7
|
-
class RbpdfFormatTest < Test::Unit::TestCase
|
8
|
-
test "set_page_orientation" do
|
9
|
-
pdf = RBPDF.new
|
10
|
-
|
11
|
-
pagedim = pdf.set_page_orientation('')
|
12
|
-
assert_equal 'P', pagedim['or']
|
13
|
-
assert_equal true, pagedim['pb']
|
14
|
-
assert_equal nil, pagedim['olm']
|
15
|
-
assert_equal nil, pagedim['orm']
|
16
|
-
assert_in_delta 20, pagedim['bm'], 0.1
|
17
|
-
|
18
|
-
pagedim = pdf.set_page_orientation('P')
|
19
|
-
assert_equal 'P', pagedim['or']
|
20
|
-
|
21
|
-
pagedim = pdf.set_page_orientation('L', false)
|
22
|
-
assert_equal 'L', pagedim['or']
|
23
|
-
assert_equal false, pagedim['pb']
|
24
|
-
|
25
|
-
pagedim = pdf.set_page_orientation('P', true, 5)
|
26
|
-
assert_equal 'P', pagedim['or']
|
27
|
-
assert_equal true, pagedim['pb']
|
28
|
-
assert_equal 5, pagedim['bm']
|
29
|
-
end
|
30
|
-
end
|
data/test/rbpdf_func_test.rb
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 NAITOH Jun
|
2
|
-
# Released under the MIT license
|
3
|
-
# http://www.opensource.org/licenses/MIT
|
4
|
-
|
5
|
-
require 'test_helper'
|
6
|
-
|
7
|
-
class RbpdfTest < Test::Unit::TestCase
|
8
|
-
class MYPDF < RBPDF
|
9
|
-
def getSpaceString
|
10
|
-
super
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
test "get_html_unit_to_units test" do
|
15
|
-
pdf = RBPDF.new
|
16
|
-
unit = pdf.get_html_unit_to_units("100", 1)
|
17
|
-
assert_in_delta 35.27, unit, 0.01
|
18
|
-
|
19
|
-
unit = pdf.get_html_unit_to_units("100px", 1, 'px', false)
|
20
|
-
assert_in_delta 35.27, unit, 0.01
|
21
|
-
|
22
|
-
unit = pdf.get_html_unit_to_units(100, 1, 'pt', false)
|
23
|
-
assert_in_delta 35.27, unit, 0.01
|
24
|
-
|
25
|
-
unit = pdf.get_html_unit_to_units(100.0, 1, 'pt', false)
|
26
|
-
assert_in_delta 35.27, unit, 0.01
|
27
|
-
|
28
|
-
unit = pdf.get_html_unit_to_units("100.0", 1, 'pt', false)
|
29
|
-
assert_in_delta 35.27, unit, 0.01
|
30
|
-
|
31
|
-
unit = pdf.get_html_unit_to_units("200", 1, '%', false)
|
32
|
-
assert_equal 2.0, unit
|
33
|
-
|
34
|
-
unit = pdf.get_html_unit_to_units("400%", 1, '%', false)
|
35
|
-
assert_equal 4.0, unit
|
36
|
-
|
37
|
-
unit = pdf.get_html_unit_to_units("10", 1, '%', false)
|
38
|
-
assert_equal 0.1, unit
|
39
|
-
|
40
|
-
unit = pdf.get_html_unit_to_units("10mm", 1, '%', false)
|
41
|
-
assert_in_delta 10, unit, 0.01
|
42
|
-
|
43
|
-
unit = pdf.get_html_unit_to_units("10", 1, 'mm', false)
|
44
|
-
assert_in_delta 10, unit, 0.01
|
45
|
-
|
46
|
-
unit = pdf.get_html_unit_to_units(10, 1, 'mm', false)
|
47
|
-
assert_in_delta 10, unit, 0.01
|
48
|
-
|
49
|
-
unit = pdf.get_html_unit_to_units("1", 1, 'cm', false)
|
50
|
-
assert_in_delta 10, unit, 0.01
|
51
|
-
|
52
|
-
unit = pdf.get_html_unit_to_units(10, 1, 'em', false)
|
53
|
-
assert_equal 10, unit
|
54
|
-
|
55
|
-
unit = pdf.get_html_unit_to_units(10, 2, 'em', false)
|
56
|
-
assert_equal 20, unit
|
57
|
-
end
|
58
|
-
|
59
|
-
test "getSpaceString test" do
|
60
|
-
pdf = MYPDF.new
|
61
|
-
spacestr = pdf.getSpaceString()
|
62
|
-
assert_equal 32.chr, spacestr
|
63
|
-
|
64
|
-
pdf.set_font('freesans', '', 18)
|
65
|
-
spacestr = pdf.getSpaceString()
|
66
|
-
assert_equal 0.chr + 32.chr, spacestr
|
67
|
-
end
|
68
|
-
|
69
|
-
test "revstrpos test" do
|
70
|
-
pdf = RBPDF.new
|
71
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd')
|
72
|
-
assert_equal 2, pos
|
73
|
-
|
74
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd ')
|
75
|
-
assert_equal 2, pos
|
76
|
-
|
77
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd')
|
78
|
-
assert_equal 12, pos
|
79
|
-
|
80
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'zy')
|
81
|
-
assert_equal nil, pos
|
82
|
-
end
|
83
|
-
|
84
|
-
test "revstrpos offset test 1" do
|
85
|
-
pdf = RBPDF.new
|
86
|
-
|
87
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd', 3) # 'abc'
|
88
|
-
assert_equal pos, nil
|
89
|
-
|
90
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd', 4) # 'abcd'
|
91
|
-
assert_equal pos, 2
|
92
|
-
|
93
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 3) # 'abc'
|
94
|
-
assert_equal pos, nil
|
95
|
-
|
96
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 4) # 'abcd'
|
97
|
-
assert_equal pos, 2
|
98
|
-
|
99
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 13) # 'abcd efgh abc'
|
100
|
-
assert_equal pos, 2
|
101
|
-
|
102
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 14) # 'abcd efgh abcd'
|
103
|
-
assert_equal pos, 12
|
104
|
-
end
|
105
|
-
|
106
|
-
test "revstrpos offset test 2" do
|
107
|
-
pdf = RBPDF.new
|
108
|
-
|
109
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd', -6) # 'abcd'
|
110
|
-
assert_equal pos, 2
|
111
|
-
|
112
|
-
pos = pdf.revstrpos('abcd efgh ', 'cd', -7) # 'abc'
|
113
|
-
assert_equal pos, nil
|
114
|
-
|
115
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', -4) # 'abcd efgh abcd'
|
116
|
-
assert_equal pos, 12
|
117
|
-
|
118
|
-
pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', -5) # 'abcd efgh abc'
|
119
|
-
assert_equal pos, 2
|
120
|
-
end
|
121
|
-
|
122
|
-
test "set_line_style Basic test" do
|
123
|
-
pdf = RBPDF.new
|
124
|
-
|
125
|
-
pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => [0, 0, 0]})
|
126
|
-
pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => '', 'phase' => 0, 'color' => [255, 0, 0]})
|
127
|
-
pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => '1,2,3,4', 'phase' => 0, 'color' => [255, 0, 0]})
|
128
|
-
pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 'a', 'phase' => 0, 'color' => [255, 0, 0]}) # Invalid
|
129
|
-
end
|
130
|
-
|
131
|
-
test "get_string_width encoding test" do
|
132
|
-
return unless 'test'.respond_to?(:force_encoding)
|
133
|
-
|
134
|
-
pdf = RBPDF.new
|
135
|
-
str = 'test'.force_encoding('UTF-8')
|
136
|
-
pdf.get_string_width(str)
|
137
|
-
assert_equal 'UTF-8', str.encoding.to_s
|
138
|
-
end
|
139
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 NAITOH Jun
|
2
|
-
# Released under the MIT license
|
3
|
-
# http://www.opensource.org/licenses/MIT
|
4
|
-
|
5
|
-
require 'test_helper'
|
6
|
-
|
7
|
-
class RbpdfTest < Test::Unit::TestCase
|
8
|
-
test "anchor with text inside" do
|
9
|
-
pdf = RBPDF.new
|
10
|
-
pdf.add_page()
|
11
|
-
|
12
|
-
htmlcontent = '<a name="foo">HTML Example</a>'
|
13
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
14
|
-
|
15
|
-
position = pdf.get_html_anchor_position('foo')
|
16
|
-
assert_equal [1, 10.001249999999999], position
|
17
|
-
end
|
18
|
-
|
19
|
-
test "anchor with id" do
|
20
|
-
pdf = RBPDF.new
|
21
|
-
pdf.add_page()
|
22
|
-
|
23
|
-
htmlcontent = '<a id="foo">HTML Example</a>'
|
24
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
25
|
-
|
26
|
-
position = pdf.get_html_anchor_position('foo')
|
27
|
-
assert_equal [1, 10.001249999999999], position
|
28
|
-
end
|
29
|
-
|
30
|
-
test "empty anchor" do
|
31
|
-
pdf = RBPDF.new
|
32
|
-
pdf.add_page()
|
33
|
-
|
34
|
-
htmlcontent = '<a id="foo"></a>'
|
35
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
36
|
-
|
37
|
-
position = pdf.get_html_anchor_position('foo')
|
38
|
-
assert_equal [1, 10.001249999999999], position
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
test "anchor with overtical offset" do
|
43
|
-
pdf = RBPDF.new
|
44
|
-
pdf.add_page()
|
45
|
-
|
46
|
-
htmlcontent = '<br><br><br><br><br><br><br><br><br><br><a id="foo"></a>'
|
47
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
48
|
-
|
49
|
-
position = pdf.get_html_anchor_position('foo')
|
50
|
-
assert_equal [1, 57.626249999999985], position
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
test "on the second page" do
|
55
|
-
pdf = RBPDF.new
|
56
|
-
pdf.add_page()
|
57
|
-
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>'
|
58
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
59
|
-
|
60
|
-
htmlcontent = '<a id="foo"></a>'
|
61
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
62
|
-
|
63
|
-
position = pdf.get_html_anchor_position('foo')
|
64
|
-
assert_equal [3, 68.20958333333331], position
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
test "maps when anchor after link" do
|
69
|
-
pdf = RBPDF.new
|
70
|
-
pdf.add_page()
|
71
|
-
|
72
|
-
htmlcontent = '<a href="#foo">FooLink</a>'
|
73
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
74
|
-
|
75
|
-
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>'
|
76
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
77
|
-
|
78
|
-
htmlcontent = '<a id="foo"></a>'
|
79
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
80
|
-
|
81
|
-
pdf.send(:mapLinksToHtmlAnchors)
|
82
|
-
link_position = pdf.instance_variable_get(:@links)[1]
|
83
|
-
assert_equal [3, 73.50124999999998], link_position
|
84
|
-
end
|
85
|
-
|
86
|
-
test "maps when anchor before link" do
|
87
|
-
pdf = RBPDF.new
|
88
|
-
pdf.add_page()
|
89
|
-
|
90
|
-
htmlcontent = '<a id="foo"></a>'
|
91
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
92
|
-
|
93
|
-
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>'
|
94
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
95
|
-
|
96
|
-
htmlcontent = '<a href="#foo">FooLink</a>'
|
97
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
98
|
-
|
99
|
-
pdf.send(:mapLinksToHtmlAnchors)
|
100
|
-
|
101
|
-
link_position = pdf.instance_variable_get(:@links)[1]
|
102
|
-
assert_equal [1, 10.001249999999999], link_position
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
@@ -1,170 +0,0 @@
|
|
1
|
-
# Copyright (c) 2011-2017 NAITOH Jun
|
2
|
-
# Released under the MIT license
|
3
|
-
# http://www.opensource.org/licenses/MIT
|
4
|
-
|
5
|
-
require 'test_helper'
|
6
|
-
|
7
|
-
class RbpdfTest < Test::Unit::TestCase
|
8
|
-
class MYPDF < RBPDF
|
9
|
-
def addHTMLVertSpace(hbz, hb, cell, firstorlast)
|
10
|
-
super
|
11
|
-
end
|
12
|
-
def sanitize_html(html)
|
13
|
-
super
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
test "html func addHTMLVertSpace empty lines test" do
|
18
|
-
pdf = MYPDF.new
|
19
|
-
pdf.add_page()
|
20
|
-
|
21
|
-
# same line, start position
|
22
|
-
x1 = pdf.get_x
|
23
|
-
pdf.set_x(x1 + 10)
|
24
|
-
y1 = pdf.get_y
|
25
|
-
pdf.addHTMLVertSpace(1, 0, false, true)
|
26
|
-
x2 = pdf.get_x
|
27
|
-
y2 = pdf.get_y
|
28
|
-
assert_equal x1, x2
|
29
|
-
assert_equal y1, y2
|
30
|
-
|
31
|
-
# same line, @c_margin position
|
32
|
-
margins = pdf.get_margins
|
33
|
-
|
34
|
-
x1 = pdf.get_x
|
35
|
-
y1 = pdf.get_y
|
36
|
-
pdf.addHTMLVertSpace(1, 0, true, true)
|
37
|
-
x2 = pdf.get_x
|
38
|
-
y2 = pdf.get_y
|
39
|
-
assert_equal x1 + margins['cell'], x2
|
40
|
-
assert_equal y1, y2
|
41
|
-
end
|
42
|
-
|
43
|
-
test "html func addHTMLVertSpace add line test" do
|
44
|
-
pdf = MYPDF.new
|
45
|
-
pdf.add_page()
|
46
|
-
|
47
|
-
# next line, start position
|
48
|
-
x1 = pdf.get_x
|
49
|
-
pdf.set_x(x1 + 10)
|
50
|
-
y1 = pdf.get_y
|
51
|
-
pdf.addHTMLVertSpace(5, 0, false, false)
|
52
|
-
x2 = pdf.get_x
|
53
|
-
y2 = pdf.get_y
|
54
|
-
assert_equal x1, x2
|
55
|
-
assert_equal y1 + 5, y2
|
56
|
-
|
57
|
-
# next line, @c_margin position
|
58
|
-
margins = pdf.get_margins
|
59
|
-
|
60
|
-
x1 = pdf.get_x
|
61
|
-
y1 = pdf.get_y
|
62
|
-
pdf.addHTMLVertSpace(5, 0, true, false)
|
63
|
-
x2 = pdf.get_x
|
64
|
-
y2 = pdf.get_y
|
65
|
-
assert_equal x1 + margins['cell'], x2
|
66
|
-
assert_equal y1 + 5, y2
|
67
|
-
end
|
68
|
-
|
69
|
-
test "html func addHTMLVertSpace height of the break test 1" do
|
70
|
-
pdf = MYPDF.new
|
71
|
-
pdf.add_page()
|
72
|
-
|
73
|
-
margins = pdf.get_margins
|
74
|
-
x1 = pdf.get_x
|
75
|
-
y1 = pdf.get_y
|
76
|
-
pdf.addHTMLVertSpace(0, 5, true, false) # height of the break : 5
|
77
|
-
x2 = pdf.get_x
|
78
|
-
y2 = pdf.get_y
|
79
|
-
assert_equal x1 + margins['cell'], x2
|
80
|
-
assert_equal y1 + 5, y2
|
81
|
-
|
82
|
-
pdf.addHTMLVertSpace(0, 5, true, false) # height of the break : 5
|
83
|
-
x3 = pdf.get_x
|
84
|
-
y3 = pdf.get_y
|
85
|
-
assert_equal x2, x3
|
86
|
-
assert_equal y2, y3
|
87
|
-
|
88
|
-
pdf.addHTMLVertSpace(0, 5 + 2, true, false) # height of the break : 7
|
89
|
-
x4 = pdf.get_x
|
90
|
-
y4 = pdf.get_y
|
91
|
-
assert_equal x3, x4
|
92
|
-
assert_equal y3 + 2, y4
|
93
|
-
|
94
|
-
pdf.addHTMLVertSpace(0, 5, true, false) # height of the break : 7
|
95
|
-
x5 = pdf.get_x
|
96
|
-
y5 = pdf.get_y
|
97
|
-
assert_equal x4, x5
|
98
|
-
assert_equal y4, y5
|
99
|
-
|
100
|
-
pdf.addHTMLVertSpace(0, 5 + 2 + 1, true, false) # height of the break : 8
|
101
|
-
x6 = pdf.get_x
|
102
|
-
y6 = pdf.get_y
|
103
|
-
assert_equal x5, x6
|
104
|
-
assert_equal y5 + 1, y6
|
105
|
-
|
106
|
-
pdf.addHTMLVertSpace(0, 10, true, true) # height of the break : 0 (reset)
|
107
|
-
x7 = pdf.get_x
|
108
|
-
y7 = pdf.get_y
|
109
|
-
assert_equal x6, x7
|
110
|
-
assert_equal y6, y7
|
111
|
-
|
112
|
-
pdf.addHTMLVertSpace(0, 2, true, false) # height of the break : 2
|
113
|
-
x8 = pdf.get_x
|
114
|
-
y8 = pdf.get_y
|
115
|
-
assert_equal x7, x8
|
116
|
-
assert_equal y7 + 2, y8
|
117
|
-
end
|
118
|
-
|
119
|
-
test "html func addHTMLVertSpace height of the break test 2" do
|
120
|
-
pdf = MYPDF.new
|
121
|
-
pdf.add_page()
|
122
|
-
|
123
|
-
x1 = pdf.get_x
|
124
|
-
y1 = pdf.get_y
|
125
|
-
pdf.addHTMLVertSpace(10, 5, false, false) # height of the break : 5
|
126
|
-
x2 = pdf.get_x
|
127
|
-
y2 = pdf.get_y
|
128
|
-
assert_equal x1, x2
|
129
|
-
assert_equal y1 + 10 + 5, y2
|
130
|
-
|
131
|
-
pdf.addHTMLVertSpace(10, 5, false, false) # height of the break : 5
|
132
|
-
x3 = pdf.get_x
|
133
|
-
y3 = pdf.get_y
|
134
|
-
assert_equal x2, x3
|
135
|
-
assert_equal y2 + 10, y3
|
136
|
-
|
137
|
-
pdf.addHTMLVertSpace(10, 5 + 2, false, false) # height of the break : 7
|
138
|
-
x4 = pdf.get_x
|
139
|
-
y4 = pdf.get_y
|
140
|
-
assert_equal x3, x4
|
141
|
-
assert_equal y3 + 10 + 2, y4
|
142
|
-
end
|
143
|
-
|
144
|
-
test "html func sanitize test 1" do
|
145
|
-
pdf = MYPDF.new
|
146
|
-
pdf.add_page()
|
147
|
-
html = '<table border="1"><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead><tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr><tr><td>' + 'ABC' + '</td></tr></table>'
|
148
|
-
html = pdf.sanitize_html(html).gsub(/[\r\n]/,'')
|
149
|
-
|
150
|
-
assert_equal %{<table border="1"><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead><tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr><tr><td>ABC</td></tr></table>}, html
|
151
|
-
end
|
152
|
-
|
153
|
-
test "html func sanitize test 2" do
|
154
|
-
pdf = MYPDF.new
|
155
|
-
pdf.add_page()
|
156
|
-
|
157
|
-
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>'
|
158
|
-
html = '<table cellpadding="1"><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead><tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr><tr><td>' + htmlcontent + '</td></tr></table>'
|
159
|
-
html = pdf.sanitize_html(html).gsub(/[\r\n]/,'')
|
160
|
-
assert_equal %{<table cellpadding="1"><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead><tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr><tr><td>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></td></tr></table>}, html
|
161
|
-
end
|
162
|
-
|
163
|
-
test "html func sanitize open angled bracket '<' test" do
|
164
|
-
pdf = MYPDF.new
|
165
|
-
pdf.add_page()
|
166
|
-
html = "<p>AAA '<'-BBB << <<< '</' '<//' '<///' <</ <<// CCC.</p>"
|
167
|
-
html = pdf.sanitize_html(html).gsub(/[\r\n]/,'')
|
168
|
-
assert_equal %{<p>AAA '<'-BBB << <<< '</' '<//' '<///' <</ <<// CCC.</p>}, html
|
169
|
-
end
|
170
|
-
end
|
data/test/rbpdf_html_test.rb
DELETED
@@ -1,658 +0,0 @@
|
|
1
|
-
# coding: ASCII-8BIT
|
2
|
-
#
|
3
|
-
# Copyright (c) 2011-2017 NAITOH Jun
|
4
|
-
# Released under the MIT license
|
5
|
-
# http://www.opensource.org/licenses/MIT
|
6
|
-
|
7
|
-
require 'test_helper'
|
8
|
-
|
9
|
-
class RbpdfHtmlTest < Test::Unit::TestCase
|
10
|
-
class MYPDF < RBPDF
|
11
|
-
def getPageBuffer(page)
|
12
|
-
super
|
13
|
-
end
|
14
|
-
|
15
|
-
# get text count and x_pos from pdf page
|
16
|
-
def get_html_text_position_x(page, regrep_text, x_pos_exp=nil)
|
17
|
-
count_line, count_text, x_pos, _y_pos = get_html_text_position(page, regrep_text, x_pos_exp)
|
18
|
-
return count_line, count_text, x_pos
|
19
|
-
end
|
20
|
-
|
21
|
-
# get text count and y_pos from pdf page
|
22
|
-
def get_html_text_position_y(page, regrep_text)
|
23
|
-
count_line, count_text, _x_pos, y_pos = get_html_text_position(page, regrep_text)
|
24
|
-
return count_line, count_text, y_pos
|
25
|
-
end
|
26
|
-
|
27
|
-
# get text count and pos from pdf page
|
28
|
-
def get_html_text_position(page, regrep_text, x_pos_exp=nil)
|
29
|
-
content = []
|
30
|
-
contents = getPageBuffer(page)
|
31
|
-
contents.each_line {|line| content.push line.chomp }
|
32
|
-
count_line = count_text = 0
|
33
|
-
x_pos = y_pos = -1
|
34
|
-
content.each do |line|
|
35
|
-
count_line += 1 if line =~ /TJ ET Q$/ # Text Line Count
|
36
|
-
if line =~ regrep_text
|
37
|
-
count_text += 1
|
38
|
-
line =~ /BT ([0-9.]+) ([0-9.]+) Td/
|
39
|
-
x_pos = $1
|
40
|
-
y_pos = $2 if y_pos == -1 # y first position only
|
41
|
-
|
42
|
-
if x_pos.nil? or y_pos.nil? # Error
|
43
|
-
return count_line, count_text, nil, nil
|
44
|
-
end
|
45
|
-
if !x_pos_exp.nil? and x_pos != x_pos_exp # Error
|
46
|
-
return count_line, count_text, x_pos, y_pos
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
return count_line, count_text, x_pos, y_pos
|
51
|
-
end
|
52
|
-
|
53
|
-
# get text from pdf page
|
54
|
-
def get_html_text(page)
|
55
|
-
content = []
|
56
|
-
contents = getPageBuffer(page)
|
57
|
-
contents.each_line {|line| content.push line.chomp }
|
58
|
-
pdf_text = ''
|
59
|
-
content.each do |line|
|
60
|
-
if line =~ /\[\((.*)\)\] TJ ET/
|
61
|
-
pdf_text << $1
|
62
|
-
end
|
63
|
-
end
|
64
|
-
return pdf_text
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
test "write_html Basic test" do
|
69
|
-
pdf = RBPDF.new
|
70
|
-
pdf.add_page()
|
71
|
-
|
72
|
-
htmlcontent = '<h1>HTML Example</h1>'
|
73
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
74
|
-
|
75
|
-
htmlcontent = 'abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890'
|
76
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
77
|
-
|
78
|
-
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>'
|
79
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
80
|
-
|
81
|
-
pno = pdf.get_page
|
82
|
-
assert_equal 3, pno
|
83
|
-
end
|
84
|
-
|
85
|
-
test "write_html Table test 1" do
|
86
|
-
pdf = RBPDF.new
|
87
|
-
pdf.add_page()
|
88
|
-
|
89
|
-
tablehtml = '<table border="1" cellspacing="1" cellpadding="1"><tr><td>a</td><td>b</td></tr><tr><td>c</td><td>d</td></tr></table>'
|
90
|
-
pdf.write_html(tablehtml, true, 0, true, 0)
|
91
|
-
|
92
|
-
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>'
|
93
|
-
|
94
|
-
tablehtml = '<table border="1" cellspacing="1" cellpadding="1"><tr><td>a</td><td>b</td></tr><tr><td>c</td><td>' + htmlcontent + '</td></tr></table>'
|
95
|
-
pdf.write_html(tablehtml, true, 0, true, 0)
|
96
|
-
|
97
|
-
pno = pdf.get_page
|
98
|
-
assert_equal 3, pno
|
99
|
-
end
|
100
|
-
|
101
|
-
test "write_html Table test 2" do
|
102
|
-
pdf = MYPDF.new
|
103
|
-
pdf.add_page()
|
104
|
-
|
105
|
-
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>'
|
106
|
-
|
107
|
-
tablehtml = '<table border="1"><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr>
|
108
|
-
<tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr>
|
109
|
-
<tr><td>' + htmlcontent + '</td></tr></table>'
|
110
|
-
pdf.write_html(tablehtml, true, 0, true, 0)
|
111
|
-
|
112
|
-
pno = pdf.get_page
|
113
|
-
assert_equal 3, pno
|
114
|
-
|
115
|
-
# Page 1
|
116
|
-
count_line, count_text, xpos1 = pdf.get_html_text_position_x(1, /ABCD/) # Header
|
117
|
-
assert_not_nil xpos1
|
118
|
-
assert_equal 1, count_text
|
119
|
-
assert_equal 13, count_line
|
120
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(1, /abcd/)
|
121
|
-
assert_not_nil xpos2
|
122
|
-
assert_equal 1, count_text
|
123
|
-
assert_equal xpos1, xpos2
|
124
|
-
assert_equal 13, count_line
|
125
|
-
|
126
|
-
# Page 2
|
127
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /\([6-9]\)/, xpos1)
|
128
|
-
assert_not_nil xpos2
|
129
|
-
assert_equal xpos1, xpos2
|
130
|
-
assert_equal 7, count_line
|
131
|
-
end
|
132
|
-
|
133
|
-
test "write_html Table thead tag test 1" do
|
134
|
-
pdf = MYPDF.new
|
135
|
-
pdf.add_page()
|
136
|
-
|
137
|
-
tablehtml = '<table border="1" cellpadding="1" cellspacing="1">
|
138
|
-
<thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead>
|
139
|
-
<tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr>
|
140
|
-
</table>'
|
141
|
-
|
142
|
-
pdf.write_html(tablehtml, true, 0, true, 0)
|
143
|
-
page = pdf.get_page
|
144
|
-
assert_equal 1, page
|
145
|
-
|
146
|
-
_count_line, count_text, _xpos = pdf.get_html_text_position_x(1, /ABCD/) # Header
|
147
|
-
assert_equal 1, count_text
|
148
|
-
end
|
149
|
-
|
150
|
-
test "write_html Table thead tag test 2" do
|
151
|
-
pdf = MYPDF.new
|
152
|
-
pdf.add_page()
|
153
|
-
|
154
|
-
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>'
|
155
|
-
|
156
|
-
tablehtml = '<table><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead>
|
157
|
-
<tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr>
|
158
|
-
<tr><td>' + htmlcontent + '</td></tr></table>'
|
159
|
-
|
160
|
-
pdf.write_html(tablehtml, true, 0, true, 0)
|
161
|
-
page = pdf.get_page
|
162
|
-
assert_equal 3, page
|
163
|
-
|
164
|
-
# Page 1
|
165
|
-
count_line, count_text, xpos1 = pdf.get_html_text_position_x(1, /ABCD/) # Header
|
166
|
-
assert_not_nil xpos1
|
167
|
-
assert_equal 1, count_text
|
168
|
-
assert_equal 13, count_line
|
169
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(1, /abcd/)
|
170
|
-
assert_not_nil xpos2
|
171
|
-
assert_equal 1, count_text
|
172
|
-
assert_equal xpos1, xpos2
|
173
|
-
assert_equal 13, count_line
|
174
|
-
|
175
|
-
# Page 2
|
176
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /ABCD/, xpos1) # Header
|
177
|
-
assert_not_nil xpos2
|
178
|
-
assert_equal 1, count_text
|
179
|
-
assert_equal xpos1, xpos2
|
180
|
-
assert_equal 10, count_line
|
181
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /abcd/)
|
182
|
-
assert_equal 0, count_text
|
183
|
-
assert_equal 10, count_line
|
184
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /\([6-9]\)/, xpos1)
|
185
|
-
assert_not_nil xpos2
|
186
|
-
assert_equal xpos1, xpos2
|
187
|
-
assert_equal 10, count_line
|
188
|
-
|
189
|
-
# Page 3
|
190
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(3, /ABCD/, xpos1) # Header
|
191
|
-
assert_not_nil xpos2
|
192
|
-
assert_equal 1, count_text
|
193
|
-
assert_equal xpos1, xpos2
|
194
|
-
assert_equal 5, count_line
|
195
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(3, /abcd/)
|
196
|
-
assert_equal 0, count_text
|
197
|
-
assert_equal 5, count_line
|
198
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(3, /\(11\)/, xpos1)
|
199
|
-
assert_not_nil xpos2
|
200
|
-
assert_equal 1, count_text
|
201
|
-
assert_equal xpos1, xpos2
|
202
|
-
assert_equal 5, count_line
|
203
|
-
end
|
204
|
-
|
205
|
-
test "write_html_cell Table thead tag test" do
|
206
|
-
pdf = MYPDF.new
|
207
|
-
pdf.add_page()
|
208
|
-
|
209
|
-
htmlcontent = '<br>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>
|
210
|
-
<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>
|
211
|
-
<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>
|
212
|
-
<br><br><br><br><br><br><br><br>'
|
213
|
-
|
214
|
-
tablehtml ='<table><thead><tr>
|
215
|
-
<th style="text-align: left">Left align</th>
|
216
|
-
<th style="text-align: right">Right align</th>
|
217
|
-
<th style="text-align: center">Center align</th>
|
218
|
-
</tr> </thead><tbody> <tr>
|
219
|
-
<td style="text-align: left">left' + htmlcontent + '</td>
|
220
|
-
<td style="text-align: right">right</td>
|
221
|
-
<td style="text-align: center">center</td>
|
222
|
-
</tr> </tbody></table>'
|
223
|
-
|
224
|
-
pdf.write_html_cell(0, 0, '', '',tablehtml)
|
225
|
-
|
226
|
-
page = pdf.get_page
|
227
|
-
assert_equal 1, page
|
228
|
-
|
229
|
-
# Page 1
|
230
|
-
count_line, count_text, xpos1 = pdf.get_html_text_position_x(1, /Left align/) # Header
|
231
|
-
assert_not_nil xpos1
|
232
|
-
assert_equal 1, count_text
|
233
|
-
assert_equal 13, count_line
|
234
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(1, /left/)
|
235
|
-
assert_not_nil xpos2
|
236
|
-
assert_equal 1, count_text
|
237
|
-
assert_equal 13, count_line
|
238
|
-
assert_equal xpos1, xpos2
|
239
|
-
|
240
|
-
# Page 2
|
241
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /Left align/, xpos1) # Header
|
242
|
-
assert_not_nil xpos2
|
243
|
-
assert_equal 1, count_text
|
244
|
-
assert_equal xpos1, xpos2
|
245
|
-
assert_equal 10, count_line
|
246
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /\(6\)/, xpos1)
|
247
|
-
assert_not_nil xpos2
|
248
|
-
assert_equal 1, count_text
|
249
|
-
assert_equal xpos1, xpos2
|
250
|
-
assert_equal 10, count_line
|
251
|
-
|
252
|
-
# Page 3
|
253
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(3, /Left align/, xpos1) # Header
|
254
|
-
assert_not_nil xpos2
|
255
|
-
assert_equal 1, count_text
|
256
|
-
assert_equal xpos1, xpos2
|
257
|
-
assert_equal 5, count_line
|
258
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(3, /\(11\)/, xpos1)
|
259
|
-
assert_not_nil xpos2
|
260
|
-
assert_equal 1, count_text
|
261
|
-
assert_equal xpos1, xpos2
|
262
|
-
assert_equal 5, count_line
|
263
|
-
end
|
264
|
-
|
265
|
-
test "write_html_cell Table thead tag cellpadding x position test" do
|
266
|
-
pdf = MYPDF.new
|
267
|
-
pdf.add_page()
|
268
|
-
|
269
|
-
htmlcontent = '<br>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>
|
270
|
-
<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>
|
271
|
-
<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>
|
272
|
-
<br><br><br><br><br><br><br><br>'
|
273
|
-
|
274
|
-
tablehtml ='<table cellpadding="10"><thead><tr>
|
275
|
-
<th style="text-align: left">Left align</th>
|
276
|
-
<th style="text-align: right">Center align</th>
|
277
|
-
<th style="text-align: left">Right align</th>
|
278
|
-
</tr> </thead><tbody> <tr>
|
279
|
-
<td style="text-align: left">left</td>
|
280
|
-
<td style="text-align: right">center</td>
|
281
|
-
<td style="text-align: left">right' + htmlcontent + '</td>
|
282
|
-
</tr> </tbody></table>'
|
283
|
-
|
284
|
-
pdf.write_html_cell(0, 0, '', '',tablehtml)
|
285
|
-
|
286
|
-
page = pdf.get_page
|
287
|
-
assert_equal 1, page
|
288
|
-
|
289
|
-
# Page 1
|
290
|
-
count_line, count_text, xpos1 = pdf.get_html_text_position_x(1, /Right align/) # Header
|
291
|
-
assert_not_nil xpos1
|
292
|
-
assert_equal 1, count_text
|
293
|
-
assert_equal 13, count_line
|
294
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(1, /right/)
|
295
|
-
assert_not_nil xpos2
|
296
|
-
assert_equal 1, count_text
|
297
|
-
assert_equal xpos1, xpos2
|
298
|
-
assert_equal 13, count_line
|
299
|
-
|
300
|
-
# Page 2
|
301
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /Right align/, xpos1) # Header
|
302
|
-
assert_not_nil xpos2
|
303
|
-
assert_equal 1, count_text
|
304
|
-
assert_equal xpos1, xpos2
|
305
|
-
assert_equal 10, count_line
|
306
|
-
count_line, count_text, xpos2 = pdf.get_html_text_position_x(2, /\(6\)/, xpos1)
|
307
|
-
assert_not_nil xpos2
|
308
|
-
assert_equal 1, count_text
|
309
|
-
assert_equal xpos1, xpos2
|
310
|
-
assert_equal 10, count_line
|
311
|
-
end
|
312
|
-
|
313
|
-
test "write_html_cell Table thead tag cellpadding y position test 1" do
|
314
|
-
pdf = MYPDF.new
|
315
|
-
pdf.add_page()
|
316
|
-
|
317
|
-
table_start='<table cellpadding="10"><thead><tr>
|
318
|
-
<th style="text-align: left">Left align</th><th style="text-align: center">Center align</th><th style="text-align: right">Right align</th>
|
319
|
-
</tr></thead><tbody>'
|
320
|
-
table_col='<tr><td style="text-align: left">AAA</td><td style="text-align: center">BBB</td><td style="text-align: right">CCC</td></tr>'
|
321
|
-
table_end='</tbody></table>'
|
322
|
-
tablehtml= table_start + table_col * 30 + table_end
|
323
|
-
|
324
|
-
pdf.write_html_cell(0, 0, '', '',tablehtml)
|
325
|
-
|
326
|
-
# Page 1
|
327
|
-
count_line, count_text, ypos1 = pdf.get_html_text_position_y(1, /Left align/) # Header
|
328
|
-
assert_not_nil ypos1
|
329
|
-
assert_equal 1, count_text
|
330
|
-
assert_equal 65, count_line
|
331
|
-
count_line, count_text, ypos2 = pdf.get_html_text_position_y(1, /AAA/)
|
332
|
-
assert_not_nil ypos2
|
333
|
-
assert_equal 20, count_text
|
334
|
-
assert_equal 65, count_line
|
335
|
-
base_pos = ypos1.to_i - ypos2.to_i
|
336
|
-
|
337
|
-
# Page 2
|
338
|
-
count_line, count_text, ypos1 = pdf.get_html_text_position_y(2, /Left align/) # Header
|
339
|
-
assert_not_nil ypos2
|
340
|
-
assert_equal 1, count_text
|
341
|
-
assert_equal 34, count_line
|
342
|
-
count_line, count_text, ypos2 = pdf.get_html_text_position_y(2, /AAA/)
|
343
|
-
assert_not_nil ypos2
|
344
|
-
assert_equal 10, count_text
|
345
|
-
assert_equal 34, count_line
|
346
|
-
assert_equal base_pos, ypos1.to_i - ypos2.to_i
|
347
|
-
end
|
348
|
-
|
349
|
-
test "write_html_cell Table thead tag cellpadding y position test 2" do
|
350
|
-
pdf = MYPDF.new
|
351
|
-
pdf.add_page()
|
352
|
-
|
353
|
-
table_start='abc<br><table cellpadding="10"><thead><tr>
|
354
|
-
<th style="text-align: left">Left align</th><th style="text-align: center">Center align</th><th style="text-align: right">Right align</th>
|
355
|
-
</tr></thead><tbody>'
|
356
|
-
table_col='<tr><td style="text-align: left">AAA</td><td style="text-align: center">BBB</td><td style="text-align: right">CCC</td></tr>'
|
357
|
-
table_end='</tbody></table>'
|
358
|
-
tablehtml= table_start + table_col * 30 + table_end
|
359
|
-
|
360
|
-
pdf.write_html_cell(0, 0, '', '',tablehtml)
|
361
|
-
|
362
|
-
# Page 1
|
363
|
-
count_line, count_text, ypos1 = pdf.get_html_text_position_y(1, /Left align/) # Header
|
364
|
-
assert_not_nil ypos1
|
365
|
-
assert_equal 1, count_text
|
366
|
-
assert_equal 66, count_line
|
367
|
-
count_line, count_text, ypos2 = pdf.get_html_text_position_y(1, /AAA/)
|
368
|
-
assert_not_nil ypos2
|
369
|
-
assert_equal 20, count_text
|
370
|
-
assert_equal 66, count_line
|
371
|
-
base_pos = ypos1.to_i - ypos2.to_i
|
372
|
-
|
373
|
-
# Page 2
|
374
|
-
count_line, count_text, ypos1 = pdf.get_html_text_position_y(2, /Left align/) # Header
|
375
|
-
assert_not_nil ypos2
|
376
|
-
assert_equal 1, count_text
|
377
|
-
assert_equal 34, count_line
|
378
|
-
count_line, count_text, ypos2 = pdf.get_html_text_position_y(2, /AAA/)
|
379
|
-
assert_not_nil ypos2
|
380
|
-
assert_equal 10, count_text
|
381
|
-
assert_equal 34, count_line
|
382
|
-
assert_equal base_pos, ypos1.to_i - ypos2.to_i
|
383
|
-
end
|
384
|
-
|
385
|
-
test "write_html ASCII text test" do
|
386
|
-
pdf = MYPDF.new
|
387
|
-
pdf.add_page()
|
388
|
-
|
389
|
-
text = 'HTML Example'
|
390
|
-
htmlcontent = '<h1>' + text + '</h1>'
|
391
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
392
|
-
page = pdf.get_page
|
393
|
-
assert_equal 1, page
|
394
|
-
|
395
|
-
content = []
|
396
|
-
contents = pdf.getPageBuffer(1)
|
397
|
-
contents.each_line {|line| content.push line.chomp }
|
398
|
-
|
399
|
-
count_text = 0
|
400
|
-
content.each do |line|
|
401
|
-
count_text += 1 unless line.scan(text).empty?
|
402
|
-
end
|
403
|
-
assert_equal 1, count_text
|
404
|
-
end
|
405
|
-
|
406
|
-
test "write_html Justify text test" do
|
407
|
-
pdf = MYPDF.new
|
408
|
-
pdf.set_font('times', 'BI', 20)
|
409
|
-
pdf.add_page()
|
410
|
-
|
411
|
-
text = 'hello Ruby (inside hello world) hello Ruby (inside hello world) hello Ruby (inside hello world)'
|
412
|
-
justify_text = 'hello Ruby \(inside hello world\) hello Ruby \(inside hello world\)'
|
413
|
-
htmlcontent = '<div style="text-align:justify;">' + text + '</div>'
|
414
|
-
|
415
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
416
|
-
|
417
|
-
page = pdf.get_page
|
418
|
-
assert_equal 1, page
|
419
|
-
|
420
|
-
content = []
|
421
|
-
contents = pdf.getPageBuffer(1)
|
422
|
-
contents.each_line {|line| content.push line.chomp if line.include? ' TJ ET' } # Text Line set
|
423
|
-
|
424
|
-
count_text = 0
|
425
|
-
content.each do |line|
|
426
|
-
count_text += 1 unless line.scan(justify_text).empty?
|
427
|
-
end
|
428
|
-
assert_equal 1, count_text, "'#{justify_text}' is not include in '#{content.inspect}'"
|
429
|
-
end
|
430
|
-
|
431
|
-
test "write_html Non ASCII text test" do
|
432
|
-
pdf = MYPDF.new
|
433
|
-
pdf.add_page()
|
434
|
-
|
435
|
-
text = 'HTML Example ' + "\xc2\x83\xc2\x86"
|
436
|
-
|
437
|
-
htmlcontent = '<h1>' + text + '</h1>'
|
438
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
439
|
-
page = pdf.get_page
|
440
|
-
assert_equal 1, page
|
441
|
-
|
442
|
-
content = []
|
443
|
-
contents = pdf.getPageBuffer(1)
|
444
|
-
contents.each_line {|line| content.push line.chomp }
|
445
|
-
|
446
|
-
text = 'HTML Example ' + "\x83\x86"
|
447
|
-
text.force_encoding('ASCII-8BIT') if text.respond_to?(:force_encoding)
|
448
|
-
count_text = 0
|
449
|
-
content.each do |line|
|
450
|
-
line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
|
451
|
-
count_text += 1 unless line.scan(text).empty?
|
452
|
-
end
|
453
|
-
assert_equal 1, count_text
|
454
|
-
end
|
455
|
-
|
456
|
-
test "works internal links out of page range" do
|
457
|
-
pdf = RBPDF.new
|
458
|
-
pdf.add_page()
|
459
|
-
|
460
|
-
htmlcontent = '<a href="#100400_somelink">FooLink</a>'
|
461
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
462
|
-
|
463
|
-
assert_nothing_raised do
|
464
|
-
pdf.Close
|
465
|
-
end
|
466
|
-
|
467
|
-
assert_nothing_raised do
|
468
|
-
pdf.Output
|
469
|
-
end
|
470
|
-
end
|
471
|
-
|
472
|
-
test "write_html no tag text test" do
|
473
|
-
pdf = MYPDF.new
|
474
|
-
pdf.set_print_header(false)
|
475
|
-
pdf.add_page()
|
476
|
-
|
477
|
-
text = ' abc def '
|
478
|
-
pdf.write_html(text, true, 0, true, 0)
|
479
|
-
pdf_text = pdf.get_html_text(1)
|
480
|
-
assert_equal 'abc def', pdf_text
|
481
|
-
end
|
482
|
-
|
483
|
-
test "write_html no tag back slash test" do
|
484
|
-
pdf = MYPDF.new
|
485
|
-
pdf.set_print_header(false)
|
486
|
-
pdf.add_page()
|
487
|
-
|
488
|
-
text = " abc \\def "
|
489
|
-
pdf.write_html(text, true, 0, true, 0) # use escape() method in getCellCode()
|
490
|
-
pdf_text = pdf.get_html_text(1)
|
491
|
-
assert_equal "abc \\\\def", pdf_text
|
492
|
-
end
|
493
|
-
|
494
|
-
test "write_html <b> tag test" do
|
495
|
-
pdf = MYPDF.new
|
496
|
-
pdf.set_print_header(false)
|
497
|
-
pdf.add_page()
|
498
|
-
|
499
|
-
text = ' ' + 'A' * 70
|
500
|
-
htmlcontent = '<b>' + text + '</b>'
|
501
|
-
|
502
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
503
|
-
pdf_text = pdf.get_html_text(1)
|
504
|
-
assert_equal 'A' * 70, pdf_text
|
505
|
-
end
|
506
|
-
|
507
|
-
test "write_html <i> tag test" do
|
508
|
-
pdf = MYPDF.new
|
509
|
-
pdf.set_print_header(false)
|
510
|
-
pdf.add_page()
|
511
|
-
|
512
|
-
text = ' ' + 'A' * 70
|
513
|
-
htmlcontent = '<i>' + text + '</i>'
|
514
|
-
|
515
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
516
|
-
pdf_text = pdf.get_html_text(1)
|
517
|
-
assert_equal 'A' * 70, pdf_text
|
518
|
-
end
|
519
|
-
|
520
|
-
test "write_html <u> tag test" do
|
521
|
-
pdf = MYPDF.new
|
522
|
-
pdf.set_print_header(false)
|
523
|
-
pdf.add_page()
|
524
|
-
|
525
|
-
text = ' ' + 'A' * 70
|
526
|
-
htmlcontent = '<u>' + text + '</u>'
|
527
|
-
|
528
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
529
|
-
pdf_text = pdf.get_html_text(1)
|
530
|
-
assert_equal 'A' * 70, pdf_text
|
531
|
-
end
|
532
|
-
|
533
|
-
test "write_html <pre> tag space 1 test" do
|
534
|
-
pdf = MYPDF.new
|
535
|
-
pdf.set_print_header(false)
|
536
|
-
pdf.add_page()
|
537
|
-
|
538
|
-
text = ' ' + 'A' * 70
|
539
|
-
htmlcontent = '<pre>' + text + '</pre>'
|
540
|
-
|
541
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
542
|
-
pdf_text = pdf.get_html_text(1)
|
543
|
-
assert_equal "\xa0" + 'A' * 70, pdf_text
|
544
|
-
end
|
545
|
-
|
546
|
-
test "write_html <pre> tag space 2 test" do
|
547
|
-
pdf = MYPDF.new
|
548
|
-
pdf.set_print_header(false)
|
549
|
-
pdf.add_page()
|
550
|
-
|
551
|
-
text = ' ' + 'A' * 70
|
552
|
-
htmlcontent = '<pre>' + text + '</pre>'
|
553
|
-
|
554
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
555
|
-
pdf_text = pdf.get_html_text(1)
|
556
|
-
assert_equal "\xa0" * 2 + 'A' * 70, pdf_text
|
557
|
-
end
|
558
|
-
|
559
|
-
test "write_html <table> tag text test" do
|
560
|
-
pdf = MYPDF.new
|
561
|
-
pdf.set_print_header(false)
|
562
|
-
pdf.add_page()
|
563
|
-
|
564
|
-
text = "abc"
|
565
|
-
htmlcontent = '<table border="1"><tr><td>' + text + '</td></tr></table>'
|
566
|
-
|
567
|
-
pdf.write_html(htmlcontent, true, 0, true, 0)
|
568
|
-
pdf_text = pdf.get_html_text(1)
|
569
|
-
assert_equal 'abc', pdf_text
|
570
|
-
end
|
571
|
-
|
572
|
-
test "write_html <table> tag back slash test" do
|
573
|
-
pdf = MYPDF.new
|
574
|
-
pdf.set_print_header(false)
|
575
|
-
pdf.add_page()
|
576
|
-
|
577
|
-
text = "a\\bc"
|
578
|
-
htmlcontent = '<table border="1"><tr><td>' + text + '</td></tr></table>'
|
579
|
-
|
580
|
-
pdf.write_html(htmlcontent, true, 0, true, 0) # use escape() method in getCellCode()
|
581
|
-
pdf_text = pdf.get_html_text(1)
|
582
|
-
assert_equal 'a\\\\bc', pdf_text
|
583
|
-
end
|
584
|
-
|
585
|
-
test "write_html Character Entities test" do
|
586
|
-
pdf = MYPDF.new
|
587
|
-
pdf.set_print_header(false)
|
588
|
-
|
589
|
-
character_entities = {
|
590
|
-
'<' => '<',
|
591
|
-
'>' => '>',
|
592
|
-
'&' => '&',
|
593
|
-
'"' => '"',
|
594
|
-
' ' => "\xa0",
|
595
|
-
'¢' => "\xa2",
|
596
|
-
'£' => "\xa3",
|
597
|
-
'¥' => "\xa5",
|
598
|
-
'©' => "\xa9",
|
599
|
-
'®' => "\xae",
|
600
|
-
'€' => "\x80",
|
601
|
-
}
|
602
|
-
character_entities.each {|ce, c|
|
603
|
-
pdf.add_page()
|
604
|
-
page = pdf.get_page
|
605
|
-
pdf.write_html(ce, true, 0, true, 0)
|
606
|
-
pdf_text = pdf.get_html_text(page)
|
607
|
-
assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + pdf_text
|
608
|
-
}
|
609
|
-
end
|
610
|
-
|
611
|
-
test "write_html Character Entities test pre mode" do
|
612
|
-
pdf = MYPDF.new
|
613
|
-
pdf.set_print_header(false)
|
614
|
-
|
615
|
-
character_entities = {
|
616
|
-
'<' => '<',
|
617
|
-
'>' => '>',
|
618
|
-
'&' => '&',
|
619
|
-
'"' => '"',
|
620
|
-
' ' => "\xa0",
|
621
|
-
'¢' => "\xa2",
|
622
|
-
'£' => "\xa3",
|
623
|
-
'¥' => "\xa5",
|
624
|
-
'©' => "\xa9",
|
625
|
-
'®' => "\xae",
|
626
|
-
'€' => "\x80",
|
627
|
-
}
|
628
|
-
character_entities.each {|ce, c|
|
629
|
-
pdf.add_page()
|
630
|
-
page = pdf.get_page
|
631
|
-
pdf.write_html('<pre>' + ce + '</pre>', true, 0, true, 0)
|
632
|
-
pdf_text = pdf.get_html_text(page)
|
633
|
-
assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + pdf_text
|
634
|
-
}
|
635
|
-
end
|
636
|
-
|
637
|
-
test "unhtmlentities test" do
|
638
|
-
pdf = RBPDF.new
|
639
|
-
character_entities = {
|
640
|
-
'<' => '<',
|
641
|
-
'>' => '>',
|
642
|
-
'&' => '&',
|
643
|
-
'"' => '"',
|
644
|
-
' ' => "\xc2\xa0",
|
645
|
-
'¢' => "\xc2\xa2",
|
646
|
-
'£' => "\xc2\xa3",
|
647
|
-
'¥' => "\xc2\xa5",
|
648
|
-
'©' => "\xc2\xa9",
|
649
|
-
'®' => "\xc2\xae",
|
650
|
-
'€' => "\xe2\x82\xac",
|
651
|
-
}
|
652
|
-
character_entities.each {|ce, c|
|
653
|
-
text = pdf.unhtmlentities(ce)
|
654
|
-
text.force_encoding('ASCII-8BIT') if text.respond_to?(:force_encoding)
|
655
|
-
assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + text
|
656
|
-
}
|
657
|
-
end
|
658
|
-
end
|