File handling cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9973 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
0dbe234226
commit
823ac010c5
|
@ -57,12 +57,7 @@ module RFPDF
|
|||
end
|
||||
|
||||
out['bits'] = image.channel_depth
|
||||
File.open( TCPDF.k_path_cache + File::basename(filename), 'w'){|f|
|
||||
f.binmode
|
||||
f.print image.to_blob
|
||||
f.close
|
||||
}
|
||||
|
||||
|
||||
out
|
||||
end
|
||||
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
#
|
||||
#============================================================+
|
||||
|
||||
require 'tempfile'
|
||||
require 'core/rmagick'
|
||||
|
||||
#
|
||||
# TCPDF Class.
|
||||
# @package com.tecnick.tcpdf
|
||||
|
@ -86,10 +89,10 @@ class TCPDF
|
|||
@@k_small_ratio = 2/3.0
|
||||
|
||||
cattr_accessor :k_path_cache
|
||||
@@k_path_cache = Rails.root.join('tmp').to_s
|
||||
@@k_path_cache = Rails.root.join('tmp')
|
||||
|
||||
cattr_accessor :k_path_url_cache
|
||||
@@k_path_url_cache = Rails.root.join('tmp').to_s
|
||||
@@k_path_url_cache = Rails.root.join('tmp')
|
||||
|
||||
cattr_accessor :decoder
|
||||
|
||||
|
@ -2060,16 +2063,12 @@ class TCPDF
|
|||
type.downcase!
|
||||
if (type == 'jpg' or type == 'jpeg')
|
||||
info=parsejpg(file);
|
||||
elsif (type == 'png' or type == 'gif')
|
||||
img = Magick::ImageList.new(file)
|
||||
img.format = "PNG" # convert to PNG from gif
|
||||
img.opacity = 0 # PNG alpha channel delete
|
||||
open( @@k_path_cache + File::basename(file), 'w') do |f|
|
||||
f.binmode
|
||||
f.print img.to_blob
|
||||
end
|
||||
info=parsepng( @@k_path_cache + File::basename(file));
|
||||
File.delete( @@k_path_cache + File::basename(file))
|
||||
elsif (type == 'png')
|
||||
info=parsepng(file);
|
||||
elsif (type == 'gif')
|
||||
tmpFile = imageToPNG(file);
|
||||
info=parsepng(tmpFile.path);
|
||||
tmpFile.delete
|
||||
else
|
||||
#Allow for additional formats
|
||||
mtd='parse' + type;
|
||||
|
@ -2892,14 +2891,29 @@ class TCPDF
|
|||
#Read whole file
|
||||
data='';
|
||||
|
||||
open( @@k_path_cache + File::basename(file),'rb') do |f|
|
||||
open(file,'rb') do |f|
|
||||
data<<f.read();
|
||||
end
|
||||
File.delete( @@k_path_cache + File::basename(file))
|
||||
|
||||
return {'w' => a[0],'h' => a[1],'cs' => colspace,'bpc' => bpc,'f'=>'DCTDecode','data' => data}
|
||||
end
|
||||
|
||||
def imageToPNG(file)
|
||||
return unless Object.const_defined?(:Magick)
|
||||
|
||||
img = Magick::ImageList.new(file)
|
||||
img.format = 'PNG' # convert to PNG from gif
|
||||
img.opacity = 0 # PNG alpha channel delete
|
||||
|
||||
#use a temporary file....
|
||||
tmpFile = Tempfile.new(['', '_' + File::basename(file) + '.png'], @@k_path_cache);
|
||||
tmpFile.binmode
|
||||
tmpFile.print img.to_blob
|
||||
tmpFile
|
||||
ensure
|
||||
tmpFile.close
|
||||
end
|
||||
|
||||
#
|
||||
# Extract info from a PNG file
|
||||
# @access protected
|
||||
|
@ -3937,9 +3951,6 @@ class TCPDF
|
|||
rescue => err
|
||||
logger.error "pdf: Image: error: #{err.message}"
|
||||
Write(@lasth, attrs['src'], '', fill);
|
||||
if File.file?( @@k_path_cache + File::basename(file))
|
||||
File.delete( @@k_path_cache + File::basename(file))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ require 'tcpdf'
|
|||
require 'fpdf/chinese'
|
||||
require 'fpdf/japanese'
|
||||
require 'fpdf/korean'
|
||||
require 'core/rmagick'
|
||||
|
||||
module Redmine
|
||||
module Export
|
||||
|
@ -36,7 +35,7 @@ module Redmine
|
|||
attr_accessor :footer_date
|
||||
|
||||
def initialize(lang)
|
||||
@@k_path_cache = Rails.root.join('tmp', 'pdf').to_s
|
||||
@@k_path_cache = Rails.root.join('tmp', 'pdf')
|
||||
FileUtils.mkdir_p @@k_path_cache unless File::exist?(@@k_path_cache)
|
||||
set_language_if_valid lang
|
||||
pdf_encoding = l(:general_pdf_encoding).upcase
|
||||
|
|
Loading…
Reference in New Issue