examples/extract_images.rb in pdf-reader-1.1.1 vs examples/extract_images.rb in pdf-reader-1.2.0

- old
+ new

@@ -84,18 +84,19 @@ tag_count = 10 header = [ 73, 73, 42, 8, tag_count ].pack("ccsIs") tiff = header.dup tiff << short_tag.call( 256, 1, w ) # image width tiff << short_tag.call( 257, 1, h ) # image height - tiff << long_tag.call( 258, 4, (header.size + (tag_count*12))) # bits per pixel + tiff << long_tag.call( 258, 4, (header.size + (tag_count*12) + 4)) # bits per pixel tiff << short_tag.call( 259, 1, 1 ) # compression tiff << short_tag.call( 262, 1, 5 ) # colorspace - separation - tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 16) ) # data offset + tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 20) ) # data offset tiff << short_tag.call( 277, 1, 4 ) # samples per pixel tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size tiff << short_tag.call( 284, 1, 1 ) # planer config tiff << long_tag.call( 332, 1, 1) # inkset - CMYK + tiff << [0].pack("I") # next IFD pointer tiff << [bpc, bpc, bpc, bpc].pack("IIII") tiff << stream.unfiltered_data File.open(filename, "wb") { |file| file.write tiff } end @@ -117,14 +118,16 @@ tiff << short_tag.call( 256, 1, w ) # image width tiff << short_tag.call( 257, 1, h ) # image height tiff << short_tag.call( 258, 1, 8 ) # bits per pixel tiff << short_tag.call( 259, 1, 1 ) # compression tiff << short_tag.call( 262, 1, 1 ) # colorspace - grayscale - tiff << long_tag.call( 273, 1, (10 + (tag_count*12)) ) # data offset + tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 4) ) # data offset tiff << short_tag.call( 277, 1, 1 ) # samples per pixel tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size tiff << short_tag.call( 284, 1, 1 ) # planer config + tiff << [0].pack("I") # next IFD pointer + p stream.unfiltered_data.size tiff << stream.unfiltered_data File.open(filename, "wb") { |file| file.write tiff } end def save_rgb(filename) @@ -142,16 +145,17 @@ tag_count = 8 header = [ 73, 73, 42, 8, tag_count ].pack("ccsIs") tiff = header.dup tiff << short_tag.call( 256, 1, w ) # image width tiff << short_tag.call( 257, 1, h ) # image height - tiff << long_tag.call( 258, 3, (header.size + (tag_count*12))) # bits per pixel + tiff << long_tag.call( 258, 3, (header.size + (tag_count*12) + 4)) # bits per pixel tiff << short_tag.call( 259, 1, 1 ) # compression tiff << short_tag.call( 262, 1, 2 ) # colorspace - RGB - tiff << long_tag.call( 273, 1, (header.size + (tag_count*12) + 12) ) # data offset + tiff << long_tag.call( 273, 1, (header.size + (tag_count*12) + 16) ) # data offset tiff << short_tag.call( 277, 1, 3 ) # samples per pixel tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size + tiff << [0].pack("I") # next IFD pointer tiff << [bpc, bpc, bpc].pack("III") tiff << stream.unfiltered_data File.open(filename, "wb") { |file| file.write tiff } end end @@ -207,11 +211,12 @@ # the compression type; 273 is the offset of the image data. tiff = [ 73, 73, 42, 8, 5 ].pack("ccsIs") \ + short_tag.call( 256, cols ) \ + short_tag.call( 257, h ) \ + short_tag.call( 259, 4 ) \ - + long_tag.call( 273, (10 + (5*12)) ) \ + + long_tag.call( 273, (10 + (5*12) + 4) ) \ + long_tag.call( 279, len) \ + + [0].pack("I") \ + stream.data File.open(filename, "wb") { |file| file.write tiff } end end end