rbpdf 1.18.0 → 1.18.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccebb276b977433e745a1d90ff80ea4f1fce31b3
4
- data.tar.gz: bda1035faa902f9c7c5c60001593abb1c6af5bba
3
+ metadata.gz: c1933519745cfcf8ecb037bbb90abd2756ce438c
4
+ data.tar.gz: 23af83ebf1ab6d77a7f64e62f5225cda74d418ed
5
5
  SHA512:
6
- metadata.gz: 7a209d6d416f3d2030f1e321e959e559ee4485f5348c05133d0373c1b8ff4c8288e3f4d31f9a3bc53491df5244b92d5e50d6d6171749ea26c8dfcf8f85ea845b
7
- data.tar.gz: 5295a9118dbda7b36f1d2f442bb8a6f2f3b365b1bf08088c5cbed725b920200dd9d0e15fea1ee1139f7c3d82cf8138d00cdc6f19da24ee60223ea9be66d81ccd
6
+ metadata.gz: f4da9bb136d4fb89cecd8bb9ac0d3c9c617ffe0dc2110e3883b09fb43b36121cae886f2c1a14826042afb5d0997b09fdbce90a6bc06f8c73602de8b8587417a9
7
+ data.tar.gz: ffaf67be7f514e66fdce7ac8ac7730627709296c00624747c27b0f0141776029faeadc581a50216779efe8ea798894370e991c17ededbd90ba43556921db52af
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 1.18.1 2014-09-15
2
+ - ImagePngAlpha function fixed for the error case where an alpha channel cannot be deleted.
3
+ - getimagesize function fixed for MAC OS rmagick.
4
+ - getimagesize function fixed for grayscale JPEG Image.
5
+ - 16-bit PNG with alpha channel image support improved. (use RMagick liblary)
6
+
1
7
  1.18.0 2014-08-16
2
8
  - rfpdf product name and TCPDF class name changed to RBPDF.
3
9
  - ImagePngAlpha function added.
data/lib/core/rmagick.rb CHANGED
@@ -38,6 +38,9 @@ module Rbpdf
38
38
  return false if (f.read(4)!='IHDR')
39
39
  out[0] = freadint(f)
40
40
  out[1] = freadint(f)
41
+ out[2] = 'PNG'
42
+ out[3] = "height=\"#{out[1]}\" width=\"#{out[0]}\""
43
+ out['mime'] = 'image/png'
41
44
  end
42
45
 
43
46
  return out
@@ -69,12 +72,17 @@ module Rbpdf
69
72
 
70
73
  # This needs work to cover more situations
71
74
  # I can't see how to just list the number of channels with ImageMagick / rmagick
72
- if image.colorspace.to_s == "CMYKColorspace"
73
- out['channels'] = 4
74
- elsif (image.colorspace.to_s == "RGBColorspace") and (image.image_type.to_s != "GrayscaleType")
75
- out['channels'] = 3
76
- else
77
- out['channels'] = 0
75
+ case image.colorspace.to_s.downcase
76
+ when 'cmykcolorspace'
77
+ out['channels'] = 4
78
+ when 'rgbcolorspace', 'srgbcolorspace' # Mac OS X : sRGBColorspace
79
+ if image.image_type.to_s == 'GrayscaleType' and image.class_type.to_s == 'PseudoClass'
80
+ out['channels'] = 0
81
+ else
82
+ out['channels'] = 3
83
+ end
84
+ when 'graycolorspace'
85
+ out['channels'] = 0
78
86
  end
79
87
 
80
88
  out['bits'] = image.channel_depth
data/lib/rbpdf.rb CHANGED
@@ -4857,8 +4857,10 @@ class RBPDF
4857
4857
  info=parsepng(file);
4858
4858
  elsif (type == 'gif')
4859
4859
  tmpFile = imageToPNG(file)
4860
- info=parsepng(tmpFile.path)
4861
- tmpFile.delete
4860
+ if tmpFile != false
4861
+ info=parsepng(tmpFile.path)
4862
+ tmpFile.delete
4863
+ end
4862
4864
  else
4863
4865
  #Allow for additional formats
4864
4866
  mtd='parse' + type;
