PDF: import CJK patches and all languages use TCPDF (#8312).
Contributed Jun NAITOH. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5720 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3b50809423
commit
29f6dd2a9e
|
@ -210,11 +210,7 @@ module Redmine
|
|||
|
||||
# Returns a PDF string of a list of issues
|
||||
def issues_to_pdf(issues, project, query)
|
||||
if l(:general_pdf_encoding).upcase != 'UTF-8'
|
||||
pdf = IFPDF.new(current_language)
|
||||
else
|
||||
pdf = ITCPDF.new(current_language)
|
||||
end
|
||||
pdf = ITCPDF.new(current_language)
|
||||
title = query.new_record? ? l(:label_issue_plural) : query.name
|
||||
title = "#{project} - #{title}" if project
|
||||
pdf.SetTitle(title)
|
||||
|
@ -358,11 +354,7 @@ module Redmine
|
|||
|
||||
# Returns a PDF string of a single issue
|
||||
def issue_to_pdf(issue)
|
||||
if l(:general_pdf_encoding).upcase != 'UTF-8'
|
||||
pdf = IFPDF.new(current_language)
|
||||
else
|
||||
pdf = ITCPDF.new(current_language)
|
||||
end
|
||||
pdf = ITCPDF.new(current_language)
|
||||
pdf.SetTitle("#{issue.project} - ##{issue.tracker} #{issue.id}")
|
||||
pdf.alias_nb_pages
|
||||
pdf.footer_date = format_date(Date.today)
|
||||
|
|
|
@ -507,11 +507,7 @@ module Redmine
|
|||
end if Object.const_defined?(:Magick)
|
||||
|
||||
def to_pdf
|
||||
if l(:general_pdf_encoding).upcase != 'UTF-8'
|
||||
pdf = ::Redmine::Export::PDF::IFPDF.new(current_language)
|
||||
else
|
||||
pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language)
|
||||
end
|
||||
pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language)
|
||||
pdf.SetTitle("#{l(:label_gantt)} #{project}")
|
||||
pdf.alias_nb_pages
|
||||
pdf.footer_date = format_date(Date.today)
|
||||
|
|
|
@ -116,7 +116,7 @@ module PDF_Chinese
|
|||
end
|
||||
|
||||
def GetStringWidth(s)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
return GetMBStringWidth(s)
|
||||
else
|
||||
return super(s)
|
||||
|
@ -126,7 +126,7 @@ module PDF_Chinese
|
|||
def GetMBStringWidth(s)
|
||||
#Multi-byte version of GetStringWidth()
|
||||
l=0
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
nb=s.length
|
||||
i=0
|
||||
while(i<nb)
|
||||
|
@ -139,11 +139,11 @@ module PDF_Chinese
|
|||
i+=2
|
||||
end
|
||||
end
|
||||
return l*@FontSize/1000
|
||||
return l*@font_size/1000
|
||||
end
|
||||
|
||||
def MultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
MBMultiCell(w,h,txt,border,align,fill)
|
||||
else
|
||||
super(w,h,txt,border,align,fill)
|
||||
|
@ -152,11 +152,11 @@ module PDF_Chinese
|
|||
|
||||
def MBMultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
#Multi-byte version of MultiCell()
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
if(w==0)
|
||||
w=@w-@rMargin-@x
|
||||
w=@w-@r_margin-@x
|
||||
end
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
if(nb>0 and s[nb-1]=="\n")
|
||||
|
@ -233,11 +233,11 @@ module PDF_Chinese
|
|||
b+='B'
|
||||
end
|
||||
Cell(w,h,s[j,i-j],b,2,align,fill)
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
end
|
||||
|
||||
def Write(h,txt,link='')
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
MBWrite(h,txt,link)
|
||||
else
|
||||
super(h,txt,link)
|
||||
|
@ -246,9 +246,9 @@ module PDF_Chinese
|
|||
|
||||
def MBWrite(h,txt,link)
|
||||
#Multi-byte version of Write()
|
||||
cw=@CurrentFont['cw']
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
cw=@current_font['cw']
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
sep=-1
|
||||
|
@ -269,9 +269,9 @@ module PDF_Chinese
|
|||
j=i
|
||||
l=0
|
||||
if(nl==1)
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
next
|
||||
|
@ -283,12 +283,12 @@ module PDF_Chinese
|
|||
if(l>wmax)
|
||||
#Automatic line break
|
||||
if(sep==-1 or i==j)
|
||||
if(@x>@lMargin)
|
||||
if(@x>@l_margin)
|
||||
#Move to next line
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
@y+=h
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
i+=1
|
||||
nl+=1
|
||||
next
|
||||
|
@ -305,9 +305,9 @@ module PDF_Chinese
|
|||
j=i
|
||||
l=0
|
||||
if(nl==1)
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
else
|
||||
|
@ -316,7 +316,7 @@ module PDF_Chinese
|
|||
end
|
||||
#Last chunk
|
||||
if(i!=j)
|
||||
Cell(l/1000*@FontSize,h,s[j,i-j],0,0,'',0,link)
|
||||
Cell(l/1000*@font_size,h,s[j,i-j],0,0,'',0,link)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -332,10 +332,10 @@ private
|
|||
end
|
||||
# mqr=get_magic_quotes_runtime()
|
||||
# set_magic_quotes_runtime(0)
|
||||
@FontFiles.each_pair do |file, info|
|
||||
@font_files.each_pair do |file, info|
|
||||
#Font file embedding
|
||||
newobj()
|
||||
@FontFiles[file]['n']=@n
|
||||
@font_files[file]['n']=@n
|
||||
if(defined('FPDF_FONTPATH'))
|
||||
file=FPDF_FONTPATH+file
|
||||
end
|
||||
|
@ -411,7 +411,7 @@ private
|
|||
end
|
||||
file=font['file']
|
||||
if(file)
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@FontFiles[file]['n']+' 0 R'
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@font_files[file]['n']+' 0 R'
|
||||
end
|
||||
out(s+'>>')
|
||||
out('endobj')
|
||||
|
|
|
@ -86,7 +86,7 @@ module PDF_Japanese
|
|||
end
|
||||
|
||||
def GetStringWidth(s)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
return GetSJISStringWidth(s)
|
||||
else
|
||||
return super(s)
|
||||
|
@ -96,7 +96,7 @@ module PDF_Japanese
|
|||
def GetSJISStringWidth(s)
|
||||
#SJIS version of GetStringWidth()
|
||||
l=0
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
nb=s.length
|
||||
i=0
|
||||
while(i<nb)
|
||||
|
@ -115,11 +115,11 @@ module PDF_Japanese
|
|||
i+=2
|
||||
end
|
||||
end
|
||||
return l*@FontSize/1000
|
||||
return l*@font_size/1000
|
||||
end
|
||||
|
||||
def MultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
SJISMultiCell(w,h,txt,border,align,fill)
|
||||
else
|
||||
super(w,h,txt,border,align,fill)
|
||||
|
@ -128,11 +128,11 @@ module PDF_Japanese
|
|||
|
||||
def SJISMultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
#Output text with automatic or explicit line breaks
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
if(w==0)
|
||||
w=@w-@rMargin-@x
|
||||
w=@w-@r_margin-@x
|
||||
end
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
if(nb>0 and s[nb-1]=="\n")
|
||||
|
@ -221,11 +221,11 @@ module PDF_Japanese
|
|||
b+='B'
|
||||
end
|
||||
Cell(w,h,s[j,i-j],b,2,align,fill)
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
end
|
||||
|
||||
def Write(h,txt,link='')
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
SJISWrite(h,txt,link)
|
||||
else
|
||||
super(h,txt,link)
|
||||
|
@ -234,9 +234,9 @@ module PDF_Japanese
|
|||
|
||||
def SJISWrite(h,txt,link)
|
||||
#SJIS version of Write()
|
||||
cw=@CurrentFont['cw']
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
cw=@current_font['cw']
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
sep=-1
|
||||
|
@ -257,9 +257,9 @@ module PDF_Japanese
|
|||
l=0
|
||||
if(nl==1)
|
||||
#Go to left margin
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
next
|
||||
|
@ -285,12 +285,12 @@ module PDF_Japanese
|
|||
if(l>wmax)
|
||||
#Automatic line break
|
||||
if(sep==-1 or i==j)
|
||||
if(@x>@lMargin)
|
||||
if(@x>@l_margin)
|
||||
#Move to next line
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
@y+=h
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
i+=n
|
||||
nl+=1
|
||||
next
|
||||
|
@ -307,9 +307,9 @@ module PDF_Japanese
|
|||
j=i
|
||||
l=0
|
||||
if(nl==1)
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
else
|
||||
|
@ -321,7 +321,7 @@ module PDF_Japanese
|
|||
end
|
||||
#Last chunk
|
||||
if(i!=j)
|
||||
Cell(l/1000*@FontSize,h,s[j,i-j],0,0,'',0,link)
|
||||
Cell(l/1000*@font_size,h,s[j,i-j],0,0,'',0,link)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -337,10 +337,10 @@ private
|
|||
end
|
||||
# mqr=get_magic_quotes_runtime()
|
||||
# set_magic_quotes_runtime(0)
|
||||
@FontFiles.each_pair do |file, info|
|
||||
@font_files.each_pair do |file, info|
|
||||
#Font file embedding
|
||||
newobj()
|
||||
@FontFiles[file]['n']=@n
|
||||
@font_files[file]['n']=@n
|
||||
if(defined('FPDF_FONTPATH'))
|
||||
file=FPDF_FONTPATH+file
|
||||
end
|
||||
|
@ -414,7 +414,7 @@ private
|
|||
end
|
||||
file=font['file']
|
||||
if(file)
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@FontFiles[file]['n']+' 0 R'
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@font_files[file]['n']+' 0 R'
|
||||
end
|
||||
out(s+'>>')
|
||||
out('endobj')
|
||||
|
|
|
@ -85,7 +85,7 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
end
|
||||
|
||||
def GetStringWidth(s)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
return GetMBStringWidth(s)
|
||||
else
|
||||
return super(s)
|
||||
|
@ -95,7 +95,7 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
def GetMBStringWidth(s)
|
||||
#Multi-byte version of GetStringWidth()
|
||||
l=0
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
nb=s.length
|
||||
i=0
|
||||
while(i<nb)
|
||||
|
@ -108,11 +108,11 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
i+=2
|
||||
end
|
||||
end
|
||||
return l*@FontSize/1000
|
||||
return l*@font_size/1000
|
||||
end
|
||||
|
||||
def MultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
MBMultiCell(w,h,txt,border,align,fill)
|
||||
else
|
||||
super(w,h,txt,border,align,fill)
|
||||
|
@ -121,11 +121,11 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
|
||||
def MBMultiCell(w,h,txt,border=0,align='L',fill=0)
|
||||
#Multi-byte version of MultiCell()
|
||||
cw=@CurrentFont['cw']
|
||||
cw=@current_font['cw']
|
||||
if(w==0)
|
||||
w=@w-@rMargin-@x
|
||||
w=@w-@r_margin-@x
|
||||
end
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
if(nb>0 and s[nb-1]=="\n")
|
||||
|
@ -202,11 +202,11 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
b+='B'
|
||||
end
|
||||
Cell(w,h,s[j,i-j],b,2,align,fill)
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
end
|
||||
|
||||
def Write(h,txt,link='')
|
||||
if(@CurrentFont['type']=='Type0')
|
||||
if(@current_font['type']=='Type0')
|
||||
MBWrite(h,txt,link)
|
||||
else
|
||||
super(h,txt,link)
|
||||
|
@ -215,9 +215,9 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
|
||||
def MBWrite(h,txt,link)
|
||||
#Multi-byte version of Write()
|
||||
cw=@CurrentFont['cw']
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
cw=@current_font['cw']
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
s=txt.gsub("\r",'')
|
||||
nb=s.length
|
||||
sep=-1
|
||||
|
@ -238,9 +238,9 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
j=i
|
||||
l=0
|
||||
if(nl==1)
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
next
|
||||
|
@ -252,12 +252,12 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
if(l>wmax)
|
||||
#Automatic line break
|
||||
if(sep==-1 or i==j)
|
||||
if(@x>@lMargin)
|
||||
if(@x>@l_margin)
|
||||
#Move to next line
|
||||
@x=@lMargin
|
||||
@x=@l_margin
|
||||
@y+=h
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
i+=1
|
||||
nl+=1
|
||||
next
|
||||
|
@ -274,9 +274,9 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
j=i
|
||||
l=0
|
||||
if(nl==1)
|
||||
@x=@lMargin
|
||||
w=@w-@rMargin-@x
|
||||
wmax=(w-2*@cMargin)*1000/@FontSize
|
||||
@x=@l_margin
|
||||
w=@w-@r_margin-@x
|
||||
wmax=(w-2*@c_margin)*1000/@font_size
|
||||
end
|
||||
nl+=1
|
||||
else
|
||||
|
@ -285,7 +285,7 @@ UHC_widths={' ' => 333, '!' => 416, '"' => 416, '#' => 833, '$' => 625, '%' => 9
|
|||
end
|
||||
#Last chunk
|
||||
if(i!=j)
|
||||
Cell(l/1000*@FontSize,h,s[j,i-j],0,0,'',0,link)
|
||||
Cell(l/1000*@font_size,h,s[j,i-j],0,0,'',0,link)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -301,10 +301,10 @@ private
|
|||
end
|
||||
# mqr=get_magic_quotes_runtime()
|
||||
# set_magic_quotes_runtime(0)
|
||||
@FontFiles.each_pair do |file, info|
|
||||
@font_files.each_pair do |file, info|
|
||||
#Font file embedding
|
||||
newobj()
|
||||
@FontFiles[file]['n']=@n
|
||||
@font_files[file]['n']=@n
|
||||
if(defined('FPDF_FONTPATH'))
|
||||
file=FPDF_FONTPATH+file
|
||||
end
|
||||
|
@ -378,7 +378,7 @@ private
|
|||
end
|
||||
file=font['file']
|
||||
if(file)
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@FontFiles[file]['n']+' 0 R'
|
||||
s+=' /FontFile'+(font['type']=='Type1' ? '' : '2')+' '+@font_files[file]['n']+' 0 R'
|
||||
end
|
||||
out(s+'>>')
|
||||
out('endobj')
|
||||
|
|
Loading…
Reference in New Issue