rbpdf 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +35 -0
  3. data/Gemfile +4 -0
  4. data/README.md +68 -0
  5. data/Rakefile +2 -0
  6. data/lib/core/rmagick.rb +85 -0
  7. data/lib/fonts/README.z +2 -0
  8. data/lib/fonts/arialunicid0_cw.rb +1738 -0
  9. data/lib/fonts/cid0cs.rb +21 -0
  10. data/lib/fonts/cid0ct.rb +21 -0
  11. data/lib/fonts/cid0jp.rb +21 -0
  12. data/lib/fonts/cid0kr.rb +21 -0
  13. data/lib/fonts/courier.rb +37 -0
  14. data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +53 -0
  15. data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +3 -0
  16. data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +99 -0
  17. data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +1315 -0
  18. data/lib/fonts/dejavu-fonts-ttf-2.33/README +59 -0
  19. data/lib/fonts/dejavusans.ctg.z +0 -0
  20. data/lib/fonts/dejavusans.rb +338 -0
  21. data/lib/fonts/dejavusans.z +0 -0
  22. data/lib/fonts/dejavusansb.ctg.z +0 -0
  23. data/lib/fonts/dejavusansb.rb +330 -0
  24. data/lib/fonts/dejavusansb.z +0 -0
  25. data/lib/fonts/dejavusansbi.ctg.z +0 -0
  26. data/lib/fonts/dejavusansbi.rb +297 -0
  27. data/lib/fonts/dejavusansbi.z +0 -0
  28. data/lib/fonts/dejavusansi.ctg.z +0 -0
  29. data/lib/fonts/dejavusansi.rb +305 -0
  30. data/lib/fonts/dejavusansi.z +0 -0
  31. data/lib/fonts/freefont-20080912/AUTHORS +191 -0
  32. data/lib/fonts/freefont-20080912/COPYING +341 -0
  33. data/lib/fonts/freefont-20080912/CREDITS +506 -0
  34. data/lib/fonts/freefont-20080912/ChangeLog +3320 -0
  35. data/lib/fonts/freefont-20080912/INSTALL +81 -0
  36. data/lib/fonts/freefont-20080912/README +108 -0
  37. data/lib/fonts/freemono.ctg.z +0 -0
  38. data/lib/fonts/freemono.rb +203 -0
  39. data/lib/fonts/freemono.z +0 -0
  40. data/lib/fonts/freemonob.ctg.z +0 -0
  41. data/lib/fonts/freemonob.rb +120 -0
  42. data/lib/fonts/freemonob.z +0 -0
  43. data/lib/fonts/freemonobi.ctg.z +0 -0
  44. data/lib/fonts/freemonobi.rb +84 -0
  45. data/lib/fonts/freemonobi.z +0 -0
  46. data/lib/fonts/freemonoi.ctg.z +0 -0
  47. data/lib/fonts/freemonoi.rb +136 -0
  48. data/lib/fonts/freemonoi.z +0 -0
  49. data/lib/fonts/freesans.ctg.z +0 -0
  50. data/lib/fonts/freesans.rb +196 -0
  51. data/lib/fonts/freesans.z +0 -0
  52. data/lib/fonts/freesansb.ctg.z +0 -0
  53. data/lib/fonts/freesansb.rb +136 -0
  54. data/lib/fonts/freesansb.z +0 -0
  55. data/lib/fonts/freesansbi.ctg.z +0 -0
  56. data/lib/fonts/freesansbi.rb +108 -0
  57. data/lib/fonts/freesansbi.z +0 -0
  58. data/lib/fonts/freesansi.ctg.z +0 -0
  59. data/lib/fonts/freesansi.rb +136 -0
  60. data/lib/fonts/freesansi.z +0 -0
  61. data/lib/fonts/freeserif.ctg.z +0 -0
  62. data/lib/fonts/freeserif.rb +285 -0
  63. data/lib/fonts/freeserif.z +0 -0
  64. data/lib/fonts/freeserifb.ctg.z +0 -0
  65. data/lib/fonts/freeserifb.rb +164 -0
  66. data/lib/fonts/freeserifb.z +0 -0
  67. data/lib/fonts/freeserifbi.ctg.z +0 -0
  68. data/lib/fonts/freeserifbi.rb +130 -0
  69. data/lib/fonts/freeserifbi.z +0 -0
  70. data/lib/fonts/freeserifi.ctg.z +0 -0
  71. data/lib/fonts/freeserifi.rb +151 -0
  72. data/lib/fonts/freeserifi.z +0 -0
  73. data/lib/fonts/helvetica.rb +34 -0
  74. data/lib/fonts/helveticab.rb +34 -0
  75. data/lib/fonts/helveticabi.rb +34 -0
  76. data/lib/fonts/helveticai.rb +34 -0
  77. data/lib/fonts/hysmyeongjostdmedium.rb +31 -0
  78. data/lib/fonts/kozgopromedium.rb +47 -0
  79. data/lib/fonts/kozminproregular.rb +46 -0
  80. data/lib/fonts/msungstdlight.rb +23 -0
  81. data/lib/fonts/sjis.rb +834 -0
  82. data/lib/fonts/stsongstdlight.rb +23 -0
  83. data/lib/fonts/symbol.rb +33 -0
  84. data/lib/fonts/times.rb +34 -0
  85. data/lib/fonts/timesb.rb +34 -0
  86. data/lib/fonts/timesbi.rb +34 -0
  87. data/lib/fonts/timesi.rb +34 -0
  88. data/lib/fonts/uni2cid_ac15.rb +23613 -0
  89. data/lib/fonts/uni2cid_ag15.rb +30222 -0
  90. data/lib/fonts/uni2cid_aj16.rb +15705 -0
  91. data/lib/fonts/uni2cid_ak12.rb +17530 -0
  92. data/lib/fonts/zapfdingbats.rb +33 -0
  93. data/lib/htmlcolors.rb +207 -0
  94. data/lib/rbpdf.rb +14472 -0
  95. data/lib/rbpdf/version.rb +3 -0
  96. data/lib/unicode_data.rb +18315 -0
  97. data/logo_example.png +0 -0
  98. data/rbpdf.gemspec +35 -0
  99. data/test/rbpdf_bidi_test.rb +65 -0
  100. data/test/rbpdf_bookmark_test.rb +57 -0
  101. data/test/rbpdf_cell_test.rb +232 -0
  102. data/test/rbpdf_content_test.rb +117 -0
  103. data/test/rbpdf_css_test.rb +318 -0
  104. data/test/rbpdf_dom_test.rb +113 -0
  105. data/test/rbpdf_font_func_test.rb +27 -0
  106. data/test/rbpdf_font_style_test.rb +34 -0
  107. data/test/rbpdf_font_test.rb +181 -0
  108. data/test/rbpdf_format_test.rb +27 -0
  109. data/test/rbpdf_func_test.rb +126 -0
  110. data/test/rbpdf_html_test.rb +164 -0
  111. data/test/rbpdf_htmlcell_test.rb +64 -0
  112. data/test/rbpdf_image_test.rb +108 -0
  113. data/test/rbpdf_test.rb +245 -0
  114. data/test/rbpdf_transaction_test.rb +199 -0
  115. data/test/rbpdf_viewerpreferences_test.rb +37 -0
  116. data/test/rbpdf_write_test.rb +173 -0
  117. data/test/test_helper.rb +1 -0
  118. data/test_unicode.rbpdf +115 -0
  119. data/utf8test.txt +120 -0
  120. metadata +216 -0