@@ -4867,8 +4869,11 @@ class RBPDF
4867
4869
  end
4868
4870
  info=send(mtd, file);
4869
4871
  end
4870
- if info == 'pngalpha' and Object.const_defined?(:Magick)
4871
- return ImagePngAlpha(file, x, y, w, h, 'PNG', link, align, resize, dpi, palign)
4872
+ if info == 'pngalpha' and ismask == false and Object.const_defined?(:Magick)
4873
+ info = ImagePngAlpha(file, x, y, w, h, 'PNG', link, align, resize, dpi, palign)
4874
+ if false != info
4875
+ return
4876
+ end
4872
4877
  end
4873
4878
  end
4874
4879
  if !info
@@ -5017,7 +5022,12 @@ class RBPDF
5017
5022
  def imageToPNG(file)
5018
5023
  img = Magick::ImageList.new(file)
5019
5024
  img.format = 'PNG' # convert to PNG from gif
5020
- img.opacity = 0 # PNG alpha channel delete
5025
+ if img.alpha?
5026
+ img.opacity = 0 # PNG alpha channel delete
5027
+ if img.alpha?
5028
+ return false
5029
+ end
5030
+ end
5021
5031
 
5022
5032
  #use a temporary file....
5023
5033
  tmpFile = Tempfile.new(['', '_' + File::basename(file) + '.png'], @@k_path_cache);
@@ -5063,13 +5073,6 @@ class RBPDF
5063
5073
  w=freadint(f);
5064
5074
  h=freadint(f);
5065
5075
  bpc=f.read(1).unpack('C')[0]
5066
- if (bpc>8)
5067
- if Object.const_defined?(:Magick)
5068
- return false
5069
- else
5070
- Error('No RMagick: 16-bit depth not supported: ' + file)
5071
- end
5072
- end
5073
5076
 
5074
5077
  ct=f.read(1).unpack('C')[0]
5075
5078
  if (ct==0)
@@ -5094,6 +5097,15 @@ class RBPDF
5094
5097
  # Error('Unknown filter method: ' + file)
5095
5098
  return false
5096
5099
  end
5100
+
5101
+ if (bpc>8)
5102
+ if Object.const_defined?(:Magick)
5103
+ return false
5104
+ else
5105
+ Error('No RMagick: 16-bit depth not supported: ' + file)
5106
+ end
5107
+ end
5108
+
5097
5109
  if (f.read(1).unpack('C')[0]!=0)
5098
5110
  # Error('Interlacing not supported: ' + file)
5099
5111
  return false
@@ -5121,7 +5133,7 @@ class RBPDF
5121
5133
  else
5122
5134
  pos=t.include?(0.chr);
5123
5135
  if (pos!=false)
5124
- trns = [pos]
5136
+ trns = ['1']
5125
5137
  end
5126
5138
  end
5127
5139
  f.read(4);
@@ -5189,8 +5201,12 @@ class RBPDF
5189
5201
  # [@see] Image()
5190
5202
  #
5191
5203
  def ImagePngAlpha(file, x='', y='', w=0, h=0, type='', link='', align='', resize=false, dpi=300, palign='')
5192
- tempfile_alpha = image_alpha_mask(file)
5193
5204
  tempfile_plain = imageToPNG(file)
5205
+ if tempfile_plain == false
5206
+ return false
5207
+ end
5208
+
5209
+ tempfile_alpha = image_alpha_mask(file)
5194
5210
 
5195
5211
  # embed mask image
5196
5212
  imgmask = Image(tempfile_alpha.path, x, y, w, h, 'PNG', '', '', resize, dpi, '', true, false)
@@ -6855,7 +6871,7 @@ protected
6855
6871
  if (!info['trns'].nil? and info['trns'].kind_of?(Array))
6856
6872
  trns='';
6857
6873
  count_info = info['trns'].length
6858
- 0.upto(count_info) do |i|
6874
+ count_info.times do |i|
6859
6875
  trns << info['trns'][i] + ' ' + info['trns'][i] + ' ';
6860
6876
  end
6861
6877
  out << ' /Mask [' + trns + ']'
data/lib/rbpdf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rbpdf
2
- VERSION = "1.18.0"
2
+ VERSION = "1.18.1"
3
3
  end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,260 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+
