用PHP创建PDF中文文档_php基础_脚本之家

我使用的是FPDF。为此我烦恼了很长时间,现在终于搞定了,将TrueType字体转化为pt1字体使用:

我使用的是FPDF,下载了fpdf类库后,还要使用下面的中文类库才能支持中文,但只能使用一种中文字体。为此我烦恼了很长时间,现在终于搞定了,将TrueType字体转化为pt1字体使用:

下面是在FPDF上找的一个中文类库:?phprequire(‘fpdf.php’);

下面是在FPDF上找的一个中文类库:

$Big5_widths=array(‘
‘=250,’!’=250,'”‘=408,’#’=668,’$’=490,’%’=875,’&’=698,”’=250,'(‘=240,’)’=240,’*’=417,’+’=667,’,’=250,’-‘=313,’.’=250,’/’=520,’0’=500,’1’=500,’2’=500,’3’=500,’4’=500,’5’=500,’6’=500,’7’=500,’8’=500,’9’=500,’:’=250,’;’=250,”=667,’=’=667,”=667,’?’=396,’@’=921,’A’=677,’B’=615,’C’=719,’D’=760,’E’=625,’F’=552,’G’=771,’H’=802,’I’=354,’J’=354,’K’=781,’L’=604,’M’=927,’N’=750,’O’=823,’P’=563,’Q’=823,’R’=729,’S’=542,’T’=698,’U’=771,’V’=729,’W’=948,’X’=771,’Y’=677,’Z’=635,'[‘=344,”=520,’]’=344,’^’=469,’_’=500,’`’=250,’a’=469,’b’=521,’c’=427,’d’=521,’e’=438,’f’=271,’g’=469,’h’=531,’i’=250,’j’=250,’k’=458,’l’=240,’m’=802,’n’=531,’o’=500,’p’=521,’q’=521,’r’=365,’s’=333,’t’=292,’u’=521,’v’=458,’w’=677,’x’=479,’y’=458,’z’=427,'{‘=480,’|’=496,’}’=480,’~’=667);

