rbpdf 1.19.5 → 1.19.6
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 +12 -0
- data/Gemfile +1 -2
- data/lib/rbpdf.rb +36 -4
- data/lib/rbpdf/version.rb +2 -2
- data/test/rbpdf_cell_test.rb +75 -190
- data/test/rbpdf_dom_test.rb +193 -269
- data/test/rbpdf_examples_test.rb +83 -0
- data/test/rbpdf_html_anchor_test.rb +2 -2
- data/test/rbpdf_htmlcell_test.rb +40 -48
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eb07b943fb93bd28c583e7d1725cb594fd38e37e
|
|
4
|
+
data.tar.gz: bc4e241e6d61bf6ff850080c598fe468a0c524a7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 01bf0690ab57b3248123090f7832826d60247d6361e276187a9efa98855a95733a869a48edd3d85f3b938f78c4ca424f7a830c6c203146830a350e2ee4bf8b9d
|
|
7
|
+
data.tar.gz: 65cc6adaff4ee5271c0f9d006e4dc600d93766c0d807fb90fd6120399ed73316258aee785bff8f963bee85a920705cb4414ef21fbe964785ea6543399e78995f
|
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
1.19.6 2018-10-06
|
|
2
|
+
- The problem of the line feed position of Ln() function has been fixed.
|
|
3
|
+
- Fixed a problem of line feed position occurring in the following <pre> tag of HTML in the following cases.
|
|
4
|
+
When a <br> tag is included immediately after the start of the <pre> tag.
|
|
5
|
+
When a <br> tag is included immediately before the end of the <pre> tag.
|
|
6
|
+
When a line feed is included immediately after the start of the tag.
|
|
7
|
+
When a line feed is included immediately before the end of the tag.
|
|
8
|
+
- Fixed a problem of line feed position occurring in the following </pre> and <p> tags of HTML in the following cases.
|
|
9
|
+
When a space is included between the </pre> tag and the <p> tag.
|
|
10
|
+
- Cell link bug fixed.
|
|
11
|
+
- Examples test added.
|
|
12
|
+
|
|
1
13
|
1.19.5 2018-06-24
|
|
2
14
|
- Fixed that the handling of Tempfile was wrong.
|
|
3
15
|
- Fixed compatibility problem with Magick::RGBColorspace and Magick::SRGBColorspace.
|
data/Gemfile
CHANGED
data/lib/rbpdf.rb
CHANGED
|
@@ -2994,7 +2994,7 @@ class RBPDF
|
|
|
2994
2994
|
#
|
|
2995
2995
|
def AddLink()
|
|
2996
2996
|
#Create a new internal link
|
|
2997
|
-
n = @links.length
|
|
2997
|
+
n = @links.length + 1
|
|
2998
2998
|
@links[n]=[0,0];
|
|
2999
2999
|
return n;
|
|
3000
3000
|
end
|
|
@@ -3757,7 +3757,7 @@ class RBPDF
|
|
|
3757
3757
|
if (@color_flag)
|
|
3758
3758
|
s<<' Q';
|
|
3759
3759
|
end
|
|
3760
|
-
if link && ((link.is_a?(String) and !link.empty?) or (link.is_a?(Integer) and link
|
|
3760
|
+
if link && ((link.is_a?(String) and !link.empty?) or (link.is_a?(Integer) and link != 0)) # Integer is PDF file Page No.
|
|
3761
3761
|
Link(xdx, y + ((h - @font_size) / 2.0), width, @font_size, link, ns)
|
|
3762
3762
|
end
|
|
3763
3763
|
end
|
|
@@ -3993,7 +3993,11 @@ class RBPDF
|
|
|
3993
3993
|
end
|
|
3994
3994
|
end
|
|
3995
3995
|
SetX(nx)
|
|
3996
|
+
|
|
3997
|
+
prevLastH = @lasth
|
|
3996
3998
|
ccode = getCellCode(w, h, '', cborder, 1, '', fill, '', 0, false)
|
|
3999
|
+
@lasth = prevLastH
|
|
4000
|
+
|
|
3997
4001
|
if (cborder != 0) or (fill == 1)
|
|
3998
4002
|
pagebuff = getPageBuffer(@page)
|
|
3999
4003
|
pstart = pagebuff[0, @intmrk[@page]]
|
|
@@ -4007,8 +4011,12 @@ class RBPDF
|
|
|
4007
4011
|
# put cursor at the beginning of text
|
|
4008
4012
|
SetY(y)
|
|
4009
4013
|
SetX(x)
|
|
4014
|
+
|
|
4015
|
+
prevLastH = @lasth
|
|
4010
4016
|
# design a cell around the text
|
|
4011
4017
|
ccode = getCellCode(w, h, '', border, 1, '', fill, '', 0, true)
|
|
4018
|
+
@lasth = prevLastH
|
|
4019
|
+
|
|
4012
4020
|
if (border != 0) or (fill == 1)
|
|
4013
4021
|
if !@transfmrk[@page].nil?
|
|
4014
4022
|
pagemark = @transfmrk[@page]
|
|
@@ -11242,8 +11250,24 @@ protected
|
|
|
11242
11250
|
html_b = html[offset, pos - offset + 6]
|
|
11243
11251
|
while html_b =~ /<xre([^\>]*)>(.*?)\n(.*?)<\/pre>/mi
|
|
11244
11252
|
# preserve newlines on <pre> tag
|
|
11245
|
-
html_b = html_b.gsub(/<xre([^\>]*)>(.*?)\n(.*?)<\/pre>/mi
|
|
11253
|
+
html_b = html_b.gsub(/<xre([^\>]*)>(.*?)\n(.*?)<\/pre>/mi) do
|
|
11254
|
+
if ($2 != '') and ($3 != '')
|
|
11255
|
+
"<xre#{$1}>#{$2}<br />#{$3}</pre>"
|
|
11256
|
+
elsif ($2 == '') and ($3 != '')
|
|
11257
|
+
"<xre#{$1}>#{$3}</pre>"
|
|
11258
|
+
elsif ($2 != '') and ($3 == '')
|
|
11259
|
+
"<xre#{$1}>#{$2}</pre>"
|
|
11260
|
+
else
|
|
11261
|
+
"<xre#{$1}></pre>"
|
|
11262
|
+
end
|
|
11263
|
+
end
|
|
11246
11264
|
end
|
|
11265
|
+
|
|
11266
|
+
# Delete the <br />(<br>) tag located immediately after the <pre> tag.
|
|
11267
|
+
html_b = html_b.gsub(/<xre([^\>]*)>((?:<[^\>]+>)*)<br *\/*>/, "<xre\\1>\\2")
|
|
11268
|
+
# Delete the <br />(<br>) tag located immediately before the </pre> tag.
|
|
11269
|
+
html_b = html_b.gsub(/<br *\/*>((?:<\/[^\>]+>)*)<\/pre>/, "\\1</pre>")
|
|
11270
|
+
|
|
11247
11271
|
while html_b =~ /<xre([^\>]*)>(.*?)[\s](.*?)<\/pre>/mi
|
|
11248
11272
|
# preserve whitespace on <pre> tag
|
|
11249
11273
|
html_b = html_b.gsub(/<xre([^\>]*)>(.*?)[\s](.*?)<\/pre>/mi, "<xre\\1>\\2 \\3</pre>")
|
|
@@ -12794,7 +12818,7 @@ public
|
|
|
12794
12818
|
startlinepage = @page
|
|
12795
12819
|
end
|
|
12796
12820
|
end
|
|
12797
|
-
elsif dom[key]['value'].length > 0
|
|
12821
|
+
elsif dom[key]['value'].strip.length > 0
|
|
12798
12822
|
# print list-item
|
|
12799
12823
|
if !empty_string(@lispacer)
|
|
12800
12824
|
SetFont(pfontname, pfontstyle, pfontsize)
|
|
@@ -13596,8 +13620,12 @@ public
|
|
|
13596
13620
|
@x += @pagedim[page]['olm'] - @pagedim[startpage]['olm']
|
|
13597
13621
|
end
|
|
13598
13622
|
end
|
|
13623
|
+
|
|
13624
|
+
prevLastH = @lasth
|
|
13599
13625
|
# design a cell around the text
|
|
13600
13626
|
ccode = @fill_color + "\n" + getCellCode(cw, ch, '', cborder, 1, '', fill, '', 0, true)
|
|
13627
|
+
@lasth = prevLastH
|
|
13628
|
+
|
|
13601
13629
|
if (cborder != 0) or (fill == 1)
|
|
13602
13630
|
pagebuff = getPageBuffer(@page)
|
|
13603
13631
|
pstart = pagebuff[0, @intmrk[@page]]
|
|
@@ -13618,8 +13646,12 @@ public
|
|
|
13618
13646
|
@y = parent['starty']
|
|
13619
13647
|
cw = (cellpos['endx'] - cellpos['startx']).abs
|
|
13620
13648
|
ch = endy - parent['starty']
|
|
13649
|
+
|
|
13650
|
+
prevLastH = @lasth
|
|
13621
13651
|
# design a cell around the text
|
|
13622
13652
|
ccode = @fill_color + "\n" + getCellCode(cw, ch, '', border, 1, '', fill, '', 0, true)
|
|
13653
|
+
@lasth = prevLastH
|
|
13654
|
+
|
|
13623
13655
|
if (border != 0) or (fill == 1)
|
|
13624
13656
|
if !@transfmrk[@page].nil?
|
|
13625
13657
|
pagemark = @transfmrk[@page]
|
data/lib/rbpdf/version.rb
CHANGED
data/test/rbpdf_cell_test.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (c) 2011-
|
|
1
|
+
# Copyright (c) 2011-2018 NAITOH Jun
|
|
2
2
|
# Released under the MIT license
|
|
3
3
|
# http://www.opensource.org/licenses/MIT
|
|
4
4
|
|
|
@@ -18,6 +18,9 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
18
18
|
pdf.add_page()
|
|
19
19
|
content = []
|
|
20
20
|
contents = pdf.send(:getCellCode, 10, 10, 'abc')
|
|
21
|
+
#pdf.send(:getCellCode, 10, 10, 'abc')
|
|
22
|
+
#contents = pdf.output()
|
|
23
|
+
|
|
21
24
|
contents.each_line {|line| content.push line.chomp }
|
|
22
25
|
|
|
23
26
|
assert_equal 2, content.length
|
|
@@ -131,203 +134,85 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
131
134
|
assert_equal " /Annots [ 200001 0 R ]", annots
|
|
132
135
|
end
|
|
133
136
|
|
|
134
|
-
test "
|
|
135
|
-
pdf = RBPDF.new
|
|
136
|
-
pdf.add_page
|
|
137
|
-
|
|
138
|
-
txt = 'abcdefg'
|
|
139
|
-
|
|
140
|
-
w = 50
|
|
141
|
-
y1 = pdf.get_y
|
|
142
|
-
pdf.multi_cell(w, 0, txt)
|
|
143
|
-
pno = pdf.get_page
|
|
144
|
-
assert_equal 1, pno
|
|
145
|
-
y2 = pdf.get_y
|
|
146
|
-
h1 = y2 - y1
|
|
147
|
-
|
|
148
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
149
|
-
assert_in_delta h1, h2, 0.01
|
|
150
|
-
|
|
151
|
-
line = pdf.get_num_lines(txt, w)
|
|
152
|
-
assert_equal 1, line
|
|
153
|
-
|
|
154
|
-
w = 20
|
|
155
|
-
y1 = pdf.get_y
|
|
156
|
-
pdf.multi_cell(w, 0, txt)
|
|
157
|
-
pno = pdf.get_page
|
|
158
|
-
assert_equal 1, pno
|
|
159
|
-
y2 = pdf.get_y
|
|
160
|
-
h1 = y2 - y1
|
|
161
|
-
|
|
162
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
163
|
-
assert_in_delta h1, h2, 0.01
|
|
164
|
-
|
|
165
|
-
line = pdf.get_num_lines(txt, w)
|
|
166
|
-
assert_equal 1, line
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
test "getStringHeight Line Break test" do
|
|
170
|
-
pdf = RBPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
|
|
171
|
-
pdf.add_page
|
|
172
|
-
|
|
173
|
-
txt = 'abcdefg'
|
|
174
|
-
|
|
175
|
-
w = 10
|
|
176
|
-
y1 = pdf.get_y
|
|
177
|
-
pdf.multi_cell(w, 0, txt)
|
|
178
|
-
pno = pdf.get_page
|
|
179
|
-
assert_equal 1, pno
|
|
180
|
-
y2 = pdf.get_y
|
|
181
|
-
h1 = y2 - y1
|
|
182
|
-
|
|
183
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
184
|
-
assert_in_delta h1, h2, 0.01
|
|
185
|
-
|
|
186
|
-
line = pdf.get_num_lines(txt, w)
|
|
187
|
-
assert_equal 3, line
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
w = 5
|
|
191
|
-
y1 = pdf.get_y
|
|
192
|
-
pdf.multi_cell(w, 0, txt)
|
|
193
|
-
pno = pdf.get_page
|
|
194
|
-
assert_equal 1, pno
|
|
195
|
-
y2 = pdf.get_y
|
|
196
|
-
h1 = y2 - y1
|
|
197
|
-
|
|
198
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
199
|
-
assert_in_delta h1, h2, 0.01
|
|
200
|
-
|
|
201
|
-
line = pdf.get_num_lines(txt, w)
|
|
202
|
-
assert_equal 7, line
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
test "getStringHeight Multi Line test" do
|
|
206
|
-
pdf = RBPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
|
|
207
|
-
pdf.add_page
|
|
208
|
-
|
|
209
|
-
txt = "abc\ndif\nhij"
|
|
210
|
-
|
|
211
|
-
w = 100
|
|
212
|
-
y1 = pdf.get_y
|
|
213
|
-
pdf.multi_cell(w, 0, txt)
|
|
214
|
-
pno = pdf.get_page
|
|
215
|
-
assert_equal 1, pno
|
|
216
|
-
y2 = pdf.get_y
|
|
217
|
-
h1 = y2 - y1
|
|
218
|
-
|
|
219
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
220
|
-
assert_in_delta h1, h2, 0.01
|
|
221
|
-
|
|
222
|
-
line = pdf.get_num_lines(txt, w)
|
|
223
|
-
assert_equal 3, line
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
test "getStringHeight Minimum Width test 1" do
|
|
227
|
-
pdf = RBPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
|
|
228
|
-
pdf.add_page
|
|
229
|
-
|
|
230
|
-
w = pdf.get_string_width('OO')
|
|
137
|
+
test "Cell link with Close and output PDF document test" do
|
|
138
|
+
pdf = RBPDF.new
|
|
231
139
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
y1 = pdf.get_y
|
|
235
|
-
pdf.multi_cell(w, 0, txt)
|
|
236
|
-
pno = pdf.get_page
|
|
237
|
-
assert_equal 1, pno
|
|
238
|
-
y2 = pdf.get_y
|
|
239
|
-
h1 = y2 - y1
|
|
140
|
+
# add a page
|
|
141
|
+
pdf.add_page()
|
|
240
142
|
|
|
241
|
-
|
|
242
|
-
|
|
143
|
+
text="DUMMY"
|
|
144
|
+
pdf.cell(0, 0, text, 1, 1, 'L', 1, 0)
|
|
243
145
|
|
|
244
|
-
|
|
245
|
-
|
|
146
|
+
# Close and output PDF document
|
|
147
|
+
content = []
|
|
148
|
+
contents = pdf.output()
|
|
149
|
+
contents.each_line {|line| content.push line.chomp }
|
|
150
|
+
assert_match(/3 0 obj/, content[1])
|
|
246
151
|
end
|
|
247
152
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
153
|
+
texts = {
|
|
154
|
+
'Basic' => {:params => [{:txt => "abcdefg", :w => 50, :pno => 1, :line => 1},
|
|
155
|
+
{:txt => "abcdefg", :w => 20, :pno => 1, :line => 1}]},
|
|
156
|
+
'Line Break' => {:params => [{:txt => "abcdefg", :w => 10, :pno => 1, :line => 3},
|
|
157
|
+
{:txt => "abcdefg", :w => 5, :pno => 1, :line => 7}]},
|
|
158
|
+
'Multi Line' => {:params => [{:txt => "abc\ndif\nhij", :w => 100, :pno => 1, :line => 3}]},
|
|
159
|
+
'Minimum Width' => {:params => [{:txt => "Export to PDF: align is Good.", :w => 'OO', :pno => 1, :line => 16}]},
|
|
160
|
+
'Minimum Width with font' => {:font => "kozminproregular", :orientation => 'L',
|
|
161
|
+
:params => [{:txt => "20", :w => '20', :pno => 1, :line => 2}]},
|
|
162
|
+
'Minimum Bidi' => {:params => [{:txt => "\xd7\xa2\xd7\x91\xd7\xa8\xd7\x99\xd7\xaa", :w => 'OO', :pno => 1, :line => 5},
|
|
163
|
+
{:txt => "? \xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x9c\xd7\x95 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94 \xd7\x90\xd7\x99\xd7\x9a \xd7\x94\xd7\xa7\xd7\x9c\xd7\x99\xd7\x98\xd7\x94", :w => 'OO', :pno => 1, :line => 41}]},
|
|
164
|
+
'Minimum Bidi with font' => {:font => "freesans", :rtl => true,
|
|
165
|
+
:params => [{:txt => "\xd7\x9c 000", :w => 'OO', :pno => 1, :line => 3}]},
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
data(texts)
|
|
169
|
+
test "getStringHeight test" do |data|
|
|
170
|
+
orientation = data[:orientation] ? data[:orientation] : 'P'
|
|
171
|
+
pdf = RBPDF.new(orientation, 'mm', 'A4', true, "UTF-8", true)
|
|
172
|
+
pdf.set_font(data[:font], '', 8) if data[:font]
|
|
173
|
+
|
|
174
|
+
if data[:rtl]
|
|
175
|
+
pdf.set_rtl(true)
|
|
176
|
+
pdf.set_temp_rtl('R')
|
|
177
|
+
end
|
|
264
178
|
|
|
265
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
266
|
-
assert_in_delta h1, h2, 0.01
|
|
267
|
-
|
|
268
|
-
line = pdf.get_num_lines(txt, w)
|
|
269
|
-
assert_equal 2, line
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
test "getStringHeight Minimum Bidi test 1" do
|
|
273
|
-
pdf = RBPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
|
|
274
179
|
pdf.add_page
|
|
275
180
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
pdf.set_temp_rtl('R')
|
|
312
|
-
pdf.add_page
|
|
313
|
-
|
|
314
|
-
margins = pdf.get_margins
|
|
315
|
-
w = pdf.get_string_width('OO') + margins['cell'] * 2
|
|
316
|
-
|
|
317
|
-
txt = "\xd7\x9c 000"
|
|
318
|
-
|
|
319
|
-
y1 = pdf.get_y
|
|
320
|
-
pdf.multi_cell(w, 0, txt)
|
|
321
|
-
pno = pdf.get_page
|
|
322
|
-
assert_equal 1, pno
|
|
323
|
-
y2 = pdf.get_y
|
|
324
|
-
h1 = y2 - y1
|
|
325
|
-
|
|
326
|
-
h2 = pdf.getStringHeight(w, txt)
|
|
327
|
-
assert_in_delta h1, h2, 0.01
|
|
328
|
-
|
|
329
|
-
line = pdf.get_num_lines(txt, w)
|
|
330
|
-
assert_equal 3, line
|
|
181
|
+
data[:params].each_with_index {|param, i|
|
|
182
|
+
txt = param[:txt]
|
|
183
|
+
if param[:w].is_a? String
|
|
184
|
+
if data[:font]
|
|
185
|
+
margins = pdf.get_margins
|
|
186
|
+
w = pdf.get_string_width(param[:w]) + margins['cell'] * 2
|
|
187
|
+
else
|
|
188
|
+
w = pdf.get_string_width(param[:w])
|
|
189
|
+
end
|
|
190
|
+
else
|
|
191
|
+
w = param[:w]
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
lasth_0 = pdf.get_last_h
|
|
195
|
+
y1 = pdf.get_y
|
|
196
|
+
pdf.multi_cell(w, 0, txt)
|
|
197
|
+
lasth_1 = pdf.get_last_h
|
|
198
|
+
pno = pdf.get_page
|
|
199
|
+
assert_equal param[:pno], pno
|
|
200
|
+
|
|
201
|
+
if i == 0
|
|
202
|
+
assert_not_equal 0, lasth_1
|
|
203
|
+
else
|
|
204
|
+
assert_equal lasth_0, lasth_1
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
y2 = pdf.get_y
|
|
208
|
+
h1 = y2 - y1
|
|
209
|
+
|
|
210
|
+
h2 = pdf.getStringHeight(w, txt)
|
|
211
|
+
assert_in_delta h1, h2, 0.01
|
|
212
|
+
|
|
213
|
+
line = pdf.get_num_lines(txt, w)
|
|
214
|
+
assert_equal param[:line], line
|
|
215
|
+
}
|
|
331
216
|
end
|
|
332
217
|
|
|
333
218
|
test "removeSHY encoding test" do
|
data/test/rbpdf_dom_test.rb
CHANGED
|
@@ -6,343 +6,267 @@ require 'test_helper'
|
|
|
6
6
|
|
|
7
7
|
class RbpdfTest < Test::Unit::TestCase
|
|
8
8
|
class MYPDF < RBPDF
|
|
9
|
-
def getHtmlDomArray(html)
|
|
10
|
-
super
|
|
11
|
-
end
|
|
12
|
-
def openHTMLTagHandler(dom, key, cell)
|
|
13
|
-
super
|
|
14
|
-
end
|
|
15
9
|
def get_temp_rtl
|
|
16
10
|
@tmprtl
|
|
17
11
|
end
|
|
18
12
|
end
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
htmls = {
|
|
15
|
+
'Simple Text' => {:html => 'abc', :length => 2,
|
|
16
|
+
:params => [{:parent => 0, :tag => false}, # parent -> Root
|
|
17
|
+
{:parent => 0, :tag => false, :value => 'abc', :elkey => 0, :block => false}]},
|
|
18
|
+
'Back Slash Text' => {:html => 'a\\bc', :length => 2,
|
|
19
|
+
:params => [{:parent => 0, :tag => false}, # parent -> Root
|
|
20
|
+
{:parent => 0, :tag => false, :value => 'a\\bc', :elkey => 0, :block => false}]},
|
|
21
|
+
'Simple Tag' => {:html => '<b>abc</b>', :length => 4,
|
|
22
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
23
|
+
{:parent => 0, :tag => true, :value => 'b', :elkey => 0, :opening => true, :attribute => {}},
|
|
24
|
+
{:parent => 1, :tag => false, :value => 'abc', :elkey => 1, :block => false}, # parent -> open tag key
|
|
25
|
+
{:parent => 1, :tag => true, :value => 'b', :elkey => 2, :opening => false}]}, # parent -> open tag key
|
|
26
|
+
'pre Tag' => {:html => "<pre>abc</pre>", :length => 4, # See. 'Dom pre tag test'
|
|
27
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
28
|
+
{:parent => 0, :tag => true, :value => 'pre', :elkey => 0, :opening => true, :attribute => {}},
|
|
29
|
+
{:parent => 1, :tag => false, :value => 'abc', :elkey => 1, :block => false}, # parent -> open tag key
|
|
30
|
+
{:parent => 1, :tag => true, :value => 'pre', :elkey => 2, :opening => false}]}, # parent -> open tag key
|
|
31
|
+
'pre code Tag' => {:html => '<pre><code class="ruby">abc</code></pre>', :length => 4, # See. 'Dom pre tag test (code)'
|
|
32
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
33
|
+
{:parent => 0, :tag => true, :value => 'pre', :elkey => 0, :opening => true, :attribute => {}},
|
|
34
|
+
{:parent => 1, :tag => false, :value => 'abc', :elkey => 1, :block => false}, # parent -> open tag key
|
|
35
|
+
{:parent => 1, :tag => true, :value => 'pre', :elkey => 2, :opening => false}]}, # parent -> open tag key
|
|
36
|
+
'pre code span Tag' => {:html => '<pre><code class="ruby syntaxhl"><span class="CodeRay">abc</span></code></pre>', :length => 6, # See. 'Dom pre tag test (code span)'
|
|
37
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
38
|
+
{:parent => 0, :tag => true, :value => 'pre', :elkey => 0, :opening => true, :attribute => {}},
|
|
39
|
+
{:parent => 1, :tag => true, :value => 'span', :elkey => 1, :opening => true},
|
|
40
|
+
{:parent => 2, :tag => false, :value => 'abc', :elkey => 2, :block => false}, # parent -> open tag key
|
|
41
|
+
{:parent => 2, :tag => true, :value => 'span', :elkey => 3, :opening => false}, # parent -> open tag key
|
|
42
|
+
{:parent => 1, :tag => true, :value => 'pre', :elkey => 4, :opening => false}]}, # parent -> open tag key
|
|
43
|
+
'Error Tag (doble colse tag)' => {:html => '</ul></div>',
|
|
44
|
+
:validated_length => 1, # for Rails 4.2 later (no use Rails 3.x/4.0/4.1)
|
|
45
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
46
|
+
{:parent => 0, :tag => true, :value => 'ul', :elkey => 0, :opening => false}, # parent -> Root key
|
|
47
|
+
{:parent => 0, :tag => true, :value => 'div', :elkey => 1, :opening => false}]}, # parent -> Root key
|
|
48
|
+
'Attribute' => {:html => '<p style="text-align:justify">abc</p>', :length => 4,
|
|
49
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
50
|
+
{:parent => 0, :tag => true, :value => 'p', :elkey => 0, :opening => true, :align => 'J', :attribute => {:style => 'text-align:justify;'}}]},
|
|
51
|
+
'Table border' => {:html => '<table border="1"><tr><td>abc</td></tr></table>', :length => 9,
|
|
52
|
+
# -> '<table border="1"><tr><td>abc<marker style="font-size:0"/></td></tr></table>' ## added marker tag (by getHtmlDomArray()) ##
|
|
53
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
54
|
+
{:parent => 0, :tag => true, :value => 'table', :elkey => 0, :opening => true, :attribute => {:border => 1}},
|
|
55
|
+
{},
|
|
56
|
+
{},
|
|
57
|
+
{},
|
|
58
|
+
# marker tag (by getHtmlDomArray())
|
|
59
|
+
{:parent => 3, :tag => true, :value => 'marker', :elkey => 4, :opening => true, :attribute => {:style => 'font-size:0'}}]},
|
|
60
|
+
'Table td Width' => {:html => '<table><tr><td width="10">abc</td></tr></table>', :length => 9,
|
|
61
|
+
# -> '<table><tr><td width="10">abc<marker style="font-size:0"/></td></tr></table>' ## added marker tag (by getHtmlDomArray()) ##
|
|
62
|
+
:params => [{},
|
|
63
|
+
{},
|
|
64
|
+
{},
|
|
65
|
+
{:parent => 2, :tag => true, :value => 'td', :elkey => 2, :opening => true, :width => '10'}]},
|
|
66
|
+
'Dom open angled bracket "<"' => {:html => "<p>AAA '<'-BBB << <<< '</' '<//' '<///' CCC.</p>", :length => 4,
|
|
67
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
68
|
+
{:parent => 0, :tag => true, :value => 'p', :elkey => 0, :opening => true, :attribute => {}},
|
|
69
|
+
{:parent => 1, :tag => false, :value => "AAA '<'-BBB << <<< '</' '<//' '<///' CCC.", :elkey => 1},
|
|
70
|
+
{:parent => 1, :tag => true, :value => 'p', :elkey => 2, :opening => false}]},
|
|
71
|
+
'Dom self close tag' => {:html => '<b>ab<br>c</b>', :length => 6, # See. 'Dom self close tag test (Simple Tag)'
|
|
72
|
+
:params => [{:parent => 0, :tag => false, :attribute => {}}, # parent -> Root
|
|
73
|
+
{:parent => 0, :tag => true, :value => 'b', :elkey => 0, :opening => true, :attribute => {}}, # <b>
|
|
74
|
+
{:parent => 1, :tag => false, :value => 'ab', :elkey => 1, :block => false}, # ab
|
|
75
|
+
{:parent => 1, :tag => true, :value => 'br', :elkey => 2, :opening => true, :attribute => {}}, # <br>
|
|
76
|
+
{:parent => 1, :tag => false, :value => 'c', :elkey => 3, :block => false}, # c
|
|
77
|
+
{:parent => 1, :tag => true, :value => 'b', :elkey => 4, :opening => false}]}, # </b>
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
data(htmls)
|
|
81
|
+
test "Dom Basic test" do |data|
|
|
82
|
+
pdf = RBPDF.new
|
|
83
|
+
dom = pdf.send(:getHtmlDomArray, data[:html])
|
|
84
|
+
assert_equal data[:length], dom.length if data[:length]
|
|
85
|
+
data[:params].each_with_index {|param, i|
|
|
86
|
+
# validated length check (for Rails 4.2 later)
|
|
87
|
+
if dom[i].nil? and i >= data[:validated_length]
|
|
88
|
+
break
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
param.each {|key, val|
|
|
92
|
+
if (key == :attribute) and !val.empty?
|
|
93
|
+
val.each {|k, v|
|
|
94
|
+
if (k == :style) and !v.empty?
|
|
95
|
+
assert_equal("dom[#{i}][attribute]: #{k} => #{v}", "dom[#{i}][attribute]: #{k} => #{dom[i][key.to_s][k.to_s].gsub(' ', '')}")
|
|
96
|
+
else
|
|
97
|
+
assert_equal("dom[#{i}][attribute]: #{k} => #{v}", "dom[#{i}][attribute]: #{k} => #{dom[i][key.to_s][k.to_s]}")
|
|
98
|
+
end
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
assert_equal("dom[#{i}]: #{key} => #{val}", "dom[#{i}]: #{key} => #{dom[i][key.to_s]}")
|
|
102
|
+
end
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
end
|
|
22
106
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
assert_equal 0, dom[0]['parent'] # Root
|
|
26
|
-
assert_equal false, dom[0]['tag']
|
|
27
|
-
assert_equal({'tag'=>false, 'value'=>'abc', 'elkey'=>0, 'parent'=>0, 'block'=>false}, dom[1])
|
|
107
|
+
test "Dom pre tag test" do
|
|
108
|
+
pdf = RBPDF.new
|
|
28
109
|
|
|
29
|
-
#
|
|
30
|
-
dom = pdf.getHtmlDomArray
|
|
31
|
-
|
|
32
|
-
assert_equal
|
|
33
|
-
assert_equal({'tag'=>false, 'value'=>"a\\bc", 'elkey'=>0, 'parent'=>0, 'block'=>false}, dom[1])
|
|
110
|
+
# No Text
|
|
111
|
+
dom = pdf.send(:getHtmlDomArray, "<pre></pre>")
|
|
112
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>\n</pre>")
|
|
113
|
+
assert_equal dom, dom2
|
|
34
114
|
|
|
35
115
|
# Simple Tag
|
|
36
|
-
dom = pdf.getHtmlDomArray
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
assert_equal
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
assert_equal
|
|
45
|
-
assert_equal true, dom[1]['tag']
|
|
46
|
-
assert_equal true, dom[1]['opening']
|
|
47
|
-
assert_equal 'b', dom[1]['value']
|
|
48
|
-
assert_equal({}, dom[1]['attribute'])
|
|
49
|
-
|
|
50
|
-
assert_equal({'tag' => false, 'value'=>'abc', 'elkey'=>1, 'parent'=>1, 'block'=>false}, dom[2]) # parent -> open tag key
|
|
51
|
-
|
|
52
|
-
assert_equal 1, dom[3]['parent'] # parent -> open tag key
|
|
53
|
-
assert_equal 2, dom[3]['elkey']
|
|
54
|
-
assert_equal true, dom[3]['tag']
|
|
55
|
-
assert_equal false, dom[3]['opening']
|
|
56
|
-
assert_equal 'b', dom[3]['value']
|
|
57
|
-
|
|
58
|
-
# Error Tag (doble colse tag)
|
|
59
|
-
dom = pdf.getHtmlDomArray('</ul></div>')
|
|
60
|
-
|
|
61
|
-
assert_equal 0, dom[0]['parent'] # Root
|
|
62
|
-
assert_equal false, dom[0]['tag']
|
|
63
|
-
assert_equal({}, dom[0]['attribute'])
|
|
64
|
-
|
|
65
|
-
if dom.length == 3 # for Rails 3.x/4.0/4.1 (no use Rails 4.2 later)
|
|
66
|
-
assert_equal 0, dom[1]['parent'] # parent -> Root key
|
|
67
|
-
assert_equal 0, dom[1]['elkey']
|
|
68
|
-
assert_equal true, dom[1]['tag']
|
|
69
|
-
assert_equal false, dom[1]['opening']
|
|
70
|
-
assert_equal 'ul', dom[1]['value']
|
|
71
|
-
|
|
72
|
-
assert_equal 0, dom[2]['parent'] # parent -> Root key
|
|
73
|
-
assert_equal 1, dom[2]['elkey']
|
|
74
|
-
assert_equal true, dom[2]['tag']
|
|
75
|
-
assert_equal false, dom[2]['opening']
|
|
76
|
-
assert_equal 'div', dom[2]['value']
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Attribute
|
|
80
|
-
dom = pdf.getHtmlDomArray('<p style="text-align:justify">abc</p>')
|
|
81
|
-
assert_equal 4, dom.length
|
|
82
|
-
|
|
83
|
-
assert_equal 0, dom[0]['parent'] # Root
|
|
84
|
-
assert_equal false, dom[0]['tag']
|
|
85
|
-
assert_equal({}, dom[0]['attribute'])
|
|
86
|
-
|
|
87
|
-
assert_equal 0, dom[1]['parent'] # parent -> parent tag key
|
|
88
|
-
assert_equal 0, dom[1]['elkey']
|
|
89
|
-
assert_equal true, dom[1]['tag']
|
|
90
|
-
assert_equal true, dom[1]['opening']
|
|
91
|
-
assert_equal 'p', dom[1]['value']
|
|
92
|
-
assert_not_nil dom[1]['attribute']
|
|
93
|
-
assert_equal 'text-align:justify;', dom[1]['attribute']['style'].gsub(' ', '')
|
|
94
|
-
assert_equal 'J', dom[1]['align']
|
|
95
|
-
|
|
96
|
-
# Table border
|
|
97
|
-
dom = pdf.getHtmlDomArray('<table border="1"><tr><td>abc</td></tr></table>')
|
|
98
|
-
## added marker tag (by getHtmlDomArray()) ##
|
|
99
|
-
# '<table border="1"><tr><td>abc<marker style="font-size:0"/></td></tr></table>'
|
|
100
|
-
assert_equal 9, dom.length
|
|
101
|
-
|
|
102
|
-
assert_equal 0, dom[1]['parent'] # parent -> parent tag key
|
|
103
|
-
assert_equal 0, dom[1]['elkey']
|
|
104
|
-
assert_equal true, dom[1]['tag']
|
|
105
|
-
assert_equal true, dom[1]['opening']
|
|
106
|
-
assert_equal 'table', dom[1]['value']
|
|
107
|
-
assert_equal '1', dom[1]['attribute']['border']
|
|
116
|
+
dom = pdf.send(:getHtmlDomArray, "<pre>abc</pre>")
|
|
117
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>\nabc\n</pre>")
|
|
118
|
+
assert_equal dom, dom2
|
|
119
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>\nabc</pre>")
|
|
120
|
+
assert_equal dom, dom2
|
|
121
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>abc\n</pre>")
|
|
122
|
+
assert_equal dom, dom2
|
|
123
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>abc<br /></pre>")
|
|
124
|
+
assert_equal dom, dom2
|
|
108
125
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
assert_equal
|
|
113
|
-
|
|
114
|
-
assert_equal
|
|
115
|
-
|
|
126
|
+
# with line feed
|
|
127
|
+
dom = pdf.send(:getHtmlDomArray, "<pre>abc\ndef</pre>")
|
|
128
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>\nabc\ndef\n</pre>")
|
|
129
|
+
assert_equal dom, dom2
|
|
130
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>\nabc\ndef</pre>")
|
|
131
|
+
assert_equal dom, dom2
|
|
132
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre>abc\ndef\n</pre>")
|
|
133
|
+
assert_equal dom, dom2
|
|
116
134
|
|
|
117
|
-
#
|
|
118
|
-
dom = pdf.getHtmlDomArray
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
# code Tag
|
|
136
|
+
dom = pdf.send(:getHtmlDomArray, '<pre><code class="ruby">abc</code></pre>')
|
|
137
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby\">\nabc\n</code></pre>")
|
|
138
|
+
assert_equal dom, dom2
|
|
139
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby\">\nabc</code></pre>")
|
|
140
|
+
assert_equal dom, dom2
|
|
141
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby\">abc\n</code></pre>")
|
|
142
|
+
assert_equal dom, dom2
|
|
122
143
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
assert_equal
|
|
127
|
-
|
|
128
|
-
assert_equal
|
|
144
|
+
# code span Tag
|
|
145
|
+
dom = pdf.send(:getHtmlDomArray, '<pre><code class="ruby syntaxhl"><span class="CodeRay">abc</span></code></pre>')
|
|
146
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby syntaxhl\"><span class=\"CodeRay\">\nabc\n</span></code></pre>")
|
|
147
|
+
assert_equal dom, dom2
|
|
148
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby syntaxhl\"><span class=\"CodeRay\">\nabc</span></code></pre>")
|
|
149
|
+
assert_equal dom, dom2
|
|
150
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby syntaxhl\"><span class=\"CodeRay\">abc\n</span></code></pre>")
|
|
151
|
+
assert_equal dom, dom2
|
|
152
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby syntaxhl\"><span class=\"CodeRay\">abc</span>\n</code></pre>")
|
|
153
|
+
assert_equal dom, dom2
|
|
154
|
+
dom2 = pdf.send(:getHtmlDomArray, "<pre><code class=\"ruby syntaxhl\">\n<span class=\"CodeRay\">\nabc\n</span>\n</code></pre>")
|
|
155
|
+
assert_equal dom, dom2
|
|
129
156
|
end
|
|
130
157
|
|
|
131
158
|
test "Dom self close tag test" do
|
|
132
|
-
pdf =
|
|
159
|
+
pdf = RBPDF.new
|
|
133
160
|
|
|
134
161
|
# Simple Tag
|
|
135
|
-
dom = pdf.getHtmlDomArray
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
assert_equal 0, dom[0]['parent'] # Root
|
|
139
|
-
assert_equal false, dom[0]['tag']
|
|
140
|
-
assert_equal({}, dom[0]['attribute'])
|
|
141
|
-
|
|
142
|
-
# <b>
|
|
143
|
-
assert_equal 0, dom[1]['parent'] # parent -> parent tag key
|
|
144
|
-
assert_equal 0, dom[1]['elkey']
|
|
145
|
-
assert_equal true, dom[1]['tag']
|
|
146
|
-
assert_equal true, dom[1]['opening']
|
|
147
|
-
assert_equal 'b', dom[1]['value']
|
|
148
|
-
assert_equal({}, dom[1]['attribute'])
|
|
149
|
-
|
|
150
|
-
# ab
|
|
151
|
-
assert_equal({'tag' => false, 'value'=>'ab', 'elkey'=>1, 'parent'=>1, 'block'=>false}, dom[2]) # parent -> open tag key
|
|
152
|
-
|
|
153
|
-
# <br>
|
|
154
|
-
assert_equal 1, dom[3]['parent'] # parent -> open tag key
|
|
155
|
-
assert_equal 2, dom[3]['elkey']
|
|
156
|
-
assert_equal true, dom[3]['tag']
|
|
157
|
-
assert_equal true, dom[3]['opening']
|
|
158
|
-
assert_equal 'br', dom[3]['value']
|
|
159
|
-
assert_equal({}, dom[3]['attribute'])
|
|
160
|
-
|
|
161
|
-
# c
|
|
162
|
-
assert_equal({'tag' => false, 'value'=>'c', 'elkey'=>3, 'parent'=>1, 'block'=>false}, dom[4]) # parent -> open tag key
|
|
163
|
-
|
|
164
|
-
# </b>
|
|
165
|
-
assert_equal 1, dom[5]['parent'] # parent -> open tag key
|
|
166
|
-
assert_equal 4, dom[5]['elkey']
|
|
167
|
-
assert_equal true, dom[5]['tag']
|
|
168
|
-
assert_equal false, dom[5]['opening']
|
|
169
|
-
assert_equal 'b', dom[5]['value']
|
|
170
|
-
|
|
171
|
-
dom2 = pdf.getHtmlDomArray('<b>ab<br/>c</b>')
|
|
162
|
+
dom = pdf.send(:getHtmlDomArray, '<b>ab<br>c</b>')
|
|
163
|
+
dom2 = pdf.send(:getHtmlDomArray, '<b>ab<br/>c</b>')
|
|
172
164
|
assert_equal dom, dom2
|
|
173
165
|
|
|
174
166
|
htmlcontent = '<b><img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"/></b>'
|
|
175
|
-
dom1 = pdf.getHtmlDomArray
|
|
167
|
+
dom1 = pdf.send(:getHtmlDomArray, htmlcontent)
|
|
176
168
|
htmlcontent = '<b><img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"></b>'
|
|
177
|
-
dom2 = pdf.getHtmlDomArray
|
|
169
|
+
dom2 = pdf.send(:getHtmlDomArray, htmlcontent)
|
|
178
170
|
assert_equal dom1, dom2
|
|
179
171
|
|
|
180
|
-
dom1 = pdf.getHtmlDomArray
|
|
181
|
-
dom2 = pdf.getHtmlDomArray
|
|
172
|
+
dom1 = pdf.send(:getHtmlDomArray, '<b>ab<hr/>c</b>')
|
|
173
|
+
dom2 = pdf.send(:getHtmlDomArray, '<b>ab<hr>c</b>')
|
|
182
174
|
assert_equal dom1, dom2
|
|
183
175
|
end
|
|
184
176
|
|
|
185
177
|
test "Dom HTMLTagHandler Basic test" do
|
|
186
|
-
pdf =
|
|
178
|
+
pdf = RBPDF.new
|
|
187
179
|
pdf.add_page
|
|
188
180
|
|
|
189
181
|
# Simple HTML
|
|
190
182
|
htmlcontent = '<h1>HTML Example</h1>'
|
|
191
|
-
dom1 = pdf.getHtmlDomArray
|
|
192
|
-
dom2 = pdf.openHTMLTagHandler
|
|
183
|
+
dom1 = pdf.send(:getHtmlDomArray, htmlcontent)
|
|
184
|
+
dom2 = pdf.send(:openHTMLTagHandler, dom1, 1, false)
|
|
193
185
|
assert_equal dom1, dom2
|
|
194
186
|
end
|
|
195
187
|
|
|
196
|
-
|
|
188
|
+
htmls = {
|
|
189
|
+
'LTR' => {:lines => [{:html => '<p dir="ltr">HTML Example</p>', :length => 4,
|
|
190
|
+
:params => [{}, {:tag => true, :value => 'p', :opening => true, :attribute => {:dir => 'ltr'}, :temprtl => false}]},
|
|
191
|
+
{:html => '<p dir="rtl">HTML Example</p>', :length => 4,
|
|
192
|
+
:params => [{}, {:tag => true, :value => 'p', :opening => true, :attribute => {:dir => 'rtl'}, :temprtl => 'R'}]},
|
|
193
|
+
{:html => '<p dir="ltr">HTML Example</p>', :length => 4,
|
|
194
|
+
:params => [{}, {:tag => true, :value => 'p', :opening => true, :attribute => {:dir => 'ltr'}, :temprtl => false}]}
|
|
195
|
+
]},
|
|
196
|
+
'RTL' => {:rtl => true,
|
|
197
|
+
:lines => [{:html => '<p dir="ltr">HTML Example</p>', :length => 4,
|
|
198
|
+
:params => [{}, {:tag => true, :value => 'p', :opening => true, :attribute => {:dir => 'ltr'}, :temprtl => 'L'}]},
|
|
199
|
+
{:html => '<p dir="rtl">HTML Example</p>', :length => 4,
|
|
200
|
+
:params => [{}, {:tag => true, :value => 'p', :opening => true, :attribute => {:dir => 'rtl'}, :temprtl => false}]}
|
|
201
|
+
]},
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
data(htmls)
|
|
205
|
+
test "Dom HTMLTagHandler DIR test" do |data|
|
|
197
206
|
pdf = MYPDF.new
|
|
198
207
|
pdf.add_page
|
|
199
208
|
temprtl = pdf.get_temp_rtl
|
|
200
209
|
assert_equal false, temprtl
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
assert_equal 'p', dom[1]['value']
|
|
224
|
-
assert_equal 'rtl', dom[1]['attribute']['dir']
|
|
225
|
-
|
|
226
|
-
temprtl = pdf.get_temp_rtl
|
|
227
|
-
assert_equal 'R', temprtl
|
|
228
|
-
|
|
229
|
-
# LTR, ltr
|
|
230
|
-
htmlcontent = '<p dir="ltr">HTML Example</p>'
|
|
231
|
-
dom = pdf.getHtmlDomArray(htmlcontent)
|
|
232
|
-
dom = pdf.openHTMLTagHandler(dom, 1, false)
|
|
233
|
-
|
|
234
|
-
assert_equal true, dom[1]['tag']
|
|
235
|
-
assert_equal true, dom[1]['opening']
|
|
236
|
-
assert_equal 'p', dom[1]['value']
|
|
237
|
-
assert_equal 'ltr', dom[1]['attribute']['dir']
|
|
238
|
-
|
|
239
|
-
temprtl = pdf.get_temp_rtl
|
|
240
|
-
assert_equal false, temprtl
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
test "Dom HTMLTagHandler DIR LTR test" do
|
|
244
|
-
pdf = MYPDF.new
|
|
245
|
-
pdf.add_page
|
|
246
|
-
temprtl = pdf.get_temp_rtl
|
|
247
|
-
assert_equal false, temprtl
|
|
248
|
-
pdf.set_rtl(true)
|
|
249
|
-
|
|
250
|
-
# RTL, ltr
|
|
251
|
-
htmlcontent = '<p dir="ltr">HTML Example</p>'
|
|
252
|
-
dom = pdf.getHtmlDomArray(htmlcontent)
|
|
253
|
-
dom = pdf.openHTMLTagHandler(dom, 1, false)
|
|
254
|
-
assert_equal 4, dom.length
|
|
255
|
-
|
|
256
|
-
assert_equal true, dom[1]['tag']
|
|
257
|
-
assert_equal true, dom[1]['opening']
|
|
258
|
-
assert_equal 'p', dom[1]['value']
|
|
259
|
-
assert_equal 'ltr', dom[1]['attribute']['dir']
|
|
260
|
-
|
|
261
|
-
temprtl = pdf.get_temp_rtl
|
|
262
|
-
assert_equal 'L', temprtl
|
|
263
|
-
|
|
264
|
-
# RTL, rtl
|
|
265
|
-
htmlcontent = '<p dir="rtl">HTML Example</p>'
|
|
266
|
-
dom = pdf.getHtmlDomArray(htmlcontent)
|
|
267
|
-
dom = pdf.openHTMLTagHandler(dom, 1, false)
|
|
268
|
-
assert_equal 4, dom.length
|
|
269
|
-
|
|
270
|
-
assert_equal true, dom[1]['tag']
|
|
271
|
-
assert_equal true, dom[1]['opening']
|
|
272
|
-
assert_equal 'p', dom[1]['value']
|
|
273
|
-
assert_equal 'rtl', dom[1]['attribute']['dir']
|
|
274
|
-
|
|
275
|
-
temprtl = pdf.get_temp_rtl
|
|
276
|
-
assert_equal false, temprtl
|
|
210
|
+
pdf.set_rtl(true) if data[:rtl]
|
|
211
|
+
|
|
212
|
+
data[:lines].each_with_index {|line, l|
|
|
213
|
+
dom = pdf.send(:getHtmlDomArray, line[:html])
|
|
214
|
+
dom = pdf.send(:openHTMLTagHandler, dom, 1, false)
|
|
215
|
+
|
|
216
|
+
assert_equal line[:length], dom.length if line[:length]
|
|
217
|
+
line[:params].each_with_index {|param, i|
|
|
218
|
+
param.each {|key, val|
|
|
219
|
+
if (key == :attribute) and !val.empty?
|
|
220
|
+
val.each {|k, v|
|
|
221
|
+
assert_equal("#{l}: dom[#{i}][attribute]: #{k} => #{v}", "#{l}: dom[#{i}][attribute]: #{k} => #{dom[i][key.to_s][k.to_s]}")
|
|
222
|
+
}
|
|
223
|
+
elsif (key == :temprtl)
|
|
224
|
+
temprtl = pdf.get_temp_rtl
|
|
225
|
+
assert_equal("#{l}: dom[#{i}]: temprtl => #{val}", "#{l}: dom[#{i}]: temprtl => #{temprtl.to_s}")
|
|
226
|
+
else
|
|
227
|
+
assert_equal("#{l}: dom[#{i}]: #{key} => #{val}", "#{l}: dom[#{i}]: #{key} => #{dom[i][key.to_s]}")
|
|
228
|
+
end
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
277
232
|
end
|
|
278
233
|
|
|
279
234
|
test "Dom HTMLTagHandler img y position with height attribute test" do
|
|
280
|
-
pdf =
|
|
235
|
+
pdf = RBPDF.new
|
|
281
236
|
pdf.add_page
|
|
282
237
|
|
|
283
238
|
# Image Error HTML
|
|
284
239
|
htmlcontent = '<img src="/public/ng.png" alt="test alt attribute" width="30" height="30" border="0"/>'
|
|
285
|
-
dom1 = pdf.getHtmlDomArray
|
|
240
|
+
dom1 = pdf.send(:getHtmlDomArray, htmlcontent)
|
|
286
241
|
#y1 = pdf.get_y
|
|
287
242
|
|
|
288
|
-
dom2 = pdf.openHTMLTagHandler
|
|
243
|
+
dom2 = pdf.send(:openHTMLTagHandler, dom1, 1, false)
|
|
289
244
|
y2 = pdf.get_y
|
|
290
245
|
assert_equal dom1, dom2
|
|
291
246
|
assert_equal pdf.get_image_rby - (12 / pdf.get_scale_factor) , y2
|
|
292
247
|
end
|
|
293
248
|
|
|
294
249
|
test "Dom HTMLTagHandler img y position without height attribute test" do
|
|
295
|
-
pdf =
|
|
250
|
+
pdf = RBPDF.new
|
|
296
251
|
pdf.add_page
|
|
297
252
|
|
|
298
253
|
# Image Error HTML
|
|
299
254
|
htmlcontent = '<img src="/public/ng.png" alt="test alt attribute" border="0"/>'
|
|
300
|
-
dom1 = pdf.getHtmlDomArray
|
|
255
|
+
dom1 = pdf.send(:getHtmlDomArray, htmlcontent)
|
|
301
256
|
y1 = pdf.get_y
|
|
302
257
|
|
|
303
|
-
dom2 = pdf.openHTMLTagHandler
|
|
258
|
+
dom2 = pdf.send(:openHTMLTagHandler, dom1, 1, false)
|
|
304
259
|
y2 = pdf.get_y
|
|
305
260
|
assert_equal dom1, dom2
|
|
306
261
|
assert_equal y1, y2
|
|
307
262
|
end
|
|
308
263
|
|
|
309
|
-
test "Dom open angled bracket '<' test" do
|
|
310
|
-
pdf = MYPDF.new
|
|
311
|
-
pdf.add_page
|
|
312
|
-
|
|
313
|
-
htmlcontent = "<p>AAA '<'-BBB << <<< '</' '<//' '<///' CCC.</p>"
|
|
314
|
-
dom = pdf.getHtmlDomArray(htmlcontent)
|
|
315
|
-
assert_equal 4, dom.length
|
|
316
|
-
|
|
317
|
-
assert_equal 0, dom[0]['parent'] # Root
|
|
318
|
-
assert_equal false, dom[0]['tag']
|
|
319
|
-
assert_equal({}, dom[0]['attribute'])
|
|
320
|
-
|
|
321
|
-
assert_equal 0, dom[1]['parent'] # parent -> parent tag key
|
|
322
|
-
assert_equal 0, dom[1]['elkey']
|
|
323
|
-
assert_equal true, dom[1]['tag']
|
|
324
|
-
assert_equal true, dom[1]['opening']
|
|
325
|
-
assert_equal 'p', dom[1]['value']
|
|
326
|
-
assert_equal({}, dom[1]['attribute'])
|
|
327
|
-
|
|
328
|
-
assert_equal 1, dom[2]['parent'] # parent -> open tag key
|
|
329
|
-
assert_equal 1, dom[2]['elkey']
|
|
330
|
-
assert_equal false, dom[2]['tag']
|
|
331
|
-
assert_equal "AAA '<'-BBB << <<< '</' '<//' '<///' CCC.", dom[2]['value']
|
|
332
|
-
|
|
333
|
-
assert_equal 1, dom[3]['parent'] # parent -> open tag key
|
|
334
|
-
assert_equal 2, dom[3]['elkey']
|
|
335
|
-
assert_equal true, dom[3]['tag']
|
|
336
|
-
assert_equal false, dom[3]['opening']
|
|
337
|
-
assert_equal 'p', dom[3]['value']
|
|
338
|
-
end
|
|
339
|
-
|
|
340
264
|
test "getHtmlDomArray encoding test" do
|
|
341
265
|
return unless 'test'.respond_to?(:force_encoding)
|
|
342
266
|
|
|
343
|
-
pdf =
|
|
267
|
+
pdf = RBPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
|
|
344
268
|
htmlcontent = 'test'.force_encoding('ASCII-8BIT')
|
|
345
|
-
pdf.getHtmlDomArray
|
|
269
|
+
pdf.send(:getHtmlDomArray, htmlcontent)
|
|
346
270
|
assert_equal 'ASCII-8BIT', htmlcontent.encoding.to_s
|
|
347
271
|
end
|
|
348
272
|
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Copyright (c) 2011-2018 NAITOH Jun
|
|
2
|
+
# Released under the MIT license
|
|
3
|
+
# http://www.opensource.org/licenses/MIT
|
|
4
|
+
|
|
5
|
+
require 'test_helper'
|
|
6
|
+
|
|
7
|
+
def logger
|
|
8
|
+
require 'logger'
|
|
9
|
+
return Logger.new(STDOUT)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if !defined? ApplicationController
|
|
13
|
+
class ApplicationController
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class RbpdfTest < Test::Unit::TestCase
|
|
18
|
+
htmls = {
|
|
19
|
+
'001 : Default Header and Footer' => '001',
|
|
20
|
+
'002 : Removing Header and Footer' => '002',
|
|
21
|
+
'003 : Custom Header and Footer' => '003',
|
|
22
|
+
'004 : Cell stretching' => '004',
|
|
23
|
+
'005 : Multicell' => '005',
|
|
24
|
+
'006 : write_html and RTL support' => '006',
|
|
25
|
+
'007 : Two independent columns with write_htmlcell()' => '007',
|
|
26
|
+
'008 : Include external UTF-8 text file' => '008',
|
|
27
|
+
'009 : Test Image' => '009',
|
|
28
|
+
'011 : Colored Table' => '011',
|
|
29
|
+
'012 : Graphic Functions' => '012',
|
|
30
|
+
'015 : Bookmarks (Table of Content)' => '015',
|
|
31
|
+
'017 : Two independent columns with MultiCell' => '017',
|
|
32
|
+
'018 : RTL document with Persian language' => '018',
|
|
33
|
+
'020 : Two columns composed by MultiCell of different' => '020',
|
|
34
|
+
'021 : write_html text flow' => '021',
|
|
35
|
+
'022 : CMYK colors' => '022',
|
|
36
|
+
'023 : Page Groups' => '023',
|
|
37
|
+
'024 : Object Visibility' => '024',
|
|
38
|
+
'025 : Object Transparency' => '025',
|
|
39
|
+
'026 : Text Rendering Modes and Text Clipping' => '026',
|
|
40
|
+
'028 : Changing page formats' => '028',
|
|
41
|
+
'029 : Set PDF viewer display preferences.' => '029',
|
|
42
|
+
'031 : Pie Chart' => '031',
|
|
43
|
+
'033 : Mixed font types' => '033',
|
|
44
|
+
'034 : Clipping' => '034',
|
|
45
|
+
'035 : Line styles with cells and multicells' => '035',
|
|
46
|
+
'036 : Annotations' => '036',
|
|
47
|
+
'038 : CID-0 CJK unembedded font' => '038',
|
|
48
|
+
'039 : HTML justification' => '039',
|
|
49
|
+
'040 : Booklet mode (double-sided pages)' => '040',
|
|
50
|
+
'041 : Annotation - FileAttachment' => '041',
|
|
51
|
+
'042 : Test Image with alpha channel' => '042',
|
|
52
|
+
'043 : Disk caching' => '043',
|
|
53
|
+
'044 : Move, copy and delete pages' => '044',
|
|
54
|
+
'045 : Bookmarks and Table of Content' => '045',
|
|
55
|
+
'047 : Transactions' => '047',
|
|
56
|
+
'048 : HTML tables and table headers' => '048',
|
|
57
|
+
# '051 : Full page background' => '051',
|
|
58
|
+
'055 : Display all characters available on core fonts.' => '055',
|
|
59
|
+
'057 : Cell vertical alignments' => '057',
|
|
60
|
+
'059 : Table Of Content using HTML templates.' => '059',
|
|
61
|
+
'060 : Advanced page settings.' => '060',
|
|
62
|
+
'061 : XHTML + CSS' => '061',
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
data(htmls)
|
|
66
|
+
test "Examples test" do |data|
|
|
67
|
+
$LOAD_PATH << File.join(File.dirname(File.expand_path(__FILE__)), '../example/rails/app/controllers/')
|
|
68
|
+
|
|
69
|
+
require "example#{data}_controller"
|
|
70
|
+
|
|
71
|
+
content = []
|
|
72
|
+
test = Object.const_get("Example#{data}Controller").new
|
|
73
|
+
|
|
74
|
+
contents = test.index
|
|
75
|
+
# contents = assert_nothing_raised do
|
|
76
|
+
# test.index
|
|
77
|
+
# end
|
|
78
|
+
contents.each_line {|line| content.push line.chomp }
|
|
79
|
+
|
|
80
|
+
assert_not_equal 0, content.length
|
|
81
|
+
assert_equal '%PDF-1.7', content[0]
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -79,7 +79,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
79
79
|
pdf.write_html(htmlcontent, true, 0, true, 0)
|
|
80
80
|
|
|
81
81
|
pdf.send(:mapLinksToHtmlAnchors)
|
|
82
|
-
link_position = pdf.instance_variable_get(:@links)[
|
|
82
|
+
link_position = pdf.instance_variable_get(:@links)[1]
|
|
83
83
|
assert_equal [3, 73.50124999999998], link_position
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -98,7 +98,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
98
98
|
|
|
99
99
|
pdf.send(:mapLinksToHtmlAnchors)
|
|
100
100
|
|
|
101
|
-
link_position = pdf.instance_variable_get(:@links)[
|
|
101
|
+
link_position = pdf.instance_variable_get(:@links)[1]
|
|
102
102
|
assert_equal [1, 10.001249999999999], link_position
|
|
103
103
|
end
|
|
104
104
|
|
data/test/rbpdf_htmlcell_test.rb
CHANGED
|
@@ -1,68 +1,60 @@
|
|
|
1
|
-
# Copyright (c) 2011-
|
|
1
|
+
# Copyright (c) 2011-2018 NAITOH Jun
|
|
2
2
|
# Released under the MIT license
|
|
3
3
|
# http://www.opensource.org/licenses/MIT
|
|
4
4
|
|
|
5
5
|
require 'test_helper'
|
|
6
6
|
|
|
7
7
|
class RbpdfTest < Test::Unit::TestCase
|
|
8
|
-
|
|
8
|
+
htmls = {
|
|
9
|
+
'Basic' => {:html => '<p>foo</p>', :line => 1,
|
|
10
|
+
:border => 0, :pno => 1, :no => 1},
|
|
11
|
+
'Page Break no border' => {:html => '<p>foo</p>', :margin => 30,
|
|
12
|
+
:border => 0, :pno => 2, :no => 2},
|
|
13
|
+
'Page Break border' => {:html => '<p>foo</p>', :margin => 30,
|
|
14
|
+
:border => 'LRBT', :pno => 2, :no => 2},
|
|
15
|
+
'pre tag y position' => {:html => "<p>test 0</p>\n <pre>test 1\ntest 2\ntest 3</pre>\n <p>test 10</p>", :line => 7,
|
|
16
|
+
:border => 0, :pno => 1, :no => 1},
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
data(htmls)
|
|
20
|
+
test "write_html_cell test" do |data|
|
|
9
21
|
pdf = RBPDF.new
|
|
10
22
|
pdf.add_page()
|
|
23
|
+
t_margin = pdf.instance_variable_get('@t_margin')
|
|
24
|
+
y0 = pdf.get_y
|
|
25
|
+
assert_equal t_margin, y0
|
|
11
26
|
|
|
12
|
-
|
|
13
|
-
|
|
27
|
+
if data[:margin]
|
|
28
|
+
pdf.set_top_margin(data[:margin])
|
|
29
|
+
y0 = pdf.get_y
|
|
30
|
+
assert_equal data[:margin], y0
|
|
14
31
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
assert_in_delta 17.3, y, 0.1
|
|
20
|
-
|
|
21
|
-
no = pdf.get_num_pages
|
|
22
|
-
assert_equal 1, no
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test "write_html_cell Page Break test 1" do
|
|
26
|
-
pdf = RBPDF.new
|
|
27
|
-
pdf.add_page()
|
|
28
|
-
|
|
29
|
-
pdf.set_top_margin(30)
|
|
30
|
-
|
|
31
|
-
h = pdf.get_page_height
|
|
32
|
-
pdf.set_y(h - 15)
|
|
33
|
-
|
|
34
|
-
htmlcontent = '<p>foo</p>'
|
|
35
|
-
pdf.write_html_cell(0, 5, 10, '', htmlcontent, 0, 1)
|
|
36
|
-
|
|
37
|
-
pno = pdf.get_page
|
|
38
|
-
assert_equal 2, pno
|
|
39
|
-
|
|
40
|
-
y = pdf.get_y
|
|
41
|
-
assert_in_delta 40.0, y, 0.1
|
|
42
|
-
|
|
43
|
-
no = pdf.get_num_pages
|
|
44
|
-
assert_equal 2, no
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
test "write_html_cell Page Break test 2" do
|
|
48
|
-
pdf = RBPDF.new
|
|
49
|
-
pdf.add_page()
|
|
32
|
+
h = pdf.get_page_height
|
|
33
|
+
pdf.set_y(h - 15)
|
|
34
|
+
y0 = pdf.get_y
|
|
35
|
+
end
|
|
50
36
|
|
|
51
|
-
pdf.
|
|
37
|
+
font_size = pdf.get_font_size
|
|
38
|
+
cell_height_ratio = pdf.get_cell_height_ratio
|
|
39
|
+
min_cell_height = font_size * cell_height_ratio
|
|
40
|
+
h = 5
|
|
52
41
|
|
|
53
|
-
|
|
54
|
-
pdf.set_y(h - 15)
|
|
42
|
+
min_cell_height = h > min_cell_height ? h : min_cell_height
|
|
55
43
|
|
|
56
|
-
|
|
57
|
-
pdf.write_html_cell(0, 5, 10, '', htmlcontent, "LRBT", 1)
|
|
44
|
+
pdf.write_html_cell(0, h, 10, '', data[:html], data[:border], 1, 0, true, '', false)
|
|
58
45
|
|
|
59
46
|
pno = pdf.get_page
|
|
60
|
-
assert_equal
|
|
47
|
+
assert_equal data[:pno], pno
|
|
61
48
|
|
|
62
|
-
|
|
63
|
-
|
|
49
|
+
y1 = pdf.get_y
|
|
50
|
+
if pno == 1
|
|
51
|
+
assert_in_delta(y0 + min_cell_height * data[:line], y1, 0.1)
|
|
52
|
+
else # pno 2, 1 line case only
|
|
53
|
+
page_break_trigger = pdf.instance_variable_get('@page_break_trigger')
|
|
54
|
+
assert_in_delta(data[:margin] + y0 + h - page_break_trigger, y1, 0.1)
|
|
55
|
+
end
|
|
64
56
|
|
|
65
57
|
no = pdf.get_num_pages
|
|
66
|
-
assert_equal
|
|
58
|
+
assert_equal data[:no], no
|
|
67
59
|
end
|
|
68
60
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbpdf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.19.
|
|
4
|
+
version: 1.19.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- NAITOH Jun
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: htmlentities
|
|
@@ -122,6 +122,7 @@ files:
|
|
|
122
122
|
- test/rbpdf_content_test.rb
|
|
123
123
|
- test/rbpdf_css_test.rb
|
|
124
124
|
- test/rbpdf_dom_test.rb
|
|
125
|
+
- test/rbpdf_examples_test.rb
|
|
125
126
|
- test/rbpdf_font_func_test.rb
|
|
126
127
|
- test/rbpdf_font_style_test.rb
|
|
127
128
|
- test/rbpdf_font_test.rb
|
|
@@ -194,6 +195,7 @@ test_files:
|
|
|
194
195
|
- test/rbpdf_content_test.rb
|
|
195
196
|
- test/rbpdf_css_test.rb
|
|
196
197
|
- test/rbpdf_dom_test.rb
|
|
198
|
+
- test/rbpdf_examples_test.rb
|
|
197
199
|
- test/rbpdf_font_func_test.rb
|
|
198
200
|
- test/rbpdf_font_style_test.rb
|
|
199
201
|
- test/rbpdf_font_test.rb
|