rbpdf 1.18.0

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.
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