rbpdf 1.19.4 → 1.19.5
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 +6 -0
- data/lib/rbpdf.rb +22 -25
- data/lib/rbpdf/version.rb +1 -1
- data/test/rbpdf_http_test.rb +19 -10
- data/test/rbpdf_image_rmagick_test.rb +6 -6
- data/test/rbpdf_image_test.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2639ff84fd70b4fcf84386c2d2d4ec407cfe932e
|
|
4
|
+
data.tar.gz: 59a2e7fe5a678bec81f112744dae30d004ae9a00
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 10d521aaf60b79a63a03d4a7e04830ee2cacee71f5d0a6f3f1acafb03a0d0973c48ce8fb77eec9f86747b72f4c52e5d0ccfcc59f55edca70e25804e0fb65302c
|
|
7
|
+
data.tar.gz: de13ae61679876a96365899664338a1a54134805eeec6e1d93cf2355c0b2b89c7266ad314a6b9066f306cc210712659914578cafab8f3907729f9d1c24c50692
|
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
1.19.5 2018-06-24
|
|
2
|
+
- Fixed that the handling of Tempfile was wrong.
|
|
3
|
+
- Fixed compatibility problem with Magick::RGBColorspace and Magick::SRGBColorspace.
|
|
4
|
+
image_alpha_mask function has been fixed to use Magick :: ExtractAlphaChannel.
|
|
5
|
+
- Deleted exception handling of ImagePngAlpha function.
|
|
6
|
+
|
|
1
7
|
1.19.4 2018-06-16
|
|
2
8
|
- Ruby 2.5 supported.
|
|
3
9
|
- Rails 5.2 supported.
|
data/lib/rbpdf.rb
CHANGED
|
@@ -4836,6 +4836,9 @@ class RBPDF
|
|
|
4836
4836
|
# set bottomcoordinates
|
|
4837
4837
|
@img_rb_y = y + h
|
|
4838
4838
|
Error('Image filename is empty.') if file.nil? or file.length == 0
|
|
4839
|
+
unless File.exist?(file)
|
|
4840
|
+
Error('Image file is not found. : ' + file)
|
|
4841
|
+
end
|
|
4839
4842
|
|
|
4840
4843
|
# get image dimensions
|
|
4841
4844
|
imsize = getimagesize(file)
|
|
@@ -4845,14 +4848,14 @@ class RBPDF
|
|
|
4845
4848
|
imsize = getimagesize(file)
|
|
4846
4849
|
|
|
4847
4850
|
if imsize.nil?
|
|
4848
|
-
Error('
|
|
4851
|
+
Error("Can't get image dimension. : " + file)
|
|
4849
4852
|
elsif imsize == false
|
|
4850
4853
|
if (w > 0) and (h > 0)
|
|
4851
4854
|
pw = getHTMLUnitToUnits(w, 0, @pdfunit, true) * @img_scale * @k
|
|
4852
4855
|
ph = getHTMLUnitToUnits(h, 0, @pdfunit, true) * @img_scale * @k
|
|
4853
4856
|
imsize = [pw, ph]
|
|
4854
4857
|
else
|
|
4855
|
-
Error('
|
|
4858
|
+
Error('Unable to get image width and height: ' + file)
|
|
4856
4859
|
end
|
|
4857
4860
|
end
|
|
4858
4861
|
end
|
|
@@ -4963,7 +4966,7 @@ class RBPDF
|
|
|
4963
4966
|
tmpFile = imageToPNG(file)
|
|
4964
4967
|
if tmpFile != false
|
|
4965
4968
|
info=parsepng(tmpFile.path)
|
|
4966
|
-
tmpFile.
|
|
4969
|
+
tmpFile.close(true)
|
|
4967
4970
|
end
|
|
4968
4971
|
else
|
|
4969
4972
|
#Allow for additional formats
|
|
@@ -4997,10 +5000,10 @@ class RBPDF
|
|
|
4997
5000
|
tmpname.binmode
|
|
4998
5001
|
jpeg_quality = @jpeg_quality
|
|
4999
5002
|
tmpname.print img.to_blob { self.quality = jpeg_quality }
|
|
5000
|
-
tmpname.
|
|
5003
|
+
tmpname.fsync
|
|
5001
5004
|
|
|
5002
5005
|
info = parsejpeg(tmpname.path)
|
|
5003
|
-
tmpname.
|
|
5006
|
+
tmpname.close(true)
|
|
5004
5007
|
else
|
|
5005
5008
|
return false
|
|
5006
5009
|
end
|
|
@@ -5137,9 +5140,8 @@ class RBPDF
|
|
|
5137
5140
|
tmpFile = Tempfile.new(['', '_' + File::basename(file) + '.png'], @@k_path_cache);
|
|
5138
5141
|
tmpFile.binmode
|
|
5139
5142
|
tmpFile.print img.to_blob
|
|
5143
|
+
tmpFile.fsync
|
|
5140
5144
|
tmpFile
|
|
5141
|
-
ensure
|
|
5142
|
-
tmpFile.close unless tmpFile.nil?
|
|
5143
5145
|
end
|
|
5144
5146
|
protected :imageToPNG
|
|
5145
5147
|
|
|
@@ -5247,17 +5249,18 @@ class RBPDF
|
|
|
5247
5249
|
|
|
5248
5250
|
def image_alpha_mask(file)
|
|
5249
5251
|
img = Magick::ImageList.new(file)
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
|
|
5252
|
+
if img.alpha?
|
|
5253
|
+
img.alpha = Magick::ExtractAlphaChannel # PNG alpha channel Mask
|
|
5254
|
+
else
|
|
5255
|
+
return false
|
|
5256
|
+
end
|
|
5253
5257
|
|
|
5254
5258
|
#use a temporary file....
|
|
5255
5259
|
tmpFile = Tempfile.new(['msk_', '.png'], @@k_path_cache)
|
|
5256
5260
|
tmpFile.binmode
|
|
5257
5261
|
tmpFile.print img.to_blob
|
|
5262
|
+
tmpFile.fsync
|
|
5258
5263
|
tmpFile
|
|
5259
|
-
ensure
|
|
5260
|
-
tmpFile.close unless tmpFile.nil?
|
|
5261
5264
|
end
|
|
5262
5265
|
protected :image_alpha_mask
|
|
5263
5266
|
|
|
@@ -5294,22 +5297,19 @@ class RBPDF
|
|
|
5294
5297
|
if tempfile_plain == false
|
|
5295
5298
|
return false
|
|
5296
5299
|
end
|
|
5297
|
-
info=parsepng(tempfile_plain.path)
|
|
5298
|
-
if info['cs'] != 'DeviceRGB'
|
|
5299
|
-
tempfile_plain.delete
|
|
5300
|
-
return false
|
|
5301
|
-
end
|
|
5302
5300
|
|
|
5303
5301
|
tempfile_alpha = image_alpha_mask(file)
|
|
5302
|
+
if tempfile_alpha == false
|
|
5303
|
+
return false
|
|
5304
|
+
end
|
|
5304
5305
|
|
|
5305
5306
|
# embed mask image
|
|
5306
5307
|
imgmask = Image(tempfile_alpha.path, x, y, w, h, 'PNG', '', '', resize, dpi, '', true, false)
|
|
5308
|
+
tempfile_alpha.close(true)
|
|
5307
5309
|
|
|
5308
5310
|
# embed image, masked with previously embedded mask
|
|
5309
5311
|
Image(tempfile_plain.path, x, y, w, h, type, link, align, resize, dpi, palign, false, imgmask)
|
|
5310
|
-
|
|
5311
|
-
tempfile_alpha.delete
|
|
5312
|
-
tempfile_plain.delete
|
|
5312
|
+
tempfile_plain.close(true)
|
|
5313
5313
|
|
|
5314
5314
|
return true
|
|
5315
5315
|
end
|
|
@@ -11775,9 +11775,8 @@ protected
|
|
|
11775
11775
|
res = http.get(uri.path)
|
|
11776
11776
|
tmpFile.print res.body
|
|
11777
11777
|
end
|
|
11778
|
+
tmpFile.fsync
|
|
11778
11779
|
tmpFile
|
|
11779
|
-
ensure
|
|
11780
|
-
tmpFile.close unless tmpFile.nil?
|
|
11781
11780
|
end
|
|
11782
11781
|
|
|
11783
11782
|
#
|
|
@@ -13266,7 +13265,7 @@ public
|
|
|
13266
13265
|
result_img = false
|
|
13267
13266
|
ensure
|
|
13268
13267
|
# remove temp files
|
|
13269
|
-
tmpFile.
|
|
13268
|
+
tmpFile.close(true) unless tmpFile.nil?
|
|
13270
13269
|
end
|
|
13271
13270
|
|
|
13272
13271
|
if result_img or ih != 0
|
|
@@ -14149,8 +14148,6 @@ protected
|
|
|
14149
14148
|
tmpFile = Tempfile.new(name + '_', @@k_path_cache)
|
|
14150
14149
|
tmpFile.binmode
|
|
14151
14150
|
tmpFile
|
|
14152
|
-
ensure
|
|
14153
|
-
tmpFile.close
|
|
14154
14151
|
end
|
|
14155
14152
|
|
|
14156
14153
|
#
|
data/lib/rbpdf/version.rb
CHANGED
data/test/rbpdf_http_test.rb
CHANGED
|
@@ -24,9 +24,11 @@ class RbpdfHttpTest < Test::Unit::TestCase
|
|
|
24
24
|
utf8_japanese_aiueo_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a"
|
|
25
25
|
|
|
26
26
|
images = [
|
|
27
|
-
|
|
28
|
-
'logo_rbpdf_8bit
|
|
29
|
-
'logo_rbpdf_8bit
|
|
27
|
+
# file_name, error_message
|
|
28
|
+
['logo_rbpdf_8bit.png', nil],
|
|
29
|
+
['logo_rbpdf_8bit .png', nil],
|
|
30
|
+
['logo_rbpdf_8bit+ .png', nil],
|
|
31
|
+
['logo_rbpdf_8bit_no_file.png', /^RBPDF error: Unable to get image width and height: /],
|
|
30
32
|
]
|
|
31
33
|
# no use
|
|
32
34
|
#if RUBY_VERSION >= '2.0' # Ruby 1.9.2/1.9.3
|
|
@@ -36,19 +38,26 @@ class RbpdfHttpTest < Test::Unit::TestCase
|
|
|
36
38
|
pdf = MYPDF.new
|
|
37
39
|
images.each_with_index {|image, i|
|
|
38
40
|
pdf.add_page
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
#image.force_encoding('ASCII-8BIT') if image.respond_to?(:force_encoding)
|
|
43
|
-
tmpFile = pdf.get_image_file('http://127.0.0.1:' + @port.to_s + '/' + image)
|
|
41
|
+
#image[0].force_encoding('ASCII-8BIT') if image[0].respond_to?(:force_encoding)
|
|
42
|
+
tmpFile = pdf.get_image_file('http://127.0.0.1:' + @port.to_s + '/' + image[0])
|
|
43
|
+
|
|
44
44
|
img_file = tmpFile.path
|
|
45
45
|
assert_not_equal "", img_file
|
|
46
46
|
unless File.exist?(img_file)
|
|
47
47
|
assert false, "file not found. :" + img_file
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
if image[1].nil?
|
|
51
|
+
result_img = pdf.image(img_file, 50, 0, 0, '', '', '', '', false, 300, '', true)
|
|
52
|
+
assert_equal i+1, result_img
|
|
53
|
+
else
|
|
54
|
+
err = assert_raise(RBPDFError) {
|
|
55
|
+
result_img = pdf.image(img_file, 50, 0, 0, '', '', '', '', false, 300, '', true)
|
|
56
|
+
}
|
|
57
|
+
assert_match image[1], err.message
|
|
58
|
+
assert_equal nil, result_img
|
|
59
|
+
end
|
|
60
|
+
|
|
52
61
|
no = pdf.get_num_pages
|
|
53
62
|
assert_equal i+1, no
|
|
54
63
|
|
|
@@ -31,8 +31,8 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
31
31
|
assert_equal data[:type], info[2] # Image Type
|
|
32
32
|
assert_equal 'height="89" width="240"', info[3]
|
|
33
33
|
assert_equal data[:mime], info['mime']
|
|
34
|
-
assert_equal data[:channels], info['channels'] if
|
|
35
|
-
assert_equal data[:bits], info['bits'] if
|
|
34
|
+
assert_equal data[:channels], info['channels'] if data[:channels] # RGB
|
|
35
|
+
assert_equal data[:bits], info['bits'] if data[:bits] # depth
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
images = {
|
|
@@ -95,7 +95,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
95
95
|
|
|
96
96
|
images = {
|
|
97
97
|
'PNG alpha' => {:file => 'png_test_alpha.png', :info => true},
|
|
98
|
-
'PNG alpha Error' => {:file => 'png_test_alpha.png', :info => false, :png_alpha_error => true},
|
|
98
|
+
#'PNG alpha Error' => {:file => 'png_test_alpha.png', :info => false, :png_alpha_error => true}, # no use
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
data(images)
|
|
@@ -105,7 +105,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
105
105
|
pdf = RBPDF.new
|
|
106
106
|
pdf.add_page
|
|
107
107
|
img_file = File.join(File.dirname(__FILE__), data[:file])
|
|
108
|
-
pdf.singleton_class.send(:define_method, :parsepng){|*args| {:cs => 'Indexed'}} if data[:png_alpha_error]
|
|
108
|
+
#pdf.singleton_class.send(:define_method, :parsepng){|*args| {:cs => 'Indexed'}} if data[:png_alpha_error] # no use
|
|
109
109
|
info = pdf.send(:ImagePngAlpha, img_file, 10, 10, 100, '', 'PNG', 'https://rubygems.org/gems/rbpdf')
|
|
110
110
|
assert_equal data[:info], info
|
|
111
111
|
end
|
|
@@ -113,7 +113,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
113
113
|
images = {
|
|
114
114
|
'PNG' => {:file => 'logo_rbpdf_8bit.png', :info => 1, :use_magick => false},
|
|
115
115
|
'PNG alpha' => {:file => 'png_test_alpha.png', :info => true, :use_magick => true},
|
|
116
|
-
'PNG alpha Error' => {:file => 'png_test_alpha.png', :info => 1, :use_magick => true, :png_alpha_error => true},
|
|
116
|
+
#'PNG alpha Error' => {:file => 'png_test_alpha.png', :info => 1, :use_magick => true, :png_alpha_error => true}, # no use
|
|
117
117
|
'GIF' => {:file => 'logo_rbpdf_8bit.gif', :info => 1, :use_magick => true},
|
|
118
118
|
'GIF alpha' => {:file => 'logo_rbpdf_8bit_alpha.gif', :info => 1, :use_magick => true},
|
|
119
119
|
'JPEG' => {:file => 'logo_rbpdf_8bit.jpg', :info => 1, :use_magick => true},
|
|
@@ -128,7 +128,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
128
128
|
pdf = RBPDF.new
|
|
129
129
|
pdf.add_page
|
|
130
130
|
img_file = File.join(File.dirname(__FILE__), data[:file])
|
|
131
|
-
pdf.singleton_class.send(:define_method, :parsepng){|*args| {:cs => 'Indexed'}} if data[:png_alpha_error]
|
|
131
|
+
#pdf.singleton_class.send(:define_method, :parsepng){|*args| {:cs => 'Indexed'}} if data[:png_alpha_error] # no use
|
|
132
132
|
info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
|
|
133
133
|
assert_equal data[:info], info
|
|
134
134
|
end
|
data/test/rbpdf_image_test.rb
CHANGED
|
@@ -96,7 +96,7 @@ class RbpdfTest < Test::Unit::TestCase
|
|
|
96
96
|
err = assert_raises(RBPDFError) {
|
|
97
97
|
pdf.image('foo.png')
|
|
98
98
|
}
|
|
99
|
-
assert_equal 'RBPDF error:
|
|
99
|
+
assert_equal 'RBPDF error: Image file is not found. : foo.png', err.message
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
test "Image basic test" do
|
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.5
|
|
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-06-
|
|
11
|
+
date: 2018-06-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: htmlentities
|
|
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
168
168
|
version: '0'
|
|
169
169
|
requirements: []
|
|
170
170
|
rubyforge_project:
|
|
171
|
-
rubygems_version: 2.
|
|
171
|
+
rubygems_version: 2.6.10
|
|
172
172
|
signing_key:
|
|
173
173
|
specification_version: 4
|
|
174
174
|
summary: RBPDF via TCPDF.
|
|
@@ -211,4 +211,3 @@ test_files:
|
|
|
211
211
|
- test/rbpdf_viewerpreferences_test.rb
|
|
212
212
|
- test/rbpdf_write_test.rb
|
|
213
213
|
- test/test_helper.rb
|
|
214
|
-
has_rdoc:
|