电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > PHP教程 > 正文
用PHP创建PDF中文文档
用PHP创建PDF中文文档
2005-12-30 19:21:12  文/45IT收集   出处:电脑软硬件应用网   
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 break
if($this->ws>0)
{
$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 break
if($sep==-1 or $i==$j)
{
if($i==$j)
$i+=$ascii ? 1 : 2;
if($this->ws>0)
{
$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=($ns>0) ? ($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 chunk
if($this->ws>0)
{
$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 Write($h,$txt,$link='''')
{
if($this->CurrentFont[''type'']==''Type0'')
$this->MBWrite($h,$txt,$link);
else
parent::Write($h,$txt,$link);
}

function MBWrite($h,$txt,$link)
{
//Multi-byte version of Write()
$cw=&$this->CurrentFont[''cw''];
$w=$this->w-$this->rMargin-$this->x;
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
$s=str_replace("\r",'''',$txt);
$nb=strlen($s);
$sep=-1;
$i=0;
$j=0;
$l=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 break
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'''',0,$link);
$i++;
$sep=-1;
$j=$i;
$l=0;
if($nl==1)
{
$this->x=$this->lMargin;
$w=$this->w-$this->rMargin-$this->x;
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
}
$nl++;
continue;
}
if(!$ascii or $c=='' '')
$sep=$i;
$l+=$ascii ? $cw[$c] : 1000;
if($l>$wmax)
{
//Automatic line break
if($sep==-1 or $i==$j)
{
if($this->x>$this->lMargin)
{
//Move to next line
$this->x=$this->lMargin;
$this->y+=$h;
$w=$this->w-$this->rMargin-$this->x;
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
$i++;
$nl++;
continue;
}
if($i==$j)
$i+=$ascii ? 1 : 2;
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'''',0,$link);
}
else
{
$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'''',0,$link);
$i=($s[$sep]=='' '') ? $sep+1 : $sep;
}
$sep=-1;
$j=$i;
$l=0;
if($nl==1)
{
$this->x=$this->lMargin;
$w=$this->w-$this->rMargin-$this->x;
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
}
$nl++;
}
else
$i+=$ascii ? 1 : 2;
}
//Last chunk
if($i!=$j)
$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j,$i-$j),0,0,'''',0,$link);
}

function _putfonts()
{
$nf=$this->n;
foreach($this->diffs as $diff)
{
//Encodings
$this->_newobj();
$this->_out(''<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [''.$diff.'']>>'');
$this->_out(''endobj'');
}
$mqr=get_magic_quotes_runtime();
set_magic_quotes_runtime(0);
foreach($this->FontFiles as $file=>$info)
{
//Font file embedding
$this->_newobj();
$this->FontFiles[$file][''n'']=$this->n;
if(defined(''FPDF_FONTPATH''))
$file=FPDF_FONTPATH.$file;
$size=filesize($file);
if(!$size)
$this->Error(''Font file not found'');
$this->_out(''<</Length ''.$size);
if(substr($file,-2)==''.z'')
$this->_out(''/Filter /FlateDecode'');
$this->_out(''/Length1 ''.$info[''length1'']);
if(isset($info[''length2'']))
$this->_out(''/Length2 ''.$info[''length2''].'' /Length3 0'');
$this->_out(''>>'');
$f=fopen($file,''rb'');
$this->_putstream(fread($f,$size));
fclose($f);
$this->_out(''endobj'');
}
set_magic_quotes_runtime($mqr);
foreach($this->fonts as $k=>$font)
{
//Font objects
$this->_newobj();
$this->fonts[$k][''n'']=$this->n;
$this->_out(''<</Type /Font'');
if($font[''type'']==''Type0'')
$this->_putType0($font);
else
{
$name=$font[''name''];
$this->_out(''/BaseFont /''.$name);
if($font[''type'']==''core'')
{
//Standard font
$this->_out(''/Subtype /Type1'');
if($name!=''Symbol'' and $name!=''ZapfDingbats'')
$this->_out(''/Encoding /WinAnsiEncoding'');
}
else
{
//Additional font
$this->_out(''/Subtype /''.$font[''type'']);
$this->_out(''/FirstChar 32'');
$this->_out(''/LastChar 255'');
$this->_out(''/Widths ''.($this->n+1).'' 0 R'');
$this->_out(''/FontDescriptor ''.($this->n+2).'' 0 R'');
if($font[''enc''])
{
if(isset($font[''diff'']))
$this->_out(''/Encoding ''.($nf+$font[''diff'']).'' 0 R'');
else
$this->_out(''/Encoding /WinAnsiEncoding'');
}
}
$this->_out(''>>'');
$this->_out(''endobj'');
if($font[''type'']!=''core'')
{
//Widths
$this->_newobj();
$cw=&$font[''cw''];
$s=''['';
for($i=32;$i<=255;$i++)
$s.=$cw[chr($i)].'' '';
$this->_out($s.'']'');
$this->_out(''endobj'');
//Descriptor
$this->_newobj();
$s=''<</Type /FontDescriptor /FontName /''.$name;
foreach($font[''desc''] as $k=>$v)
$s.='' /''.$k.'' ''.$v;
$file=$font[''file''];
if($file)
$s.='' /FontFile''.($font[''type'']==''Type1'' ? '''' : ''2'').'' ''.$this->FontFiles[$file][''n''].'' 0 R'';
$this->_out($s.''>>'');
$this->_out(''endobj'');
}
}
}
}

function _putType0($font)
{
//Type0
$this->_out(''/Subtype /Type0'');
$this->_out(''/BaseFont /''.$font[''name''].''-''.$font[''CMap'']);
$this->_out(''/Encoding /''.$font[''CMap'']);
$this->_out(''/DescendantFonts [''.($this->n+1).'' 0 R]'');
$this->_out(''>>'');
$this->_out(''endobj'');
//CIDFont
$this->_newobj();
$this->_out(''<</Type /Font'');
$this->_out(''/Subtype /CIDFontType0'');
$this->_out(''/BaseFont /''.$font[''name'']);
$this->_out(''/CIDSystemI

上一页  [1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    javascript实用技巧点滴(三)
    javascript实用技巧点滴(2)
    javascript实用技巧点滴(1)
    javascript教程 - 第一课 1.1
    用js制作完善的日,月组合下拉框
    利用JSP编程建立动态Web站点
    用PHP制作留言板
    PHP生成动态WAP页面
    PHP实现文件下载
    PHP4的session功能
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号