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.
- checksums.yaml +7 -0
- data/CHANGELOG +35 -0
- data/Gemfile +4 -0
- data/README.md +68 -0
- data/Rakefile +2 -0
- data/lib/core/rmagick.rb +85 -0
- data/lib/fonts/README.z +2 -0
- data/lib/fonts/arialunicid0_cw.rb +1738 -0
- data/lib/fonts/cid0cs.rb +21 -0
- data/lib/fonts/cid0ct.rb +21 -0
- data/lib/fonts/cid0jp.rb +21 -0
- data/lib/fonts/cid0kr.rb +21 -0
- data/lib/fonts/courier.rb +37 -0
- data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +53 -0
- data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +3 -0
- data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +99 -0
- data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +1315 -0
- data/lib/fonts/dejavu-fonts-ttf-2.33/README +59 -0
- data/lib/fonts/dejavusans.ctg.z +0 -0
- data/lib/fonts/dejavusans.rb +338 -0
- data/lib/fonts/dejavusans.z +0 -0
- data/lib/fonts/dejavusansb.ctg.z +0 -0
- data/lib/fonts/dejavusansb.rb +330 -0
- data/lib/fonts/dejavusansb.z +0 -0
- data/lib/fonts/dejavusansbi.ctg.z +0 -0
- data/lib/fonts/dejavusansbi.rb +297 -0
- data/lib/fonts/dejavusansbi.z +0 -0
- data/lib/fonts/dejavusansi.ctg.z +0 -0
- data/lib/fonts/dejavusansi.rb +305 -0
- data/lib/fonts/dejavusansi.z +0 -0
- data/lib/fonts/freefont-20080912/AUTHORS +191 -0
- data/lib/fonts/freefont-20080912/COPYING +341 -0
- data/lib/fonts/freefont-20080912/CREDITS +506 -0
- data/lib/fonts/freefont-20080912/ChangeLog +3320 -0
- data/lib/fonts/freefont-20080912/INSTALL +81 -0
- data/lib/fonts/freefont-20080912/README +108 -0
- data/lib/fonts/freemono.ctg.z +0 -0
- data/lib/fonts/freemono.rb +203 -0
- data/lib/fonts/freemono.z +0 -0
- data/lib/fonts/freemonob.ctg.z +0 -0
- data/lib/fonts/freemonob.rb +120 -0
- data/lib/fonts/freemonob.z +0 -0
- data/lib/fonts/freemonobi.ctg.z +0 -0
- data/lib/fonts/freemonobi.rb +84 -0
- data/lib/fonts/freemonobi.z +0 -0
- data/lib/fonts/freemonoi.ctg.z +0 -0
- data/lib/fonts/freemonoi.rb +136 -0
- data/lib/fonts/freemonoi.z +0 -0
- data/lib/fonts/freesans.ctg.z +0 -0
- data/lib/fonts/freesans.rb +196 -0
- data/lib/fonts/freesans.z +0 -0
- data/lib/fonts/freesansb.ctg.z +0 -0
- data/lib/fonts/freesansb.rb +136 -0
- data/lib/fonts/freesansb.z +0 -0
- data/lib/fonts/freesansbi.ctg.z +0 -0
- data/lib/fonts/freesansbi.rb +108 -0
- data/lib/fonts/freesansbi.z +0 -0
- data/lib/fonts/freesansi.ctg.z +0 -0
- data/lib/fonts/freesansi.rb +136 -0
- data/lib/fonts/freesansi.z +0 -0
- data/lib/fonts/freeserif.ctg.z +0 -0
- data/lib/fonts/freeserif.rb +285 -0
- data/lib/fonts/freeserif.z +0 -0
- data/lib/fonts/freeserifb.ctg.z +0 -0
- data/lib/fonts/freeserifb.rb +164 -0
- data/lib/fonts/freeserifb.z +0 -0
- data/lib/fonts/freeserifbi.ctg.z +0 -0
- data/lib/fonts/freeserifbi.rb +130 -0
- data/lib/fonts/freeserifbi.z +0 -0
- data/lib/fonts/freeserifi.ctg.z +0 -0
- data/lib/fonts/freeserifi.rb +151 -0
- data/lib/fonts/freeserifi.z +0 -0
- data/lib/fonts/helvetica.rb +34 -0
- data/lib/fonts/helveticab.rb +34 -0
- data/lib/fonts/helveticabi.rb +34 -0
- data/lib/fonts/helveticai.rb +34 -0
- data/lib/fonts/hysmyeongjostdmedium.rb +31 -0
- data/lib/fonts/kozgopromedium.rb +47 -0
- data/lib/fonts/kozminproregular.rb +46 -0
- data/lib/fonts/msungstdlight.rb +23 -0
- data/lib/fonts/sjis.rb +834 -0
- data/lib/fonts/stsongstdlight.rb +23 -0
- data/lib/fonts/symbol.rb +33 -0
- data/lib/fonts/times.rb +34 -0
- data/lib/fonts/timesb.rb +34 -0
- data/lib/fonts/timesbi.rb +34 -0
- data/lib/fonts/timesi.rb +34 -0
- data/lib/fonts/uni2cid_ac15.rb +23613 -0
- data/lib/fonts/uni2cid_ag15.rb +30222 -0
- data/lib/fonts/uni2cid_aj16.rb +15705 -0
- data/lib/fonts/uni2cid_ak12.rb +17530 -0
- data/lib/fonts/zapfdingbats.rb +33 -0
- data/lib/htmlcolors.rb +207 -0
- data/lib/rbpdf.rb +14472 -0
- data/lib/rbpdf/version.rb +3 -0
- data/lib/unicode_data.rb +18315 -0
- data/logo_example.png +0 -0
- data/rbpdf.gemspec +35 -0
- data/test/rbpdf_bidi_test.rb +65 -0
- data/test/rbpdf_bookmark_test.rb +57 -0
- data/test/rbpdf_cell_test.rb +232 -0
- data/test/rbpdf_content_test.rb +117 -0
- data/test/rbpdf_css_test.rb +318 -0
- data/test/rbpdf_dom_test.rb +113 -0
- data/test/rbpdf_font_func_test.rb +27 -0
- data/test/rbpdf_font_style_test.rb +34 -0
- data/test/rbpdf_font_test.rb +181 -0
- data/test/rbpdf_format_test.rb +27 -0
- data/test/rbpdf_func_test.rb +126 -0
- data/test/rbpdf_html_test.rb +164 -0
- data/test/rbpdf_htmlcell_test.rb +64 -0
- data/test/rbpdf_image_test.rb +108 -0
- data/test/rbpdf_test.rb +245 -0
- data/test/rbpdf_transaction_test.rb +199 -0
- data/test/rbpdf_viewerpreferences_test.rb +37 -0
- data/test/rbpdf_write_test.rb +173 -0
- data/test/test_helper.rb +1 -0
- data/test_unicode.rbpdf +115 -0
- data/utf8test.txt +120 -0
- 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
|