rfpdf 1.17.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +18 -0
- data/Gemfile +4 -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/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 +209 -0
- data/lib/rfpdf/version.rb +3 -0
- data/lib/rfpdf.rb +16 -0
- data/lib/tcpdf.rb +14186 -0
- data/lib/unicode_data.rb +18317 -0
- data/logo_example.png +0 -0
- data/rfpdf.gemspec +35 -0
- data/test/tcpdf_bidi_test.rb +65 -0
- data/test/tcpdf_bookmark_test.rb +57 -0
- data/test/tcpdf_cell_test.rb +54 -0
- data/test/tcpdf_content_test.rb +117 -0
- data/test/tcpdf_css_test.rb +318 -0
- data/test/tcpdf_dom_test.rb +113 -0
- data/test/tcpdf_font_func_test.rb +27 -0
- data/test/tcpdf_font_style_test.rb +34 -0
- data/test/tcpdf_font_test.rb +176 -0
- data/test/tcpdf_format_test.rb +27 -0
- data/test/tcpdf_func_test.rb +126 -0
- data/test/tcpdf_html_test.rb +164 -0
- data/test/tcpdf_image_test.rb +54 -0
- data/test/tcpdf_test.rb +245 -0
- data/test/tcpdf_transaction_test.rb +199 -0
- data/test/tcpdf_viewerpreferences_test.rb +37 -0
- data/test/tcpdf_write_test.rb +173 -0
- data/test/test_helper.rb +1 -0
- data/test_unicode.rfpdf +115 -0
- data/utf8test.txt +135 -0
- metadata +202 -0
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TcpdfTest < ActiveSupport::TestCase
|
4
|
+
class MYPDF < TCPDF
|
5
|
+
def getHtmlDomArray(html)
|
6
|
+
super
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
test "Dom Basic" do
|
11
|
+
pdf = MYPDF.new
|
12
|
+
|
13
|
+
# Simple Text
|
14
|
+
dom = pdf.getHtmlDomArray('abc')
|
15
|
+
assert_equal 0, dom[0]['parent'] # Root
|
16
|
+
assert_equal false, dom[0]['tag']
|
17
|
+
assert_equal({'tag'=>false, 'value'=>'abc', 'elkey'=>0, 'parent'=>0, 'block'=>false}, dom[1])
|
18
|
+
|
19
|
+
# Simple Tag
|
20
|
+
dom = pdf.getHtmlDomArray('<b>abc</b>')
|
21
|
+
assert_equal dom.length, 4
|
22
|
+
|
23
|
+
assert_equal 0, dom[0]['parent'] # Root
|
24
|
+
assert_equal false, dom[0]['tag']
|
25
|
+
assert_equal({}, dom[0]['attribute'])
|
26
|
+
|
27
|
+
assert_equal dom[1]['parent'], 0 # parent -> parent tag key
|
28
|
+
assert_equal dom[1]['elkey'], 0
|
29
|
+
assert_equal dom[1]['tag'], true
|
30
|
+
assert_equal dom[1]['opening'], true
|
31
|
+
assert_equal dom[1]['value'], 'b'
|
32
|
+
assert_equal dom[1]['attribute'], {}
|
33
|
+
|
34
|
+
assert_equal({'tag' => false, 'value'=>'abc', 'elkey'=>1, 'parent'=>1, 'block'=>false}, dom[2]) # parent -> open tag key
|
35
|
+
|
36
|
+
assert_equal dom[3]['parent'], 1 # parent -> open tag key
|
37
|
+
assert_equal dom[3]['elkey'], 2
|
38
|
+
assert_equal dom[3]['tag'], true
|
39
|
+
assert_equal dom[3]['opening'], false
|
40
|
+
assert_equal dom[3]['value'], 'b'
|
41
|
+
|
42
|
+
# Error Tag (doble colse tag)
|
43
|
+
dom = pdf.getHtmlDomArray('</ul></div>')
|
44
|
+
assert_equal dom.length, 3
|
45
|
+
|
46
|
+
assert_equal 0, dom[0]['parent'] # Root
|
47
|
+
assert_equal false, dom[0]['tag']
|
48
|
+
assert_equal({}, dom[0]['attribute'])
|
49
|
+
|
50
|
+
assert_equal dom[1]['parent'], 0 # parent -> Root key
|
51
|
+
assert_equal dom[1]['elkey'], 0
|
52
|
+
assert_equal dom[1]['tag'], true
|
53
|
+
assert_equal dom[1]['opening'], false
|
54
|
+
assert_equal dom[1]['value'], 'ul'
|
55
|
+
|
56
|
+
assert_equal dom[2]['parent'], 0 # parent -> Root key
|
57
|
+
assert_equal dom[2]['elkey'], 1
|
58
|
+
assert_equal dom[2]['tag'], true
|
59
|
+
assert_equal dom[2]['opening'], false
|
60
|
+
assert_equal dom[2]['value'], 'div'
|
61
|
+
|
62
|
+
# Attribute
|
63
|
+
dom = pdf.getHtmlDomArray('<p style="text-align:justify">abc</p>')
|
64
|
+
assert_equal dom.length, 4
|
65
|
+
|
66
|
+
assert_equal 0, dom[0]['parent'] # Root
|
67
|
+
assert_equal false, dom[0]['tag']
|
68
|
+
assert_equal({}, dom[0]['attribute'])
|
69
|
+
|
70
|
+
assert_equal dom[1]['parent'], 0 # parent -> parent tag key
|
71
|
+
assert_equal dom[1]['elkey'], 0
|
72
|
+
assert_equal dom[1]['tag'], true
|
73
|
+
assert_equal dom[1]['opening'], true
|
74
|
+
assert_equal dom[1]['value'], 'p'
|
75
|
+
assert_equal dom[1]['attribute'], {'style'=>'text-align: justify;'}
|
76
|
+
assert_equal dom[1]['attribute']['style'], 'text-align: justify;'
|
77
|
+
assert_equal dom[1]['align'], 'J'
|
78
|
+
|
79
|
+
# Table border
|
80
|
+
dom = pdf.getHtmlDomArray('<table border="1"><tr><td>abc</td></tr></table>')
|
81
|
+
## added marker tag (by getHtmlDomArray()) ##
|
82
|
+
# '<table border="1"><tr><td>abc<marker style="font-size:0"/></td></tr></table>'
|
83
|
+
assert_equal dom.length, 9
|
84
|
+
|
85
|
+
assert_equal dom[1]['parent'], 0 # parent -> parent tag key
|
86
|
+
assert_equal dom[1]['elkey'], 0
|
87
|
+
assert_equal dom[1]['tag'], true
|
88
|
+
assert_equal dom[1]['opening'], true
|
89
|
+
assert_equal dom[1]['value'], 'table'
|
90
|
+
assert_equal dom[1]['attribute']['border'], '1'
|
91
|
+
|
92
|
+
## marker tag (by getHtmlDomArray())
|
93
|
+
assert_equal dom[5]['parent'], 3 # parent -> parent tag key
|
94
|
+
assert_equal dom[5]['elkey'], 4
|
95
|
+
assert_equal dom[5]['tag'], true
|
96
|
+
assert_equal dom[5]['opening'], true
|
97
|
+
assert_equal dom[5]['value'], 'marker'
|
98
|
+
assert_equal dom[5]['attribute']['style'], 'font-size:0'
|
99
|
+
|
100
|
+
# Table td Width
|
101
|
+
dom = pdf.getHtmlDomArray('<table><tr><td width="10">abc</td></tr></table>')
|
102
|
+
## added marker tag (by getHtmlDomArray()) ##
|
103
|
+
# '<table><tr><td width="10">abc<marker style="font-size:0"/></td></tr></table>'
|
104
|
+
assert_equal dom.length, 9
|
105
|
+
|
106
|
+
assert_equal dom[3]['parent'], 2 # parent -> parent tag key
|
107
|
+
assert_equal dom[3]['elkey'], 2
|
108
|
+
assert_equal dom[3]['tag'], true
|
109
|
+
assert_equal dom[3]['opening'], true
|
110
|
+
assert_equal dom[3]['value'], 'td'
|
111
|
+
assert_equal dom[3]['width'], '10'
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TcpdfFontFuncTest < ActiveSupport::TestCase
|
4
|
+
test "Font get_font_descent function test 1" do
|
5
|
+
pdf = TCPDF.new
|
6
|
+
fontdescent = pdf.get_font_descent('times', '', 18)
|
7
|
+
assert_in_delta 0.95, fontdescent, 0.01
|
8
|
+
end
|
9
|
+
|
10
|
+
test "Font get_font_descent function test 2" do
|
11
|
+
pdf = TCPDF.new
|
12
|
+
fontdescent = pdf.get_font_descent('freesans', '', 18)
|
13
|
+
assert_in_delta 1.91, fontdescent, 0.01
|
14
|
+
end
|
15
|
+
|
16
|
+
test "Font get_font_ascent function test 1" do
|
17
|
+
pdf = TCPDF.new
|
18
|
+
fontascent = pdf.get_font_ascent('times', '', 18)
|
19
|
+
assert_in_delta 5.39, fontascent, 0.01
|
20
|
+
end
|
21
|
+
|
22
|
+
test "Font get_font_ascent function test 2" do
|
23
|
+
pdf = TCPDF.new
|
24
|
+
fontascent = pdf.get_font_ascent('freesans', '', 18)
|
25
|
+
assert_in_delta 6.35, fontascent, 0.01
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TcpdfFontStyleTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
class MYPDF < TCPDF
|
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,176 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TcpdfFontTest < ActiveSupport::TestCase
|
4
|
+
class MYPDF < TCPDF
|
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('freemono', '', 18)
|
98
|
+
pdf.set_font('freemono', 'B', 18)
|
99
|
+
pdf.set_font('freemono', 'I', 18)
|
100
|
+
pdf.set_font('freemono', 'BI', 18)
|
101
|
+
|
102
|
+
pdf.set_font('dejavusans', '', 18)
|
103
|
+
pdf.set_font('dejavusans', 'B', 18)
|
104
|
+
pdf.set_font('dejavusans', 'I', 18)
|
105
|
+
pdf.set_font('dejavusans', 'BI', 18)
|
106
|
+
|
107
|
+
pdf.putfonts()
|
108
|
+
end
|
109
|
+
|
110
|
+
test "cidfont0 Font test" do
|
111
|
+
pdf = MYPDF.new
|
112
|
+
|
113
|
+
pdf.set_font('cid0cs', '', 18)
|
114
|
+
pdf.set_font('cid0cs', 'B', 18)
|
115
|
+
pdf.set_font('cid0cs', 'I', 18)
|
116
|
+
pdf.set_font('cid0cs', 'BI', 18)
|
117
|
+
|
118
|
+
pdf.set_font('cid0ct', '', 18)
|
119
|
+
pdf.set_font('cid0ct', 'B', 18)
|
120
|
+
pdf.set_font('cid0ct', 'I', 18)
|
121
|
+
pdf.set_font('cid0ct', 'BI', 18)
|
122
|
+
|
123
|
+
pdf.set_font('cid0jp', '', 18)
|
124
|
+
pdf.set_font('cid0jp', 'B', 18)
|
125
|
+
pdf.set_font('cid0jp', 'I', 18)
|
126
|
+
pdf.set_font('cid0jp', 'BI', 18)
|
127
|
+
|
128
|
+
pdf.set_font('cid0kr', '', 18)
|
129
|
+
pdf.set_font('cid0kr', 'B', 18)
|
130
|
+
pdf.set_font('cid0kr', 'I', 18)
|
131
|
+
pdf.set_font('cid0kr', 'BI', 18)
|
132
|
+
|
133
|
+
pdf.set_font('kozgopromedium', '', 18)
|
134
|
+
pdf.set_font('kozgopromedium', 'B', 18)
|
135
|
+
pdf.set_font('kozgopromedium', 'I', 18)
|
136
|
+
pdf.set_font('kozgopromedium', 'BI', 18)
|
137
|
+
|
138
|
+
font = pdf.getFontBuffer('kozgopromedium')
|
139
|
+
assert_equal font['desc']['StemV'], 99
|
140
|
+
assert_equal font['desc']['ItalicAngle'], 0
|
141
|
+
|
142
|
+
font = pdf.getFontBuffer('kozgopromediumB')
|
143
|
+
assert_equal font['desc']['StemV'], 99 * 2
|
144
|
+
assert_equal font['desc']['ItalicAngle'], 0
|
145
|
+
|
146
|
+
font = pdf.getFontBuffer('kozgopromediumI')
|
147
|
+
assert_equal font['desc']['StemV'], 99
|
148
|
+
assert_equal font['desc']['ItalicAngle'], -11
|
149
|
+
|
150
|
+
font = pdf.getFontBuffer('kozgopromediumBI')
|
151
|
+
assert_equal font['desc']['StemV'], 99 * 2
|
152
|
+
assert_equal font['desc']['ItalicAngle'], -11
|
153
|
+
|
154
|
+
pdf.set_font('kozminproregular', '', 18)
|
155
|
+
pdf.set_font('kozminproregular', 'B', 18)
|
156
|
+
pdf.set_font('kozminproregular', 'I', 18)
|
157
|
+
pdf.set_font('kozminproregular', 'BI', 18)
|
158
|
+
|
159
|
+
pdf.set_font('msungstdlight', '', 18)
|
160
|
+
pdf.set_font('msungstdlight', 'B', 18)
|
161
|
+
pdf.set_font('msungstdlight', 'I', 18)
|
162
|
+
pdf.set_font('msungstdlight', 'BI', 18)
|
163
|
+
|
164
|
+
pdf.set_font('stsongstdlight', '', 18)
|
165
|
+
pdf.set_font('stsongstdlight', 'B', 18)
|
166
|
+
pdf.set_font('stsongstdlight', 'I', 18)
|
167
|
+
pdf.set_font('stsongstdlight', 'BI', 18)
|
168
|
+
|
169
|
+
pdf.set_font('hysmyeongjostdmedium', '', 18)
|
170
|
+
pdf.set_font('hysmyeongjostdmedium', 'B', 18)
|
171
|
+
pdf.set_font('hysmyeongjostdmedium', 'I', 18)
|
172
|
+
pdf.set_font('hysmyeongjostdmedium', 'BI', 18)
|
173
|
+
|
174
|
+
pdf.putfonts()
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TcpdfFormatTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
test "set_page_orientation" do
|
6
|
+
pdf = TCPDF.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 TcpdfTest < ActiveSupport::TestCase
|
4
|
+
class MYPDF < TCPDF
|
5
|
+
def getSpaceString
|
6
|
+
super
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
test "get_html_unit_to_units test" do
|
11
|
+
pdf = TCPDF.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 = TCPDF.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 = TCPDF.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 = TCPDF.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 = TCPDF.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 TcpdfTest < ActiveSupport::TestCase
|
4
|
+
class MYPDF < TCPDF
|
5
|
+
def getPageBuffer(page)
|
6
|
+
super
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
test "write_html Basic test" do
|
11
|
+
pdf = TCPDF.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 = TCPDF.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
|