5
+ class MYPDF < RBPDF
6
+ def imageToPNG(file)
7
+ super
8
+ end
9
+ def parsepng(file)
10
+ super
11
+ end
12
+ end
13
+
14
+ test "image getimagesize PNG test" do
15
+ pdf = RBPDF.new
16
+ pdf.add_page
17
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.png')
18
+
19
+ info = pdf.getimagesize(img_file)
20
+ pixw = info[0]
21
+ pixh = info[1]
22
+ fileinfo = info[2]
23
+ assert_equal info[0], 240 # width
24
+ assert_equal info[1], 89 # height
25
+ assert_equal info[2], 'PNG' # Image Type
26
+ assert_equal info[3], 'height="89" width="240"'
27
+ assert_equal info['mime'], 'image/png'
28
+ end
29
+
30
+ test "image getimagesize GIF test" do
31
+ return unless Object.const_defined?(:Magick)
32
+
33
+ pdf = RBPDF.new
34
+ pdf.add_page
35
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.gif')
36
+
37
+ info = pdf.getimagesize(img_file)
38
+ pixw = info[0]
39
+ pixh = info[1]
40
+ fileinfo = info[2]
41
+ assert_equal info[0], 240 # width
42
+ assert_equal info[1], 89 # height
43
+ assert_equal info[2], 'GIF' # Image Type
44
+ assert_equal info[3], 'height="89" width="240"'
45
+ assert_equal info['mime'], 'image/gif'
46
+ assert_equal info['channels'], 3 # RGB
47
+ assert_equal info['bits'], 8 # depth
48
+ end
49
+
50
+ test "image getimagesize GIF alpha test" do
51
+ return unless Object.const_defined?(:Magick)
52
+
53
+ pdf = RBPDF.new
54
+ pdf.add_page
55
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit_alpha.gif')
56
+
57
+ info = pdf.getimagesize(img_file)
58
+ pixw = info[0]
59
+ pixh = info[1]
60
+ fileinfo = info[2]
61
+ assert_equal info[0], 240 # width
62
+ assert_equal info[1], 89 # height
63
+ assert_equal info[2], 'GIF' # Image Type
64
+ assert_equal info[3], 'height="89" width="240"'
65
+ assert_equal info['mime'], 'image/gif'
66
+ assert_equal info['channels'], 3 # RGB
67
+ assert_equal info['bits'], 8 # depth
68
+ end
69
+
70
+ test "image getimagesize JPEG RGB test" do
71
+ return unless Object.const_defined?(:Magick)
72
+
73
+ pdf = RBPDF.new
74
+ pdf.add_page
75
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.jpg')
76
+
77
+ info = pdf.getimagesize(img_file)
78
+ pixw = info[0]
79
+ pixh = info[1]
80
+ fileinfo = info[2]
81
+ assert_equal info[0], 240 # width
82
+ assert_equal info[1], 89 # height
83
+ assert_equal info[2], 'JPEG' # Image Type
84
+ assert_equal info[3], 'height="89" width="240"'
85
+ assert_equal info['mime'], 'image/jpeg'
86
+ assert_equal info['channels'], 3 # RGB
87
+ assert_equal info['bits'], 8 # depth
88
+ end
89
+
90
+ test "image getimagesize JPEG monotone RGB test" do
91
+ return unless Object.const_defined?(:Magick)
92
+
93
+ pdf = RBPDF.new
94
+ pdf.add_page
95
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_mono_rgb.jpg')
96
+
97
+ info = pdf.getimagesize(img_file)
98
+ pixw = info[0]
99
+ pixh = info[1]
100
+ fileinfo = info[2]
101
+ assert_equal info[0], 240 # width
102
+ assert_equal info[1], 89 # height
103
+ assert_equal info[2], 'JPEG' # Image Type
104
+ assert_equal info[3], 'height="89" width="240"'
105
+ assert_equal info['mime'], 'image/jpeg'
106
+ assert_equal info['channels'], 3 # RGB
107
+ assert_equal info['bits'], 8 # depth
108
+ end
109
+
110
+ test "image getimagesize JPEG monotone Gray test" do
111
+ return unless Object.const_defined?(:Magick)
112
+
113
+ pdf = RBPDF.new
114
+ pdf.add_page
115
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_mono_gray.jpg')
116
+
117
+ info = pdf.getimagesize(img_file)
118
+ pixw = info[0]
119
+ pixh = info[1]
120
+ fileinfo = info[2]
121
+ assert_equal info[0], 240 # width
122
+ assert_equal info[1], 89 # height
123
+ assert_equal info[2], 'JPEG' # Image Type
124
+ assert_equal info[3], 'height="89" width="240"'
125
+ assert_equal info['mime'], 'image/jpeg'
126
+ assert_equal info['channels'], 0 # Gray
127
+ assert_equal info['bits'], 8 # depth
128
+ end
129
+
130
+ test "image getimagesize PNG monotone test" do
131
+ pdf = RBPDF.new
132
+ pdf.add_page
133
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_mono_rgb.png')
134
+
135
+ info = pdf.getimagesize(img_file)
136
+ pixw = info[0]
137
+ pixh = info[1]
138
+ fileinfo = info[2]
139
+ assert_equal info[0], 240 # width
140
+ assert_equal info[1], 89 # height
141
+ assert_equal info[2], 'PNG' # Image Type
142
+ assert_equal info[3], 'height="89" width="240"'
143
+ assert_equal info['mime'], 'image/png'
144
+ end
145
+
146
+ test "imageToPNG delete GIF test" do
147
+ pdf = MYPDF.new
148
+ pdf.add_page
149
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.gif')
150
+
151
+ if Object.const_defined?(:Magick)
152
+ tempfile = pdf.imageToPNG(img_file)
153
+ assert_not_equal tempfile, false
154
+
155
+ info = pdf.parsepng(tempfile.path)
156
+
157
+ assert_not_equal info, 'pngalpha'
158
+ assert_equal info['bpc'], 8
159
+ assert_equal info['cs'], 'Indexed'
160
+ end
161
+ end
162
+
163
+ test "imageToPNG delete GIF alpha channel test" do
164
+ pdf = MYPDF.new
165
+ pdf.add_page
166
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit_alpha.gif')
167
+
168
+ if Object.const_defined?(:Magick)
169
+ tempfile = pdf.imageToPNG(img_file)
170
+ assert_not_equal tempfile, false
171
+
172
+ info = pdf.parsepng(tempfile.path)
173
+
174
+ assert_not_equal info, 'pngalpha'
175
+ assert_equal info['bpc'], 8
176
+ assert_equal info['cs'], 'Indexed'
177
+ end
178
+ end
179
+
180
+ test "imageToPNG delete PNG alpha channel test" do
181
+ pdf = MYPDF.new
182
+ pdf.add_page
183
+ img_file = File.join(File.dirname(__FILE__), 'png_test_alpha.png')
184
+
185
+ if Object.const_defined?(:Magick)
186
+ tempfile = pdf.imageToPNG(img_file)
187
+ assert_not_equal tempfile, false
188
+
189
+ info = pdf.parsepng(tempfile.path)
190
+
191
+ assert_not_equal info, 'pngalpha'
192
+ assert_equal info['bpc'], 8
193
+ assert_equal info['cs'], 'DeviceRGB'
194
+ end
195
+ end
196
+
197
+ test "image_alpha_mask DeviceGray test" do
198
+ pdf = MYPDF.new
199
+ pdf.add_page
200
+ img_file = File.join(File.dirname(__FILE__), 'png_test_alpha.png')
201
+
202
+ if Object.const_defined?(:Magick)
203
+ tempfile = pdf.image_alpha_mask(img_file)
204
+
205
+ info = pdf.parsepng(tempfile.path)
206
+
207
+ assert_not_equal info, 'pngalpha'
208
+ assert_equal info['bpc'], 8
209
+ assert_equal info['cs'], 'DeviceGray'
210
+ end
211
+ end
212
+
213
+ test "Image PNG test" do
214
+ pdf = RBPDF.new
215
+ pdf.add_page
216
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.png')
217
+ info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
218
+ assert_equal info, 1
219
+ end
220
+
221
+ test "Image PNG alpha test" do
222
+ return unless Object.const_defined?(:Magick)
223
+
224
+ pdf = RBPDF.new
225
+ pdf.add_page
226
+ img_file = File.join(File.dirname(__FILE__), 'png_test_alpha.png')
227
+ info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
228
+ assert_equal info, nil
229
+ end
230
+
231
+ test "Image GIF test" do
232
+ return unless Object.const_defined?(:Magick)
233
+
234
+ pdf = RBPDF.new
235
+ pdf.add_page
236
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.gif')
237
+ info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
238
+ assert_equal info, 1
239
+ end
240
+
241
+ test "Image GIF alpha test" do
242
+ return unless Object.const_defined?(:Magick)
243
+
244
+ pdf = RBPDF.new
245
+ pdf.add_page
246
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit_alpha.gif')
247
+ info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
248
+ assert_equal info, 1
249
+ end
250
+
251
+ test "Image JPEG test" do
252
+ return unless Object.const_defined?(:Magick)
253
+
254
+ pdf = RBPDF.new
255
+ pdf.add_page
256
+ img_file = File.join(File.dirname(__FILE__), 'logo_rbpdf_8bit.jpg')
257
+ info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
258
+ assert_equal info, 1
259
+ end
260
+ 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.18.0
4
+ version: 1.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - NAITOH Jun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-17 00:00:00.000000000 Z
11
+ date: 2014-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -143,6 +143,17 @@ files:
143
143
  - lib/unicode_data.rb
