diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-06-30 03:48:37 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-06-30 03:48:37 +0000 |
commit | e9cdaf0d4bc74ad917d210994304e1a68574675f (patch) | |
tree | 6457cd79c688b56e70685ee354e3aff3f6efc7fd | |
parent | 047ba7c879c70b5096840b4d09f6c555c00d8abe (diff) | |
download | redmine-e9cdaf0d4bc74ad917d210994304e1a68574675f.tar.gz redmine-e9cdaf0d4bc74ad917d210994304e1a68574675f.zip |
PDF: import Chinese rfpdf patch for textilized PDF (#69).
Contributed by Jun NAITOH.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6133 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | vendor/plugins/rfpdf/lib/fpdf/chinese.rb | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/vendor/plugins/rfpdf/lib/fpdf/chinese.rb b/vendor/plugins/rfpdf/lib/fpdf/chinese.rb index 5edccca9f..504df1f7b 100644 --- a/vendor/plugins/rfpdf/lib/fpdf/chinese.rb +++ b/vendor/plugins/rfpdf/lib/fpdf/chinese.rb @@ -142,15 +142,20 @@ module PDF_Chinese return l*@font_size/1000 end - def MultiCell(w,h,txt,border=0,align='L',fill=0) + def MultiCell(w,h,txt,border=0,align='L',fill=0,ln=1) if(@current_font['type']=='Type0') - MBMultiCell(w,h,txt,border,align,fill) + MBMultiCell(w,h,txt,border,align,fill,ln) else - super(w,h,txt,border,align,fill) + super(w,h,txt,border,align,fill,ln) end end - def MBMultiCell(w,h,txt,border=0,align='L',fill=0) + def MBMultiCell(w,h,txt,border=0,align='L',fill=0,ln=1) + + # save current position + prevx = @x; + prevy = @y; + #Multi-byte version of MultiCell() cw=@current_font['cw'] if(w==0) @@ -233,18 +238,30 @@ module PDF_Chinese b+='B' end Cell(w,h,s[j,i-j],b,2,align,fill) - @x=@l_margin + + # move cursor to specified position + if (ln == 1) + # go to the beginning of the next line + @x=@l_margin + elsif (ln == 0) + # go to the top-right of the cell + @y = prevy; + @x = prevx + w; + elsif (ln == 2) + # go to the bottom-left of the cell + @x = prevx; + end end - def Write(h,txt,link='') + def Write(h,txt,link='',fill=0) if(@current_font['type']=='Type0') - MBWrite(h,txt,link) + MBWrite(h,txt,link,fill) else - super(h,txt,link) + super(h,txt,link,fill) end end - def MBWrite(h,txt,link) + def MBWrite(h,txt,link,fill=0) #Multi-byte version of Write() cw=@current_font['cw'] w=@w-@r_margin-@x @@ -263,7 +280,7 @@ module PDF_Chinese ascii=(c<128) if(c.chr=="\n") #Explicit line break - Cell(w,h,s[j,i-j],0,2,'',0,link) + Cell(w,h,s[j,i-j],0,2,'',fill,link) i+=1 sep=-1 j=i @@ -296,9 +313,9 @@ module PDF_Chinese if(i==j) i+=ascii ? 1 : 2 end - Cell(w,h,s[j,i-j],0,2,'',0,link) + Cell(w,h,s[j,i-j],0,2,'',fill,link) else - Cell(w,h,s[j,sep-j],0,2,'',0,link) + Cell(w,h,s[j,sep-j],0,2,'',fill,link) i=(s[sep].chr==' ') ? sep+1 : sep end sep=-1 @@ -316,7 +333,7 @@ module PDF_Chinese end #Last chunk if(i!=j) - Cell(l/1000*@font_size,h,s[j,i-j],0,0,'',0,link) + Cell(l*@font_size/1000.0,h,s[j,i-j],0,0,'',fill,link) end end |