--- a/lib/redmine/helpers/gantt.rb 2011-03-08 04:44:40.000000000 +0900 +++ b/lib/redmine/helpers/gantt.rb 2011-03-29 22:16:29.000000000 +0900 @@ -510,14 +510,18 @@ end if Object.const_defined?(:Magick) def to_pdf - pdf = ::Redmine::Export::PDF::IFPDF.new(current_language) + if l(:general_pdf_encoding).upcase == 'UTF-8' + pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language) + else + pdf = ::Redmine::Export::PDF::IFPDF.new(current_language) + end pdf.SetTitle("#{l(:label_gantt)} #{project}") - pdf.AliasNbPages + pdf.alias_nb_pages pdf.footer_date = format_date(Date.today) pdf.AddPage("L") pdf.SetFontStyle('B',12) pdf.SetX(15) - pdf.Cell(PDF::LeftPaneWidth, 20, project.to_s) + pdf.UTF8Cell(PDF::LeftPaneWidth, 20, project.to_s) pdf.Ln pdf.SetFontStyle('B',9) @@ -552,7 +556,7 @@ width = ((month_f >> 1) - month_f) * zoom pdf.SetY(y_start) pdf.SetX(left) - pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") + pdf.UTF8Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") left = left + width month_f = month_f >> 1 end @@ -570,14 +574,14 @@ width = (7 - self.date_from.cwday + 1) * zoom-1 pdf.SetY(y_start + header_heigth) pdf.SetX(left) - pdf.Cell(width + 1, height, "", "LTR") + pdf.UTF8Cell(width + 1, height, "", "LTR") left = left + width+1 end while week_f <= self.date_to width = (week_f + 6 <= self.date_to) ? 7 * zoom : (self.date_to - week_f + 1) * zoom pdf.SetY(y_start + header_heigth) pdf.SetX(left) - pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") + pdf.UTF8Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") left = left + width week_f = week_f+7 end @@ -593,7 +597,7 @@ width = zoom pdf.SetY(y_start + 2 * header_heigth) pdf.SetX(left) - pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C") + pdf.UTF8Cell(width, height, day_name(wday).first, "LTR", 0, "C") left = left + width wday = wday + 1 wday = 1 if wday > 7 @@ -602,7 +606,7 @@ pdf.SetY(y_start) pdf.SetX(15) - pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1) + pdf.UTF8Cell(subject_width+g_width-15, headers_heigth, "", 1) # Tasks top = headers_heigth + y_start @@ -722,11 +726,11 @@ params[:pdf].SetX(15) char_limit = PDF::MaxCharactorsForSubject - params[:indent] - params[:pdf].Cell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") + params[:pdf].UTF8Cell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") params[:pdf].SetY(params[:top]) params[:pdf].SetX(params[:subject_width]) - params[:pdf].Cell(params[:g_width], 5, "", "LR") + params[:pdf].UTF8Cell(params[:g_width], 5, "", "LR") end def image_subject(params, subject, options={}) @@ -783,19 +787,19 @@ params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(200,200,200) - params[:pdf].Cell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].UTF8Cell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) if coords[:bar_late_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(255,100,100) - params[:pdf].Cell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].UTF8Cell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) end if coords[:bar_progress_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(90,200,90) - params[:pdf].Cell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].UTF8Cell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) end end # Renders the markers @@ -804,19 +808,19 @@ params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:start] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].UTF8Cell(2, 2, "", 0, 0, "", 1) end if coords[:end] params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:end] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].UTF8Cell(2, 2, "", 0, 0, "", 1) end end # Renders the label on the right if options[:label] params[:pdf].SetX(params[:subject_width] + (coords[:bar_end] || 0) + 5) - params[:pdf].Cell(30, 2, options[:label]) + params[:pdf].UTF8Cell(30, 2, options[:label]) end end