144
144
  - logo_example.png
145
145
  - rbpdf.gemspec
146
+ - test/logo_rbpdf_8bit.gif
147
+ - test/logo_rbpdf_8bit.jpg
148
+ - test/logo_rbpdf_8bit.png
149
+ - test/logo_rbpdf_8bit_alpha.gif
150
+ - test/logo_rbpdf_mono_gray.jpg
151
+ - test/logo_rbpdf_mono_gray.png
152
+ - test/logo_rbpdf_mono_rgb.jpg
153
+ - test/logo_rbpdf_mono_rgb.png
154
+ - test/png_test_alpha.png
155
+ - test/png_test_msk_alpha.png
156
+ - test/png_test_non_alpha.png
146
157
  - test/rbpdf_bidi_test.rb
147
158
  - test/rbpdf_bookmark_test.rb
148
159
  - test/rbpdf_cell_test.rb
@@ -156,6 +167,7 @@ files:
156
167
  - test/rbpdf_func_test.rb
157
168
  - test/rbpdf_html_test.rb
158
169
  - test/rbpdf_htmlcell_test.rb
170
+ - test/rbpdf_image_rmagick_test.rb
159
171
  - test/rbpdf_image_test.rb
160
172
  - test/rbpdf_test.rb
161
173
  - test/rbpdf_transaction_test.rb
