rbpdf 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +35 -0
  3. data/Gemfile +4 -0
  4. data/README.md +68 -0
  5. data/Rakefile +2 -0
  6. data/lib/core/rmagick.rb +85 -0
  7. data/lib/fonts/README.z +2 -0
  8. data/lib/fonts/arialunicid0_cw.rb +1738 -0
  9. data/lib/fonts/cid0cs.rb +21 -0
  10. data/lib/fonts/cid0ct.rb +21 -0
  11. data/lib/fonts/cid0jp.rb +21 -0
  12. data/lib/fonts/cid0kr.rb +21 -0
  13. data/lib/fonts/courier.rb +37 -0
  14. data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +53 -0
  15. data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +3 -0
  16. data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +99 -0
  17. data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +1315 -0
  18. data/lib/fonts/dejavu-fonts-ttf-2.33/README +59 -0
  19. data/lib/fonts/dejavusans.ctg.z +0 -0
  20. data/lib/fonts/dejavusans.rb +338 -0
  21. data/lib/fonts/dejavusans.z +0 -0
  22. data/lib/fonts/dejavusansb.ctg.z +0 -0
  23. data/lib/fonts/dejavusansb.rb +330 -0
  24. data/lib/fonts/dejavusansb.z +0 -0
  25. data/lib/fonts/dejavusansbi.ctg.z +0 -0
  26. data/lib/fonts/dejavusansbi.rb +297 -0
  27. data/lib/fonts/dejavusansbi.z +0 -0
  28. data/lib/fonts/dejavusansi.ctg.z +0 -0
  29. data/lib/fonts/dejavusansi.rb +305 -0
  30. data/lib/fonts/dejavusansi.z +0 -0
  31. data/lib/fonts/freefont-20080912/AUTHORS +191 -0
  32. data/lib/fonts/freefont-20080912/COPYING +341 -0
  33. data/lib/fonts/freefont-20080912/CREDITS +506 -0
  34. data/lib/fonts/freefont-20080912/ChangeLog +3320 -0
  35. data/lib/fonts/freefont-20080912/INSTALL +81 -0
  36. data/lib/fonts/freefont-20080912/README +108 -0
  37. data/lib/fonts/freemono.ctg.z +0 -0
  38. data/lib/fonts/freemono.rb +203 -0
  39. data/lib/fonts/freemono.z +0 -0
  40. data/lib/fonts/freemonob.ctg.z +0 -0
  41. data/lib/fonts/freemonob.rb +120 -0
  42. data/lib/fonts/freemonob.z +0 -0
  43. data/lib/fonts/freemonobi.ctg.z +0 -0
  44. data/lib/fonts/freemonobi.rb +84 -0
  45. data/lib/fonts/freemonobi.z +0 -0
  46. data/lib/fonts/freemonoi.ctg.z +0 -0
  47. data/lib/fonts/freemonoi.rb +136 -0
  48. data/lib/fonts/freemonoi.z +0 -0
  49. data/lib/fonts/freesans.ctg.z +0 -0
  50. data/lib/fonts/freesans.rb +196 -0
  51. data/lib/fonts/freesans.z +0 -0
  52. data/lib/fonts/freesansb.ctg.z +0 -0
  53. data/lib/fonts/freesansb.rb +136 -0
  54. data/lib/fonts/freesansb.z +0 -0
  55. data/lib/fonts/freesansbi.ctg.z +0 -0
  56. data/lib/fonts/freesansbi.rb +108 -0
  57. data/lib/fonts/freesansbi.z +0 -0
  58. data/lib/fonts/freesansi.ctg.z +0 -0
  59. data/lib/fonts/freesansi.rb +136 -0
  60. data/lib/fonts/freesansi.z +0 -0
  61. data/lib/fonts/freeserif.ctg.z +0 -0
  62. data/lib/fonts/freeserif.rb +285 -0
  63. data/lib/fonts/freeserif.z +0 -0
  64. data/lib/fonts/freeserifb.ctg.z +0 -0
  65. data/lib/fonts/freeserifb.rb +164 -0
  66. data/lib/fonts/freeserifb.z +0 -0
  67. data/lib/fonts/freeserifbi.ctg.z +0 -0
  68. data/lib/fonts/freeserifbi.rb +130 -0
  69. data/lib/fonts/freeserifbi.z +0 -0
  70. data/lib/fonts/freeserifi.ctg.z +0 -0
  71. data/lib/fonts/freeserifi.rb +151 -0
  72. data/lib/fonts/freeserifi.z +0 -0
  73. data/lib/fonts/helvetica.rb +34 -0
  74. data/lib/fonts/helveticab.rb +34 -0
  75. data/lib/fonts/helveticabi.rb +34 -0
  76. data/lib/fonts/helveticai.rb +34 -0
  77. data/lib/fonts/hysmyeongjostdmedium.rb +31 -0
  78. data/lib/fonts/kozgopromedium.rb +47 -0
  79. data/lib/fonts/kozminproregular.rb +46 -0
  80. data/lib/fonts/msungstdlight.rb +23 -0
  81. data/lib/fonts/sjis.rb +834 -0
  82. data/lib/fonts/stsongstdlight.rb +23 -0
  83. data/lib/fonts/symbol.rb +33 -0
  84. data/lib/fonts/times.rb +34 -0
  85. data/lib/fonts/timesb.rb +34 -0
  86. data/lib/fonts/timesbi.rb +34 -0
  87. data/lib/fonts/timesi.rb +34 -0
  88. data/lib/fonts/uni2cid_ac15.rb +23613 -0
  89. data/lib/fonts/uni2cid_ag15.rb +30222 -0
  90. data/lib/fonts/uni2cid_aj16.rb +15705 -0
  91. data/lib/fonts/uni2cid_ak12.rb +17530 -0
  92. data/lib/fonts/zapfdingbats.rb +33 -0
  93. data/lib/htmlcolors.rb +207 -0
  94. data/lib/rbpdf.rb +14472 -0
  95. data/lib/rbpdf/version.rb +3 -0
  96. data/lib/unicode_data.rb +18315 -0
  97. data/logo_example.png +0 -0
  98. data/rbpdf.gemspec +35 -0
  99. data/test/rbpdf_bidi_test.rb +65 -0
  100. data/test/rbpdf_bookmark_test.rb +57 -0
  101. data/test/rbpdf_cell_test.rb +232 -0
  102. data/test/rbpdf_content_test.rb +117 -0
  103. data/test/rbpdf_css_test.rb +318 -0
  104. data/test/rbpdf_dom_test.rb +113 -0
  105. data/test/rbpdf_font_func_test.rb +27 -0
  106. data/test/rbpdf_font_style_test.rb +34 -0
  107. data/test/rbpdf_font_test.rb +181 -0
  108. data/test/rbpdf_format_test.rb +27 -0
  109. data/test/rbpdf_func_test.rb +126 -0
  110. data/test/rbpdf_html_test.rb +164 -0
  111. data/test/rbpdf_htmlcell_test.rb +64 -0
  112. data/test/rbpdf_image_test.rb +108 -0
  113. data/test/rbpdf_test.rb +245 -0
  114. data/test/rbpdf_transaction_test.rb +199 -0
  115. data/test/rbpdf_viewerpreferences_test.rb +37 -0
  116. data/test/rbpdf_write_test.rb +173 -0
  117. data/test/test_helper.rb +1 -0
  118. data/test_unicode.rbpdf +115 -0
  119. data/utf8test.txt +120 -0
  120. metadata +216 -0
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFontStyleTest < ActiveSupport::TestCase
4
+
5
+ class MYPDF < RBPDF
6
+ def dounderline(x, y, txt)
7
+ super
8
+ end
9
+ def dolinethrough(x, y, txt)
10
+ super
11
+ end
12
+ def dooverline(x, y, txt)
13
+ super
14
+ end
15
+ end
16
+
17
+ test "Font dounderline function test 1" do
18
+ pdf = MYPDF.new
19
+ line = pdf.dounderline(10, 10, "test")
20
+ assert_equal line, '28.35 812.94 19.34 -0.60 re f'
21
+ end
22
+
23
+ test "Font dolinethrough function test 1" do
24
+ pdf = MYPDF.new
25
+ line = pdf.dolinethrough(10, 10, "test")
26
+ assert_equal line, '28.35 816.94 19.34 -0.60 re f'
27
+ end
28
+
29
+ test "Font dooverline function test 1" do
30
+ pdf = MYPDF.new
31
+ line = pdf.dooverline(10, 10, "test")
32
+ assert_equal line, '28.35 824.34 19.34 -0.60 re f'
33
+ end
34
+ end
@@ -0,0 +1,181 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFontTest < ActiveSupport::TestCase
4
+ class MYPDF < RBPDF
5
+ def putfonts()
6
+ super
7
+ end
8
+
9
+ def getFontBuffer(font)
10
+ super
11
+ end
12
+
13
+ def getFontsList()
14
+ super
15
+ end
16
+
17
+ def fontlist()
18
+ @fontlist
19
+ end
20
+ end
21
+
22
+ test "Font getFontsList" do
23
+ pdf = MYPDF.new
24
+ pdf.getFontsList()
25
+ fonts = pdf.fontlist()
26
+ assert fonts.include?('kozminproregular')
27
+ end
28
+
29
+ test "core Font test" do
30
+ pdf = MYPDF.new
31
+
32
+ pdf.set_font('helvetica', '', 18)
33
+ pdf.set_font('helvetica', 'B', 18)
34
+ pdf.set_font('helvetica', 'I', 18)
35
+ pdf.set_font('helvetica', 'BI', 18)
36
+
37
+ font = pdf.getFontBuffer('helvetica')
38
+ assert_equal font['name'], 'Helvetica'
39
+ assert_equal font['dw'], 556
40
+ font = pdf.getFontBuffer('helveticaB')
41
+ assert_equal font['name'], 'Helvetica-Bold'
42
+ assert_equal font['dw'], 556
43
+ font = pdf.getFontBuffer('helveticaI')
44
+ assert_equal font['name'], 'Helvetica-Oblique'
45
+ assert_equal font['dw'], 556
46
+ font = pdf.getFontBuffer('helveticaBI')
47
+ assert_equal font['name'], 'Helvetica-BoldOblique'
48
+ assert_equal font['dw'], 556
49
+
50
+ pdf.set_font('times', '', 18)
51
+ pdf.set_font('times', 'B', 18)
52
+ pdf.set_font('times', 'I', 18)
53
+ pdf.set_font('times', 'BI', 18)
54
+
55
+ font = pdf.getFontBuffer('times')
56
+ assert_equal font['name'], 'Times-Roman'
57
+ font = pdf.getFontBuffer('timesB')
58
+ assert_equal font['name'], 'Times-Bold'
59
+ font = pdf.getFontBuffer('timesI')
60
+ assert_equal font['name'], 'Times-Italic'
61
+ font = pdf.getFontBuffer('timesBI')
62
+ assert_equal font['name'], 'Times-BoldItalic'
63
+
64
+ pdf.set_font('courier', '', 18)
65
+ pdf.set_font('courier', 'B', 18)
66
+ pdf.set_font('courier', 'I', 18)
67
+ pdf.set_font('courier', 'BI', 18)
68
+
69
+ font = pdf.getFontBuffer('courier')
70
+ assert_equal font['name'], 'Courier'
71
+ font = pdf.getFontBuffer('courierB')
72
+ assert_equal font['name'], 'Courier-Bold'
73
+ font = pdf.getFontBuffer('courierI')
74
+ assert_equal font['name'], 'Courier-Oblique'
75
+ font = pdf.getFontBuffer('courierBI')
76
+ assert_equal font['name'], 'Courier-BoldOblique'
77
+
78
+ pdf.set_font('symbol', '', 18)
79
+ font = pdf.getFontBuffer('symbol')
80
+ assert_equal font['name'], 'Symbol'
81
+
82
+ pdf.set_font('zapfdingbats', '', 18)
83
+ font = pdf.getFontBuffer('zapfdingbats')
84
+ assert_equal font['name'], 'ZapfDingbats'
85
+
86
+ pdf.putfonts()
87
+ end
88
+
89
+ test "TrueTypeUnicode Font test" do
90
+ pdf = MYPDF.new
91
+
92
+ pdf.set_font('freesans', '', 18)
93
+ pdf.set_font('freesans', 'B', 18)
94
+ pdf.set_font('freesans', 'I', 18)
95
+ pdf.set_font('freesans', 'BI', 18)
96
+
97
+ pdf.set_font('freeserif', '', 18)
98
+ pdf.set_font('freeserif', 'B', 18)
99
+ pdf.set_font('freeserif', 'I', 18)
100
+ pdf.set_font('freeserif', 'BI', 18)
101
+
102
+ pdf.set_font('freemono', '', 18)
103
+ pdf.set_font('freemono', 'B', 18)
104
+ pdf.set_font('freemono', 'I', 18)
105
+ pdf.set_font('freemono', 'BI', 18)
106
+
107
+ pdf.set_font('dejavusans', '', 18)
108
+ pdf.set_font('dejavusans', 'B', 18)
109
+ pdf.set_font('dejavusans', 'I', 18)
110
+ pdf.set_font('dejavusans', 'BI', 18)
111
+
112
+ pdf.putfonts()
113
+ end
114
+
115
+ test "cidfont0 Font test" do
116
+ pdf = MYPDF.new
117
+
118
+ pdf.set_font('cid0cs', '', 18)
119
+ pdf.set_font('cid0cs', 'B', 18)
120
+ pdf.set_font('cid0cs', 'I', 18)
121
+ pdf.set_font('cid0cs', 'BI', 18)
122
+
123
+ pdf.set_font('cid0ct', '', 18)
124
+ pdf.set_font('cid0ct', 'B', 18)
125
+ pdf.set_font('cid0ct', 'I', 18)
126
+ pdf.set_font('cid0ct', 'BI', 18)
127
+
128
+ pdf.set_font('cid0jp', '', 18)
129
+ pdf.set_font('cid0jp', 'B', 18)
130
+ pdf.set_font('cid0jp', 'I', 18)
131
+ pdf.set_font('cid0jp', 'BI', 18)
132
+
133
+ pdf.set_font('cid0kr', '', 18)
134
+ pdf.set_font('cid0kr', 'B', 18)
135
+ pdf.set_font('cid0kr', 'I', 18)
136
+ pdf.set_font('cid0kr', 'BI', 18)
137
+
138
+ pdf.set_font('kozgopromedium', '', 18)
139
+ pdf.set_font('kozgopromedium', 'B', 18)
140
+ pdf.set_font('kozgopromedium', 'I', 18)
141
+ pdf.set_font('kozgopromedium', 'BI', 18)
142
+
143
+ font = pdf.getFontBuffer('kozgopromedium')
144
+ assert_equal font['desc']['StemV'], 99
145
+ assert_equal font['desc']['ItalicAngle'], 0
146
+
147
+ font = pdf.getFontBuffer('kozgopromediumB')
148
+ assert_equal font['desc']['StemV'], 99 * 2
149
+ assert_equal font['desc']['ItalicAngle'], 0
150
+
151
+ font = pdf.getFontBuffer('kozgopromediumI')
152
+ assert_equal font['desc']['StemV'], 99
153
+ assert_equal font['desc']['ItalicAngle'], -11
154
+
155
+ font = pdf.getFontBuffer('kozgopromediumBI')
156
+ assert_equal font['desc']['StemV'], 99 * 2
157
+ assert_equal font['desc']['ItalicAngle'], -11
158
+
159
+ pdf.set_font('kozminproregular', '', 18)
160
+ pdf.set_font('kozminproregular', 'B', 18)
161
+ pdf.set_font('kozminproregular', 'I', 18)
162
+ pdf.set_font('kozminproregular', 'BI', 18)
163
+
164
+ pdf.set_font('msungstdlight', '', 18)
165
+ pdf.set_font('msungstdlight', 'B', 18)
166
+ pdf.set_font('msungstdlight', 'I', 18)
167
+ pdf.set_font('msungstdlight', 'BI', 18)
168
+
169
+ pdf.set_font('stsongstdlight', '', 18)
170
+ pdf.set_font('stsongstdlight', 'B', 18)
171
+ pdf.set_font('stsongstdlight', 'I', 18)
172
+ pdf.set_font('stsongstdlight', 'BI', 18)
173
+
174
+ pdf.set_font('hysmyeongjostdmedium', '', 18)
175
+ pdf.set_font('hysmyeongjostdmedium', 'B', 18)
176
+ pdf.set_font('hysmyeongjostdmedium', 'I', 18)
177
+ pdf.set_font('hysmyeongjostdmedium', 'BI', 18)
178
+
179
+ pdf.putfonts()
180
+ end
181
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfFormatTest < ActiveSupport::TestCase
4
+
5
+ test "set_page_orientation" do
6
+ pdf = RBPDF.new
7
+
8
+ pagedim = pdf.set_page_orientation('')
9
+ assert_equal pagedim['or'], 'P'
10
+ assert_equal pagedim['pb'], true
11
+ assert_equal pagedim['olm'], nil
12
+ assert_equal pagedim['orm'], nil
13
+ assert_in_delta pagedim['bm'], 20, 0.1
14
+
15
+ pagedim = pdf.set_page_orientation('P')
16
+ assert_equal pagedim['or'], 'P'
17
+
18
+ pagedim = pdf.set_page_orientation('L', false)
19
+ assert_equal pagedim['or'], 'L'
20
+ assert_equal pagedim['pb'], false
21
+
22
+ pagedim = pdf.set_page_orientation('P', true, 5)
23
+ assert_equal pagedim['or'], 'P'
24
+ assert_equal pagedim['pb'], true
25
+ assert_equal pagedim['bm'], 5
26
+ end
27
+ end
@@ -0,0 +1,126 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+ class MYPDF < RBPDF
5
+ def getSpaceString
6
+ super
7
+ end
8
+ end
9
+
10
+ test "get_html_unit_to_units test" do
11
+ pdf = RBPDF.new
12
+ unit = pdf.get_html_unit_to_units("100", 1)
13
+ assert_in_delta unit, 35.27, 0.01
14
+
15
+ unit = pdf.get_html_unit_to_units("100px", 1, 'px', false)
16
+ assert_in_delta unit, 35.27, 0.01
17
+
18
+ unit = pdf.get_html_unit_to_units(100, 1, 'pt', false)
19
+ assert_in_delta unit, 35.27, 0.01
20
+
21
+ unit = pdf.get_html_unit_to_units(100.0, 1, 'pt', false)
22
+ assert_in_delta unit, 35.27, 0.01
23
+
24
+ unit = pdf.get_html_unit_to_units("100.0", 1, 'pt', false)
25
+ assert_in_delta unit, 35.27, 0.01
26
+
27
+ unit = pdf.get_html_unit_to_units("200", 1, '%', false)
28
+ assert_equal unit, 2.0
29
+
30
+ unit = pdf.get_html_unit_to_units("400%", 1, '%', false)
31
+ assert_equal unit, 4.0
32
+
33
+ unit = pdf.get_html_unit_to_units("10", 1, '%', false)
34
+ assert_equal unit, 0.1
35
+
36
+ unit = pdf.get_html_unit_to_units("10mm", 1, '%', false)
37
+ assert_in_delta unit, 10, 0.01
38
+
39
+ unit = pdf.get_html_unit_to_units("10", 1, 'mm', false)
40
+ assert_in_delta unit, 10, 0.01
41
+
42
+ unit = pdf.get_html_unit_to_units(10, 1, 'mm', false)
43
+ assert_in_delta unit, 10, 0.01
44
+
45
+ unit = pdf.get_html_unit_to_units("1", 1, 'cm', false)
46
+ assert_in_delta unit, 10, 0.01
47
+
48
+ unit = pdf.get_html_unit_to_units(10, 1, 'em', false)
49
+ assert_equal unit, 10
50
+
51
+ unit = pdf.get_html_unit_to_units(10, 2, 'em', false)
52
+ assert_equal unit, 20
53
+ end
54
+
55
+ test "getSpaceString test" do
56
+ pdf = MYPDF.new
57
+ spacestr = pdf.getSpaceString()
58
+ assert_equal spacestr, 32.chr
59
+
60
+ pdf.set_font('freesans', '', 18)
61
+ spacestr = pdf.getSpaceString()
62
+ assert_equal spacestr, 0.chr + 32.chr
63
+ end
64
+
65
+ test "revstrpos test" do
66
+ pdf = RBPDF.new
67
+ pos = pdf.revstrpos('abcd efgh ', 'cd')
68
+ assert_equal pos, 2
69
+
70
+ pos = pdf.revstrpos('abcd efgh ', 'cd ')
71
+ assert_equal pos, 2
72
+
73
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd')
74
+ assert_equal pos, 12
75
+
76
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'zy')
77
+ assert_equal pos, nil
78
+ end
79
+
80
+ test "revstrpos offset test 1" do
81
+ pdf = RBPDF.new
82
+
83
+ pos = pdf.revstrpos('abcd efgh ', 'cd', 3) # 'abc'
84
+ assert_equal pos, nil
85
+
86
+ pos = pdf.revstrpos('abcd efgh ', 'cd', 4) # 'abcd'
87
+ assert_equal pos, 2
88
+
89
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 3) # 'abc'
90
+ assert_equal pos, nil
91
+
92
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 4) # 'abcd'
93
+ assert_equal pos, 2
94
+
95
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 13) # 'abcd efgh abc'
96
+ assert_equal pos, 2
97
+
98
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', 14) # 'abcd efgh abcd'
99
+ assert_equal pos, 12
100
+ end
101
+
102
+ test "revstrpos offset test 2" do
103
+ pdf = RBPDF.new
104
+
105
+ pos = pdf.revstrpos('abcd efgh ', 'cd', -6) # 'abcd'
106
+ assert_equal pos, 2
107
+
108
+ pos = pdf.revstrpos('abcd efgh ', 'cd', -7) # 'abc'
109
+ assert_equal pos, nil
110
+
111
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', -4) # 'abcd efgh abcd'
112
+ assert_equal pos, 12
113
+
114
+ pos = pdf.revstrpos('abcd efgh abcd efg', 'cd', -5) # 'abcd efgh abc'
115
+ assert_equal pos, 2
116
+ end
117
+
118
+ test "set_line_style Basic test" do
119
+ pdf = RBPDF.new
120
+
121
+ pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => [0, 0, 0]})
122
+ pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => '', 'phase' => 0, 'color' => [255, 0, 0]})
123
+ pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => '1,2,3,4', 'phase' => 0, 'color' => [255, 0, 0]})
124
+ pdf.set_line_style({'width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 'a', 'phase' => 0, 'color' => [255, 0, 0]}) # Invalid
125
+ end
126
+ end
@@ -0,0 +1,164 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+ class MYPDF < RBPDF
5
+ def getPageBuffer(page)
6
+ super
7
+ end
8
+ end
9
+
10
+ test "write_html Basic test" do
11
+ pdf = RBPDF.new
12
+ pdf.add_page()
13
+
14
+
15
+ htmlcontent = '<h1>HTML Example</h1>'
16
+ pdf.write_html(htmlcontent, true, 0, true, 0)
17
+
18
+ htmlcontent = 'abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890'
19
+ pdf.write_html(htmlcontent, true, 0, true, 0)
20
+
21
+ 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>'
22
+ pdf.write_html(htmlcontent, true, 0, true, 0)
23
+
24
+ pno = pdf.get_page
25
+ assert_equal pno, 3
26
+ end
27
+
28
+ test "write_html Table test" do
29
+ pdf = RBPDF.new
30
+ pdf.add_page()
31
+
32
+ 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>'
33
+ pdf.write_html(tablehtml, true, 0, true, 0)
34
+
35
+ 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>'
36
+
37
+ 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>'
38
+ pdf.write_html(tablehtml, true, 0, true, 0)
39
+
40
+ pno = pdf.get_page
41
+ assert_equal pno, 3
42
+ end
43
+
44
+ test "write_html Table thead tag test 1" do
45
+ pdf = MYPDF.new
46
+ pdf.add_page()
47
+
48
+ tablehtml = '<table border="1" cellpadding="1" cellspacing="1">
49
+ <thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead>
50
+ <tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr>
51
+ </table>'
52
+
53
+ pdf.write_html(tablehtml, true, 0, true, 0)
54
+ page = pdf.get_page
55
+ assert_equal 1, page
56
+
57
+ content = []
58
+ contents = pdf.getPageBuffer(page)
59
+ contents.each_line {|line| content.push line.chomp }
60
+
61
+ count = 0
62
+ content.each do |line|
63
+ count += 1 if line =~ /ABCD/
64
+ end
65
+ assert_equal count, 1
66
+ end
67
+
68
+ test "write_html Table thead tag test 2" do
69
+ pdf = MYPDF.new
70
+ pdf.add_page()
71
+
72
+ 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>'
73
+
74
+ tablehtml = '<table border="1" cellpadding="1" cellspacing="1"><thead><tr><td>ABCD</td><td>EFGH</td><td>IJKL</td></tr></thead>
75
+ <tr><td>abcd</td><td>efgh</td><td>ijkl</td></tr>
76
+ <tr><td>' + htmlcontent + '</td></tr></table>'
77
+
78
+ pdf.write_html(tablehtml, true, 0, true, 0)
79
+ page = pdf.get_page
80
+ assert_equal 3, page
81
+
82
+ content = []
83
+ contents = pdf.getPageBuffer(1)
84
+ contents.each_line {|line| content.push line.chomp }
85
+ count_head = 0
86
+ count = 0
87
+ content.each do |line|
88
+ count_head += 1 if line =~ /ABCD/
89
+ count += 1 if line =~ /abcd/
90
+ end
91
+ assert_equal count_head, 1
92
+ assert_equal count, 1
93
+
94
+ content = []
95
+ contents = pdf.getPageBuffer(2)
96
+ contents.each_line {|line| content.push line.chomp }
97
+ count_head = 0
98
+ count = 0
99
+ content.each do |line|
100
+ count_head += 1 if line =~ /ABCD/
101
+ count += 1 if line =~ /abcd/
102
+ end
103
+ assert_equal count_head, 1
104
+ assert_equal count, 0
105
+
106
+ content = []
107
+ contents = pdf.getPageBuffer(3)
108
+ contents.each_line {|line| content.push line.chomp }
109
+ count_head = 0
110
+ count = 0
111
+ content.each do |line|
112
+ count_head += 1 if line =~ /ABCD/
113
+ count += 1 if line =~ /abcd/
114
+ end
115
+ assert_equal count_head, 1
116
+ assert_equal count, 0
117
+ end
118
+
119
+ test "write_html ASCII text test" do
120
+ pdf = MYPDF.new
121
+ pdf.add_page()
122
+
123
+ text = 'HTML Example'
124
+ htmlcontent = '<h1>' + text + '</h1>'
125
+ pdf.write_html(htmlcontent, true, 0, true, 0)
126
+ page = pdf.get_page
127
+ assert_equal 1, page
128
+
129
+ content = []
130
+ contents = pdf.getPageBuffer(1)
131
+ contents.each_line {|line| content.push line.chomp }
132
+
133
+ count = 0
134
+ content.each do |line|
135
+ count += 1 unless line.scan(text).empty?
136
+ end
137
+ assert_equal count, 1
138
+ end
139
+
140
+ test "write_html Non ASCII text test" do
141
+ pdf = MYPDF.new
142
+ pdf.add_page()
143
+
144
+ text = 'HTML Example ' + "\xc2\x83\xc2\x86"
145
+
146
+ htmlcontent = '<h1>' + text + '</h1>'
147
+ pdf.write_html(htmlcontent, true, 0, true, 0)
148
+ page = pdf.get_page
149
+ assert_equal 1, page
150
+
151
+ content = []
152
+ contents = pdf.getPageBuffer(1)
153
+ contents.each_line {|line| content.push line.chomp }
154
+
155
+ text = 'HTML Example ' + "\x83\x86"
156
+ text.force_encoding('ASCII-8BIT') if text.respond_to?(:force_encoding)
157
+ count = 0
158
+ content.each do |line|
159
+ line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
160
+ count += 1 unless line.scan(text).empty?
161
+ end
162
+ assert_equal count, 1
163
+ end
164
+ end