@@ -0,0 +1,64 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+ test "write_html_cell Basic test" do
5
+ pdf = RBPDF.new
6
+ pdf.add_page()
7
+
8
+ htmlcontent = '<p>foo</p>'
9
+ pdf.write_html_cell(0, 5, 10, '', htmlcontent, 0, 1)
10
+
11
+ pno = pdf.get_page
12
+ assert_equal pno, 1
13
+
14
+ y = pdf.get_y
15
+ assert_in_delta 17.3, y, 0.1
16
+
17
+ no = pdf.get_num_pages
18
+ assert_equal no, 1
19
+ end
20
+
21
+ test "write_html_cell Page Break test 1" do
22
+ pdf = RBPDF.new
23
+ pdf.add_page()
24
+
25
+ pdf.set_top_margin(30)
26
+
27
+ h = pdf.get_page_height
28
+ pdf.set_y(h - 15)
29
+
30
+ htmlcontent = '<p>foo</p>'
31
+ pdf.write_html_cell(0, 5, 10, '', htmlcontent, 0, 1)
32
+
33
+ pno = pdf.get_page
34
+ assert_equal pno, 2
35
+
36
+ y = pdf.get_y
37
+ assert_in_delta 40.0, y, 0.1
38
+
39
+ no = pdf.get_num_pages
40
+ assert_equal no, 2
41
+ end
42
+
43
+ test "write_html_cell Page Break test 2" do
44
+ pdf = RBPDF.new
45
+ pdf.add_page()
46
+
47
+ pdf.set_top_margin(30)
48
+
49
+ h = pdf.get_page_height
50
+ pdf.set_y(h - 15)
51
+
52
+ htmlcontent = '<p>foo</p>'
53
+ pdf.write_html_cell(0, 5, 10, '', htmlcontent, "LRBT", 1)
54
+
55
+ pno = pdf.get_page
56
+ assert_equal pno, 2
57
+
58
+ y = pdf.get_y
59
+ assert_in_delta 40.0, y, 0.1
60
+
61
+ no = pdf.get_num_pages
62
+ assert_equal no, 2
63
+ end
64
+ end
@@ -0,0 +1,108 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+
5
+ test "Image basic func extension test" do
6
+ pdf = RBPDF.new
7
+
8
+ type = pdf.get_image_file_type("/tmp/rbpdf_logo.gif")
9
+ assert_equal type, "gif"
10
+
11
+ type = pdf.get_image_file_type("/tmp/rbpdf_logo.PNG")
12
+ assert_equal type, "png"
13
+
14
+ type = pdf.get_image_file_type("/tmp/rbpdf_logo.jpg")
15
+ assert_equal type, "jpeg"
16
+
17
+ type = pdf.get_image_file_type("/tmp/rbpdf_logo.jpeg")
18
+ assert_equal type, "jpeg"
19
+
20
+ type = pdf.get_image_file_type("/tmp/rbpdf_logo")
21
+ assert_equal type, ""
22
+
23
+ type = pdf.get_image_file_type("")
24
+ assert_equal type, ""
25
+
26
+ type = pdf.get_image_file_type(nil)
27
+ assert_equal type, ""
28
+ end
29
+
30
+ test "Image basic func mime type test" do
31
+ pdf = RBPDF.new
32
+
33
+ type = pdf.get_image_file_type(nil, {})
34
+ assert_equal type, ''
35
+
36
+ type = pdf.get_image_file_type(nil, {'mime' => 'image/gif'})
37
+ assert_equal type, 'gif'
38
+
39
+ type = pdf.get_image_file_type(nil, {'mime' => 'image/jpeg'})
40
+ assert_equal type, 'jpeg'
41
+
42
+ type = pdf.get_image_file_type('/tmp/rbpdf_logo.gif', {'mime' => 'image/png'})
43
+ assert_equal type, 'png'
44
+
45
+ type = pdf.get_image_file_type('/tmp/rbpdf_logo.gif', {})
46
+ assert_equal type, 'gif'
47
+
48
+ type = pdf.get_image_file_type(nil, {'mime' => 'text/html'})
49
+ assert_equal type, ''
50
+
51
+ type = pdf.get_image_file_type(nil, [])
52
+ assert_equal type, ''
53
+ end
54
+
55
+ test "Image basic filename test" do
56
+ pdf = RBPDF.new
57
+ err = assert_raises(RuntimeError) {
58
+ pdf.image(nil)
59
+ }
60
+ assert_equal( err.message, 'RBPDF error: Image filename is empty.')
61
+
62
+ err = assert_raises(RuntimeError) {
63
+ pdf.image('')
64
+ }
65
+ assert_equal( err.message, 'RBPDF error: Image filename is empty.')
66
+
67
+ err = assert_raises(RuntimeError) {
68
+ pdf.image('foo.png')
69
+ }
70
+ assert_equal( err.message, 'RBPDF error: Missing image file: foo.png')
71
+ end
72
+
73
+ test "Image basic test" do
74
+ pdf = RBPDF.new
75
+ pdf.add_page
76
+ img_file = File.join(File.dirname(__FILE__), '..', 'logo_example.png')
77
+
78
+ result_img = pdf.image(img_file, 50, 0, 0, '', '', '', '', false, 300, '', true)
79
+
80
+ no = pdf.get_num_pages
81
+ assert_equal no, 1
82
+ end
83
+
84
+ test "Image fitonpage test 1" do
85
+ pdf = RBPDF.new
86
+ pdf.add_page
87
+ img_file = File.join(File.dirname(__FILE__), '..', 'logo_example.png')
88
+
89
+ result_img = pdf.image(img_file, 50, 140, 100, '', '', '', '', false, 300, '', true, false, 0, false, false, true)
90
+
91
+ no = pdf.get_num_pages
92
+ assert_equal no, 1
93
+ end
94
+
95
+ test "Image fitonpage test 2" do
96
+ pdf = RBPDF.new
97
+ pdf.add_page
98
+ img_file = File.join(File.dirname(__FILE__), '..', 'logo_example.png')
99
+
100
+ y = 100
101
+ w = pdf.get_page_width * 2
102
+ h = pdf.get_page_height
103
+ result_img = pdf.image(img_file, '', y, w, h, '', '', '', false, 300, '', true, false, 0, false, false, true)
104
+
105
+ no = pdf.get_num_pages
106
+ assert_equal no, 1
107
+ end
108
+ end
@@ -0,0 +1,245 @@
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 "set_x potision" do
11
+ pdf = RBPDF.new
12
+ width = pdf.get_page_width
13
+
14
+ pdf.set_x(5)
15
+ x = pdf.get_x
16
+ abs_x = pdf.get_abs_x
17
+ assert_equal 5, x
18
+ assert_equal 5, abs_x
19
+
20
+ pdf.set_x(-4)
21
+ x = pdf.get_x
22
+ abs_x = pdf.get_abs_x
23
+ assert_equal width - 4, x
24
+ assert_equal width - 4, abs_x
25
+
26
+ pdf.set_rtl(true) # Right to Left
27
+
28
+ pdf.set_x(5)
29
+ x = pdf.get_x
30
+ abs_x = pdf.get_abs_x
31
+ assert_equal 5, x
32
+ assert_equal width - 5, abs_x
33
+
34
+ pdf.set_x(-4)
35
+ x = pdf.get_x
36
+ abs_x = pdf.get_abs_x
37
+ assert_equal width - 4, x
38
+ assert_equal 4, abs_x
39
+ end
40
+
41
+ test "set_y potision" do
42
+ pdf = RBPDF.new
43
+ width = pdf.get_page_width
44
+
45
+ pdf.set_left_margin(10)
46
+ pdf.set_y(20)
47
+ x = pdf.get_x
48
+ abs_x = pdf.get_abs_x
49
+ y = pdf.get_y
50
+ assert_equal 10, x
51
+ assert_equal 10, abs_x
52
+ assert_equal 20, y
53
+
54
+ pdf.set_left_margin(30)
55
+ pdf.set_y(20)
56
+ x = pdf.get_x
57
+ abs_x = pdf.get_abs_x
58
+ y = pdf.get_y
59
+ assert_equal 30, x
60
+ assert_equal 30, abs_x
61
+ assert_equal 20, y
62
+
63
+ pdf.set_rtl(true) # Right to Left
64
+
65
+ pdf.set_right_margin(10)
66
+ pdf.set_y(20)
67
+ x = pdf.get_x
68
+ abs_x = pdf.get_abs_x
69
+ y = pdf.get_y
70
+ assert_equal 10, x
71
+ assert_equal width - 10, abs_x
72
+ assert_equal 20, y
73
+
74
+ pdf.set_right_margin(30)
75
+ pdf.set_y(20)
76
+ x = pdf.get_x
77
+ abs_x = pdf.get_abs_x
78
+ y = pdf.get_y
79
+ assert_equal 30, x
80
+ assert_equal width - 30, abs_x
81
+ assert_equal 20, y
82
+ end
83
+
84
+ test "add_page potision" do
85
+ pdf = RBPDF.new
86
+ width = pdf.get_page_width
87
+
88
+ pdf.add_page
89
+ x = pdf.get_x
90
+ abs_x = pdf.get_abs_x
91
+ y = pdf.get_y
92
+ assert_in_delta 10.00125, x, 0.00001
93
+ assert_in_delta 10.00125, abs_x, 0.00001
94
+ assert_in_delta 10.00125, y, 0.00001
95
+
96
+ pdf.set_rtl(true) # Right to Left
97
+
98
+ pdf.add_page
99
+ x = pdf.get_x
100
+ abs_x = pdf.get_abs_x
101
+ y = pdf.get_y
102
+ assert_in_delta 10.00125, x, 0.00001
103
+ assert_in_delta width - 10.00125, abs_x, 0.00001
104
+ assert_in_delta 10.00125, y, 0.00001
105
+
106
+ pdf.set_page(1)
107
+ page = pdf.get_page
108
+ assert_equal 1, page
109
+ pdf.set_y(20)
110
+ y = pdf.get_y
111
+ assert_equal 20, y
112
+ pdf.add_page
113
+ y = pdf.get_y
114
+ assert_in_delta 10.00125, y, 0.00001
115
+
116
+ end
117
+
118
+ test "add_page" do
119
+ pdf = RBPDF.new
120
+
121
+ page = pdf.get_page
122
+ assert_equal 0, page
123
+ pages = pdf.get_num_pages
124
+ assert_equal 0, pages
125
+
126
+ pdf.add_page
127
+ page = pdf.get_page
128
+ assert_equal 1, page
129
+ pages = pdf.get_num_pages
130
+ assert_equal 1, pages
131
+
132
+ pdf.add_page
133
+ page = pdf.get_page
134
+ assert_equal 2, page
135
+ pages = pdf.get_num_pages
136
+ assert_equal 2, pages
137
+
138
+ pdf.set_page(1)
139
+ page = pdf.get_page
140
+ assert_equal 1, page
141
+
142
+ pdf.add_page
143
+ page = pdf.get_page
144
+ assert_equal 2, page
145
+ pages = pdf.get_num_pages
146
+ assert_equal 2, pages
147
+
148
+ pdf.add_page
149
+ page = pdf.get_page
150
+ assert_equal 3, page
151
+ pages = pdf.get_num_pages
152
+ assert_equal 3, pages
153
+
154
+ pdf.set_page(1)
155
+ page = pdf.get_page
156
+ assert_equal 1, page
157
+
158
+ pdf.last_page
159
+ page = pdf.get_page
160
+ assert_equal 3, page
161
+ pages = pdf.get_num_pages
162
+ assert_equal 3, pages
163
+ end
164
+
165
+ test "add_page set_page Under Error" do
166
+ pdf = RBPDF.new
167
+
168
+ page = pdf.get_page
169
+ assert_equal 0, page
170
+ pages = pdf.get_num_pages
171
+ assert_equal 0, pages
172
+
173
+ pdf.add_page
174
+ page = pdf.get_page
175
+ assert_equal 1, page
176
+ pages = pdf.get_num_pages
177
+ assert_equal 1, pages
178
+
179
+ assert_raise(RuntimeError) {pdf.set_page(0)} # Page under size
180
+ end
181
+
182
+ test "add_page set_page Over Error" do
183
+ pdf = RBPDF.new
184
+
185
+ page = pdf.get_page
186
+ assert_equal 0, page
187
+ pages = pdf.get_num_pages
188
+ assert_equal 0, pages
189
+
190
+ pdf.add_page
191
+ page = pdf.get_page
192
+ assert_equal 1, page
193
+ pages = pdf.get_num_pages
194
+ assert_equal 1, pages
195
+
196
+ pdf.add_page
197
+ page = pdf.get_page
198
+ assert_equal 2, page
199
+ pages = pdf.get_num_pages
200
+ assert_equal 2, pages
201
+
202
+ pdf.set_page(1)
203
+ page = pdf.get_page
204
+ assert_equal 1, page
205
+
206
+ assert_raise(RuntimeError) {pdf.set_page(3)} # Page over size
207
+ end
208
+
209
+ test "deletePage test" do
210
+ pdf = MYPDF.new
211
+
212
+ pdf.add_page
213
+ pdf.write(0, "Page 1")
214
+
215
+ page = pdf.get_page
216
+ assert_equal 1, page
217
+ pages = pdf.get_num_pages
218
+ assert_equal 1, pages
219
+
220
+ contents1 = pdf.getPageBuffer(1)
221
+
222
+ pdf.add_page
223
+ pdf.write(0, "Page 2")
224
+
225
+ page = pdf.get_page
226
+ assert_equal 2, page
227
+ pages = pdf.get_num_pages
228
+ assert_equal 2, pages
229
+
230
+ contents2 = pdf.getPageBuffer(2)
231
+
232
+ pdf.deletePage(1)
233
+ page = pdf.get_page
234
+ assert_equal 1, page
235
+ pages = pdf.get_num_pages
236
+ assert_equal 1, pages
237
+
238
+ contents3 = pdf.getPageBuffer(1)
239
+ assert_not_equal contents3, contents1
240
+ assert_equal contents3, contents2
241
+
242
+ contents4 = pdf.getPageBuffer(2)
243
+ assert_equal contents4, false
244
+ end
245
+ end
@@ -0,0 +1,199 @@
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 "Transaction write test without diskcache" do
11
+ pdf = MYPDF.new
12
+ pdf.add_page()
13
+ page = pdf.get_page
14
+
15
+ pdf.write(0, "LINE 0\n")
16
+ contents01 = pdf.getPageBuffer(page).dup
17
+
18
+ pdf.start_transaction()
19
+
20
+ pdf.write(0, "LINE 1\n")
21
+ pdf.write(0, "LINE 2\n")
22
+ contents02 = pdf.getPageBuffer(page).dup
23
+ assert_not_equal contents01, contents02
24
+
25
+ # rolls back to the last (re)start 1
26
+ pdf = pdf.rollback_transaction()
27
+ contents03 = pdf.getPageBuffer(page).dup
28
+ assert_equal contents01, contents03
29
+
30
+ pdf.start_transaction()
31
+
32
+ pdf.write(0, "LINE 3\n")
33
+ pdf.write(0, "LINE 4\n")
34
+ contents04 = pdf.getPageBuffer(page).dup
35
+ assert_not_equal contents03, contents04
36
+
37
+ # rolls back to the last (re)start 2
38
+ pdf = pdf.rollback_transaction()
39
+ contents05 = pdf.getPageBuffer(page).dup
40
+ assert_equal contents03, contents05
41
+
42
+ pdf.commit_transaction()
43
+ end
44
+
45
+ test "Transaction test with diskcache" do
46
+ pdf = MYPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
47
+ pdf.add_page()
48
+ page = pdf.get_page
49
+
50
+ pdf.write(0, "LINE 0\n")
51
+ contents01 = pdf.getPageBuffer(page).dup
52
+ cache_file1 = pdf.cache_file_length.dup
53
+
54
+ pdf.start_transaction()
55
+
56
+ pdf.write(0, "LINE 1\n")
57
+ pdf.write(0, "LINE 2\n")
58
+ cache_file2 = pdf.cache_file_length.dup
59
+ contents02 = pdf.getPageBuffer(page).dup
60
+ assert_not_equal cache_file1, cache_file2
61
+ assert_not_equal contents01, contents02
62
+
63
+ # rolls back to the last (re)start 1
64
+ pdf = pdf.rollback_transaction()
65
+
66
+ cache_file3 = pdf.cache_file_length.dup
67
+ contents03 = pdf.getPageBuffer(page).dup
68
+ assert_equal cache_file1, cache_file3
69
+ assert_equal contents01, contents03
70
+
71
+ pdf.start_transaction()
72
+
73
+ pdf.write(0, "LINE 3\n")
74
+ pdf.write(0, "LINE 4\n")
75
+ contents04 = pdf.getPageBuffer(page).dup
76
+ assert_not_equal contents03, contents04
77
+
78
+ # rolls back to the last (re)start 2
79
+ pdf = pdf.rollback_transaction()
80
+
81
+ contents05 = pdf.getPageBuffer(page).dup
82
+ assert_equal contents03, contents05
83
+ end
84
+
85
+ test "Transaction multi_cell test without diskcache" do
86
+ pdf = MYPDF.new
87
+ pdf.add_page()
88
+ page = pdf.get_page
89
+
90
+ pdf.multi_cell(50, 5, 'mult_cell 1', 0)
91
+ contents01 = pdf.getPageBuffer(page).dup
92
+
93
+ pdf.start_transaction()
94
+
95
+ pdf.multi_cell(50, 5, 'mult_cell 1', 1)
96
+ pdf.multi_cell(50, 5, 'mult_cell 2', 1)
97
+ contents02 = pdf.getPageBuffer(page).dup
98
+ assert_not_equal contents01, contents02
99
+
100
+ # rolls back to the last (re)start 1
101
+ pdf = pdf.rollback_transaction()
102
+ contents03 = pdf.getPageBuffer(page).dup
103
+ assert_equal contents01, contents03
104
+
105
+ pdf.start_transaction()
106
+
107
+ pdf.multi_cell(50, 5, 'mult_cell 3', 1)
108
+ pdf.multi_cell(50, 5, 'mult_cell 4', 1)
109
+ contents04 = pdf.getPageBuffer(page).dup
110
+ assert_not_equal contents03, contents04
111
+
112
+ # rolls back to the last (re)start 2
113
+ pdf = pdf.rollback_transaction()
114
+ contents05 = pdf.getPageBuffer(page).dup
115
+ assert_equal contents03, contents05
116
+
117
+ pdf.commit_transaction()
118
+ end
119
+
120
+ test "Transaction mult_cell test with diskcache" do
121
+ pdf = MYPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
122
+ pdf.add_page()
123
+ page = pdf.get_page
124
+
125
+ pdf.multi_cell(50, 5, 'mult_cell 0', 1)
126
+ cache_file1 = pdf.cache_file_length.dup
127
+ contents01 = pdf.getPageBuffer(page).dup
128
+
129
+ pdf.start_transaction()
130
+
131
+ pdf.multi_cell(50, 5, 'mult_cell 1', 1)
132
+ pdf.multi_cell(50, 5, 'mult_cell 2', 1)
133
+ cache_file2 = pdf.cache_file_length.dup
134
+ contents02 = pdf.getPageBuffer(page).dup
135
+ assert_not_equal cache_file1, cache_file2
136
+ assert_not_equal contents01, contents02
137
+
138
+ # rolls back to the last (re)start 1
139
+ pdf = pdf.rollback_transaction()
140
+
141
+ contents03 = pdf.getPageBuffer(page).dup
142
+ cache_file3 = pdf.cache_file_length.dup
143
+ assert_equal cache_file1, cache_file3
144
+ assert_equal contents01, contents03
145
+
146
+ pdf.start_transaction()
147
+
148
+ pdf.multi_cell(50, 5, 'mult_cell 3', 1)
149
+ pdf.multi_cell(50, 5, 'mult_cell 4', 1)
150
+ contents04 = pdf.getPageBuffer(page).dup
151
+ assert_not_equal contents03, contents04
152
+
153
+ # rolls back to the last (re)start 2
154
+ pdf = pdf.rollback_transaction()
155
+
156
+ contents05 = pdf.getPageBuffer(page).dup
157
+ assert_equal contents03, contents05
158
+ end
159
+
160
+ test "Transaction mult_cell self test with diskcache" do
161
+ pdf = MYPDF.new('P', 'mm', 'A4', true, "UTF-8", true)
162
+ pdf.add_page()
163
+ page = pdf.get_page
164
+
165
+ pdf.multi_cell(50, 5, 'mult_cell 0', 1)
166
+ cache_file1 = pdf.cache_file_length.dup
167
+ contents01 = pdf.getPageBuffer(page).dup
168
+
169
+ pdf.start_transaction()
170
+
171
+ pdf.multi_cell(50, 5, 'mult_cell 1', 1)
172
+ pdf.multi_cell(50, 5, 'mult_cell 2', 1)
173
+ cache_file2 = pdf.cache_file_length.dup
174
+ contents02 = pdf.getPageBuffer(page).dup
175
+ assert_not_equal cache_file1, cache_file2
176
+ assert_not_equal contents01, contents02
177
+
178
+ # rolls back to the last (re)start 1
179
+ pdf.rollback_transaction(true)
180
+
181
+ contents03 = pdf.getPageBuffer(page).dup
182
+ cache_file3 = pdf.cache_file_length.dup
183
+ assert_equal cache_file1, cache_file3
184
+ assert_equal contents01, contents03
185
+
186
+ pdf.start_transaction()
187
+
188
+ pdf.multi_cell(50, 5, 'mult_cell 3', 1)
189
+ pdf.multi_cell(50, 5, 'mult_cell 4', 1)
190
+ contents04 = pdf.getPageBuffer(page).dup
191
+ assert_not_equal contents03, contents04
192
+
193
+ # rolls back to the last (re)start 2
194
+ pdf.rollback_transaction(true)
195
+
196
+ contents05 = pdf.getPageBuffer(page).dup
197
+ assert_equal contents03, contents05
198
+ end
199
+ end