end
end
- class IFPDF < FPDF
- include Redmine::I18n
- attr_accessor :footer_date
-
- def initialize(lang)
- super()
- if RUBY_VERSION < '1.9'
- @ic = Iconv.new(l(:general_pdf_encoding), 'UTF-8')
- end
- set_language_if_valid lang
- case l(:general_pdf_encoding).upcase
- when 'CP949'
- extend(PDF_Korean)
- AddUHCFont()
- @font_for_content = 'UHC'
- @font_for_footer = 'UHC'
- when 'CP932'
- extend(PDF_Japanese)
- AddSJISFont()
- @font_for_content = 'SJIS'
- @font_for_footer = 'SJIS'
- when 'GB18030'
- extend(PDF_Chinese)
- AddGBFont()
- @font_for_content = 'GB'
- @font_for_footer = 'GB'
- when 'BIG5'
- extend(PDF_Chinese)
- AddBig5Font()
- @font_for_content = 'Big5'
- @font_for_footer = 'Big5'
- else
- @font_for_content = 'Arial'
- @font_for_footer = 'Helvetica'
- end
- SetCreator(Redmine::Info.app_name)
- SetFont(@font_for_content)
- end
-
- def SetFontStyle(style, size)
- SetFont(@font_for_content, style, size)
- end
-
- def SetTitle(txt)
- txt = begin
- utf16txt = Iconv.conv('UTF-16BE', 'UTF-8', txt)
- hextxt = "<FEFF" # FEFF is BOM
- hextxt << utf16txt.unpack("C*").map {|x| sprintf("%02X",x) }.join
- hextxt << ">"
- rescue
- txt
- end || ''
- super(txt)
- end
-
- def textstring(s)
- # Format a text string
- if s =~ /^</ # This means the string is hex-dumped.
- return s
- else
- return '('+escape(s)+')'
- end
- end
-
- def fix_text_encoding(txt)
- RDMPdfEncoding::rdm_pdf_iconv(@ic, txt)
- end
-
- def RDMCell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
- Cell(w,h,fix_text_encoding(txt),border,ln,align,fill,link)
- end
-
- def RDMMultiCell(w,h=0,txt='',border=0,align='',fill=0)
- MultiCell(w,h,fix_text_encoding(txt),border,align,fill)
- end
-
- def Footer
- SetFont(@font_for_footer, 'I', 8)
- SetY(-15)
- SetX(15)
- RDMCell(0, 5, @footer_date, 0, 0, 'L')
- SetY(-15)
- SetX(-30)
- RDMCell(0, 5, PageNo().to_s + '/{nb}', 0, 0, 'C')
- end
- alias alias_nb_pages AliasNbPages
- end
-
# Returns a PDF string of a list of issues
def issues_to_pdf(issues, project, query)
pdf = ITCPDF.new(current_language)