rbpdf 1.18.0 → 1.18.1

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 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