$Big5_widths=array(‘
‘=>250,’!’=>250,'”‘=>408,’#’=>668,’$’=>490,’%’=>875,’&’=>698,”’=>250,”=>240,’*’=>417,’+’=>667,’,’=>250,’-‘=>313,’.’=>250,’/’=>520,’0’=>500,’1’=>500,’2’=>500,’3’=>500,’4’=>500,’5’=>500,’6’=>500,’7’=>500,’8’=>500,’9’=>500,’:’=>250,’;’=>250,’667,’=’=>667,’>’=>667,’?’=>396,’@’=>921,’A’=>677,’B’=>615,’C’=>719,’D’=>760,’E’=>625,’F’=>552,’G’=>771,’H’=>802,’I’=>354,’J’=>354,’K’=>781,’L’=>604,’M’=>927,’N’=>750,’O’=>823,’P’=>563,’Q’=>823,’R’=>729,’S’=>542,’T’=>698,’U’=>771,’V’=>729,’W’=>948,’X’=>771,’Y’=>677,’Z’=>635,'[‘=>344,”=>520,’]’=>344,’^’=>469,’_’=>500,’`’=>250,’a’=>469,’b’=>521,’c’=>427,’d’=>521,’e’=>438,’f’=>271,’g’=>469,’h’=>531,’i’=>250,’j’=>250,’k’=>458,’l’=>240,’m’=>802,’n’=>531,’o’=>500,’p’=>521,’q’=>521,’r’=>365,’s’=>333,’t’=>292,’u’=>521,’v’=>458,’w’=>677,’x’=>479,’y’=>458,’z’=>427,'{‘=>480,’|’=>496,’}’=>480,’~’=>667);

$GB_widths=array(‘
‘=207,’!’=270,'”‘=342,’#’=467,’$’=462,’%’=797,’&’=710,”’=239,'(‘=374,’)’=374,’*’=423,’+’=605,’,’=238,’-‘=375,’.’=238,’/’=334,’0’=462,’1’=462,’2’=462,’3’=462,’4’=462,’5’=462,’6’=462,’7’=462,’8’=462,’9’=462,’:’=238,’;’=238,”=605,’=’=605,”=605,’?’=344,’@’=748,’A’=684,’B’=560,’C’=695,’D’=739,’E’=563,’F’=511,’G’=729,’H’=793,’I’=318,’J’=312,’K’=666,’L’=526,’M’=896,’N’=758,’O’=772,’P’=544,’Q’=772,’R’=628,’S’=465,’T’=607,’U’=753,’V’=711,’W’=972,’X’=647,’Y’=620,’Z’=607,'[‘=374,”=333,’]’=374,’^’=606,’_’=500,’`’=239,’a’=417,’b’=503,’c’=427,’d’=529,’e’=415,’f’=264,’g’=444,’h’=518,’i’=241,’j’=230,’k’=495,’l’=228,’m’=793,’n’=527,’o’=524,’p’=524,’q’=504,’r’=338,’s’=336,’t’=277,’u’=517,’v’=450,’w’=652,’x’=466,’y’=452,’z’=407,'{‘=370,’|’=258,’}’=370,’~’=605);

$GB_widths=array(‘
‘=>207,’!’=>270,'”‘=>342,’#’=>467,’$’=>462,’%’=>797,’&’=>710,”’=>239,”=>374,’*’=>423,’+’=>605,’,’=>238,’-‘=>375,’.’=>238,’/’=>334,’0’=>462,’1’=>462,’2’=>462,’3’=>462,’4’=>462,’5’=>462,’6’=>462,’7’=>462,’8’=>462,’9’=>462,’:’=>238,’;’=>238,’605,’=’=>605,’>’=>605,’?’=>344,’@’=>748,’A’=>684,’B’=>560,’C’=>695,’D’=>739,’E’=>563,’F’=>511,’G’=>729,’H’=>793,’I’=>318,’J’=>312,’K’=>666,’L’=>526,’M’=>896,’N’=>758,’O’=>772,’P’=>544,’Q’=>772,’R’=>628,’S’=>465,’T’=>607,’U’=>753,’V’=>711,’W’=>972,’X’=>647,’Y’=>620,’Z’=>607,'[‘=>374,”=>333,’]’=>374,’^’=>606,’_’=>500,’`’=>239,’a’=>417,’b’=>503,’c’=>427,’d’=>529,’e’=>415,’f’=>264,’g’=>444,’h’=>518,’i’=>241,’j’=>230,’k’=>495,’l’=>228,’m’=>793,’n’=>527,’o’=>524,’p’=>524,’q’=>504,’r’=>338,’s’=>336,’t’=>277,’u’=>517,’v’=>450,’w’=>652,’x’=>466,’y’=>452,’z’=>407,'{‘=>370,’|’=>258,’}’=>370,’~’=>605);

class PDF_Chinese extends FPDF{function
AddCIDFont($family,$style,$name,$cw,$CMap,$registry){$i=count($this-fonts)+1;$fontkey=strtolower($family).strtoupper($style);$this-fonts[$fontkey]=array(‘i’=$i,’type’=’Type0’,’name’=$name,’up’=-120,’ut’=40,’cw’=$cw,’CMap’=$CMap,’registry’=$registry);}

class PDF_Chinese extends FPDF{function
AddCIDFont($family,$style,$name,$cw,$CMap,$registry){$i=count+1;$fontkey=strtolower.strtoupper;$this->fonts[$fontkey]=array(‘i’=>$i,’type’=>’Type0’,’name’=>$name,’up’=>-120,’ut’=>40,’cw’=>$cw,’CMap’=>$CMap,’registry’=>$registry);}

function
AddBig5Font($family=’Big5′){$cw=$GLOBALS[‘Big5_widths’];$name=’MSungStd-Light-Acro’;$CMap=’ETenms-B5-H’;$registry=array(‘ordering’=’CNS1′,’supplement’=0);$this-AddCIDFont($family,”,$name,$cw,$CMap,$registry);$this-AddCIDFont($family,’B’,$name.’,Bold’,$cw,$CMap,$registry);$this-AddCIDFont($family,’I’,$name.’,Italic’,$cw,$CMap,$registry);$this-AddCIDFont($family,’BI’,$name.’,BoldItalic’,$cw,$CMap,$registry);}

function
AddBig5Font{$cw=$GLOBALS[‘Big5_widths’];$name=’MSungStd-Light-Acro’;$CMap=’ETenms-B5-H’;$registry=array(‘ordering’=>’CNS1′,’supplement’=>0);$this->AddCIDFont($family,”,$name,$cw,$CMap,$registry);$this->AddCIDFont($family,’B’,$name.’,Bold’,$cw,$CMap,$registry);$this->AddCIDFont($family,’I’,$name.’,Italic’,$cw,$CMap,$registry);$this->AddCIDFont($family,’BI’,$name.’,BoldItalic’,$cw,$CMap,$registry);}

function
AddGBFont($family=’GB’){$cw=$GLOBALS[‘GB_widths’];$name=’STSongStd-Light-Acro’;$CMap=’GBKp-EUC-H’;$registry=array(‘ordering’=’GB1′,’supplement’=2);$this-AddCIDFont($family,”,$name,$cw,$CMap,$registry);$this-AddCIDFont($family,’B’,$name.’,Bold’,$cw,$CMap,$registry);$this-AddCIDFont($family,’I’,$name.’,Italic’,$cw,$CMap,$registry);$this-AddCIDFont($family,’BI’,$name.’,BoldItalic’,$cw,$CMap,$registry);}

function
AddGBFont{$cw=$GLOBALS[‘GB_widths’];$name=’STSongStd-Light-Acro’;$CMap=’GBKp-EUC-H’;$registry=array(‘ordering’=>’GB1′,’supplement’=>2);$this->AddCIDFont($family,”,$name,$cw,$CMap,$registry);$this->AddCIDFont($family,’B’,$name.’,Bold’,$cw,$CMap,$registry);$this->AddCIDFont($family,’I’,$name.’,Italic’,$cw,$CMap,$registry);$this->AddCIDFont($family,’BI’,$name.’,BoldItalic’,$cw,$CMap,$registry);}

function
GetStringWidth($s){if($this-CurrentFont[‘type’]==’Type0′)return
$this-GetMBStringWidth($s);elsereturn parent::GetStringWidth($s);}

function
GetStringWidth{if($this->CurrentFont[‘type’]==’Type0′)return
$this->GetMBStringWidth;elsereturn parent::GetStringWidth;}

function GetMBStringWidth($s){//Multi-byte version of
GetStringWidth()$l=0;$cw=&$this-CurrentFont[‘cw’];$nb=strlen($s);$i=0;while($i$nb){$c=$s[$i];if(ord($c)128){$l+=$cw[$c];$i++;}else{$l+=1000;$i+=2;}}return
$l*$this-FontSize/1000;}

function GetMBStringWidth{//Multi-byte version of
GetStringWidth()$l=0;$cw=&$this->CurrentFont[‘cw’];$nb=strlen;$i=0;while{$c=$s[$i];if{$l+=$cw[$c];$i++;}else{$l+=1000;$i+=2;}}return
$l*$this->FontSize/1000;}

function
MultiCell($w,$h,$txt,$border=0,$align=’L’,$fill=0){if($this-CurrentFont[‘type’]==’Type0′)$this-MBMultiCell($w,$h,$txt,$border,$align,$fill);elseparent::MultiCell($w,$h,$txt,$border,$align,$fill);}

function
MultiCell($w,$h,$txt,$border=0,$align=’L’,$fill=0){if($this->CurrentFont[‘type’]==’Type0′)$this->MBMultiCell($w,$h,$txt,$border,$align,$fill);elseparent::MultiCell($w,$h,$txt,$border,$align,$fill);}

function
MBMultiCell($w,$h,$txt,$border=0,$align=’L’,$fill=0){//Multi-byte
version of
MultiCell()$cw=&$this-CurrentFont[‘cw’];if($w==0)$w=$this-w-$this-rMargin-$this-x;$wmax=($w-2*$this-cMargin)*1000/$this-FontSize;$s=str_replace(“/r”,”,$txt);$nb=strlen($s);if($nb0
and
$s[$nb-1]==”/n”$nb–;$b=0;if($border){if($border==1){$border=’LTRB’;$b=’LRT’;$b2=’LR’;}else{$b2=”;if(is_int(strpos($border,’L’)))$b2.=’L’;if(is_int(strpos($border,’R’)))$b2.=’R’;$b=is_int(strpos($border,’T’))
? $b2.’T’ : $b2;}}$sep=-1;$i=0;$j=0;$l=0;$ns=0;$nl=1;while($i$nb){//Get
next character$c=$s[$i];//Check if ASCII or
MB$ascii=(ord($c)128);if($c==”/n”{//Explicit line
breakif($this-ws0){$this-ws=0;$this-_out(‘0
Tw’);}$this-Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);$i++;$sep=-1;$j=$i;$l=0;$ns=0;$nl++;if($border
and $nl==2)$b=$b2;continue;}if(!$ascii){$sep=$i;$ls=$l;}elseif($c==’
‘){$sep=$i;$ls=$l;$ns++;}$l+=$ascii ? $cw[$c] :
1000;if($l$wmax){//Automatic line breakif($sep==-1 or
$i==$j){if($i==$j)$i+=$ascii ? 1 :
2;if($this-ws0){$this-ws=0;$this-_out(‘0
Tw’);}$this-Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);}else{if($align==’J’){if($s[$sep]==’
‘)$ns–;if($s[$i-1]==’ ‘){$ns–;$ls-=$cw[‘ ‘];}$this-ws=($ns0) ?
($wmax-$ls)/1000*$this-FontSize/$ns : 0;$this-_out(sprintf(‘%.3f
Tw’,$this-ws*$this-k));}$this-Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);$i=($s[$sep]==’
‘) ? $sep+1 : $sep;}$sep=-1;$j=$i;$l=0;$ns=0;$nl++;if($border and
$nl==2)$b=$b2;}else$i+=$ascii ? 1 : 2;}//Last
chunkif($this-ws0){$this-ws=0;$this-_out(‘0 Tw’);}if($border and
is_int(strpos($border,’B’)))$b.=’B’;$this-Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);$this-x=$this-lMargin;}

function
MBMultiCell($w,$h,$txt,$border=0,$align=’L’,$fill=0){//Multi-byte
version of
MultiCell()$cw=&$this->CurrentFont[‘cw’];if$w=$this->w-$this->rMargin-$this->x;$wmax=*澳门新葡亰3522平台游戏,1000/$this->FontSize;$s=str_replace;$nb=strlen;if($nb>0
and
$s[$nb-1]==”n”$nb–;$b=0;if{if{$border=’LTRB’;$b=’LRT’;$b2=’LR’;}else{$b2=”;if(is_int$b2.=’L’;if(is_int$b2.=’R’;$b=is_int
? $b2.’T’ : $b2;}}$sep=-1;$i=0;$j=0;$l=0;$ns=0;$nl=1;while{//Get next
character$c=$s[$i];//Check if ASCII or
MB$ascii=;if($c==”n”{//Explicit line
breakif{$this->ws=0;$this->_out;}$this->Cell($w,$h,substr,$b,2,$align,$fill);$i++;$sep=-1;$j=$i;$l=0;$ns=0;$nl++;if$b=$b2;continue;}if{$sep=$i;$ls=$l;}elseif{$sep=$i;$ls=$l;$ns++;}$l+=$ascii
? $cw[$c] : 1000;if{//Automatic line breakif{if$i+=$ascii ? 1 :
2;if{$this->ws=0;$this->_out;}$this->Cell($w,$h,substr,$b,2,$align,$fill);}else{if{if$ns–;if{$ns–;$ls-=$cw[‘
‘];}$this->ws=/1000*$this->FontSize/$ns :
0;$this->_out(sprintf(‘%.3f
Tw’,$this->ws*$this->k));}$this->Cell($w,$h,substr,$b,2,$align,$fill);$i=
? $sep+1 : $sep;}$sep=-1;$j=$i;$l=0;$ns=0;$nl++;if$b=$b2;}else$i+=$ascii
? 1 : 2;}//Last chunkif{$this->ws=0;$this->_out;}if($border and
is_int$b.=’B’;$this->Cell($w,$h,substr,$b,2,$align,$fill);$this->x=$this->lMargin;}