@@ -195,6 +207,17 @@ signing_key:
195
207
  specification_version: 4
196
208
  summary: RBPDF via TCPDF.
197
209
  test_files:
210
+ - test/logo_rbpdf_8bit.gif
211
+ - test/logo_rbpdf_8bit.jpg
212
+ - test/logo_rbpdf_8bit.png
213
+ - test/logo_rbpdf_8bit_alpha.gif
214
+ - test/logo_rbpdf_mono_gray.jpg
215
+ - test/logo_rbpdf_mono_gray.png
216
+ - test/logo_rbpdf_mono_rgb.jpg
217
+ - test/logo_rbpdf_mono_rgb.png
218
+ - test/png_test_alpha.png
219
+ - test/png_test_msk_alpha.png
220
+ - test/png_test_non_alpha.png
198
221
  - test/rbpdf_bidi_test.rb
199
222
  - test/rbpdf_bookmark_test.rb
200
223
  - test/rbpdf_cell_test.rb
@@ -208,6 +231,7 @@ test_files:
208
231
  - test/rbpdf_func_test.rb
209
232
  - test/rbpdf_html_test.rb
210
233
  - test/rbpdf_htmlcell_test.rb
234
+ - test/rbpdf_image_rmagick_test.rb
211
235
  - test/rbpdf_image_test.rb
212
236
  - test/rbpdf_test.rb
213
237
  - test/rbpdf_transaction_test.rb