⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpdf.php

📁 架設ROSE私服必備之物 ROSE數據庫
💻 PHP
📖 第 1 页 / 共 4 页
字号:
    $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};        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($c==' ')            $sep=$i;        $l+=$cw[$c];        if($l>$wmax)        {            //Automatic line break            if($sep==-1)            {                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++;                $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=$sep+1;            }            $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++;    }    //Last chunk    if($i!=$j)        $this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link);}function Image($file,$x,$y,$w=0,$h=0,$type='',$link=''){    //Put an image on the page    if(!isset($this->images[$file]))    {        //First use of image, get info        if($type=='')        {            $pos=strrpos($file,'.');            if(!$pos)                $this->Error('Image file has no extension and no type was specified: '.$file);            $type=substr($file,$pos+1);        }        $type=strtolower($type);        $mqr=get_magic_quotes_runtime();        set_magic_quotes_runtime(0);        if($type=='jpg' or $type=='jpeg')            $info=$this->_parsejpg($file);        elseif($type=='png')            $info=$this->_parsepng($file);        else        {            //Allow for additional formats            $mtd='_parse'.$type;            if(!method_exists($this,$mtd))                $this->Error('Unsupported image type: '.$type);            $info=$this->$mtd($file);        }        set_magic_quotes_runtime($mqr);        $info['i']=count($this->images)+1;        $this->images[$file]=$info;    }    else        $info=$this->images[$file];    //Automatic width and height calculation if needed    if($w==0 and $h==0)    {        //Put image at 72 dpi        $w=$info['w']/$this->k;        $h=$info['h']/$this->k;    }    if($w==0)        $w=$h*$info['w']/$info['h'];    if($h==0)        $h=$w*$info['h']/$info['w'];    $this->_out(sprintf('q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));    if($link)        $this->Link($x,$y,$w,$h,$link);}function Ln($h=''){    //Line feed; default value is last cell height    $this->x=$this->lMargin;    if(is_string($h))        $this->y+=$this->lasth;    else        $this->y+=$h;}function GetX(){    //Get x position    return $this->x;}function SetX($x){    //Set x position    if($x>=0)        $this->x=$x;    else        $this->x=$this->w+$x;}function GetY(){    //Get y position    return $this->y;}function SetY($y){    //Set y position and reset x    $this->x=$this->lMargin;    if($y>=0)        $this->y=$y;    else        $this->y=$this->h+$y;}function SetXY($x,$y){    //Set x and y positions    $this->SetY($y);    $this->SetX($x);}function Output($name='',$dest=''){    //Output PDF to some destination        // lem9    //global $HTTP_SERVER_VARS;    //Finish document if necessary    if($this->state<3)        $this->Close();    //Normalize parameters    if(is_bool($dest))        $dest=$dest ? 'D' : 'F';    $dest=strtoupper($dest);    if($dest=='')    {        if($name=='')        {            $name='doc.pdf';            $dest='I';        }        else            $dest='F';    }    switch($dest)    {        case 'I':            //Send to standard output                        // lem9            //if(isset($HTTP_SERVER_VARS['SERVER_NAME']))            if(PMA_getenv('SERVER_NAME'))            {                //We send to a browser                Header('Content-Type: application/pdf');                if(headers_sent())                    $this->Error('Some data has already been output to browser, can\'t send PDF file');                Header('Content-Length: '.strlen($this->buffer));                Header('Content-disposition: inline; filename="'.$name.'"');            }            echo $this->buffer;            break;        case 'D':            //Download file                        // lem9            //if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']) and strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'],'MSIE'))            if(PMA_getenv('HTTP_USER_AGENT') and strpos(PMA_getenv('HTTP_USER_AGENT'), 'MSIE'))                Header('Content-Type: application/force-download');            else                Header('Content-Type: application/octet-stream');            if(headers_sent())                $this->Error('Some data has already been output to browser, can\'t send PDF file');            Header('Content-Length: '.strlen($this->buffer));            Header('Content-disposition: attachment; filename="'.$name.'"');            echo $this->buffer;            break;        case 'F':            //Save to local file            $f=fopen($name,'wb');            if(!$f)                $this->Error('Unable to create output file: '.$name);            fwrite($f,$this->buffer,strlen($this->buffer));            fclose($f);            break;        case 'S':            //Return as a string            return $this->buffer;        default:            $this->Error('Incorrect output destination: '.$dest);    }    return '';}/********************************************************************************                                                                              **                              Protected methods                               **                                                                              ********************************************************************************/function _dochecks(){    //Check for locale-related bug    if(1.1==1)        $this->Error('Don\'t alter the locale before including class file');    //Check for decimal separator    if(sprintf('%.1f',1.0)!='1.0')        setlocale(LC_NUMERIC,'C');}function _begindoc(){    //Start document    $this->state=1;    $this->_out('%PDF-1.3');}function _strreplace($what, $to, $where) {    return str_replace($what, $to, $where);}function _putpages(){    $nb=$this->page;    if(!empty($this->AliasNbPages))    {        //Replace number of pages        for($n=1;$n<=$nb;$n++)            $this->pages[$n]=$this->_strreplace($this->AliasNbPages,$nb,$this->pages[$n]);    }    if($this->DefOrientation=='P')    {        $wPt=$this->fwPt;        $hPt=$this->fhPt;    }    else    {        $wPt=$this->fhPt;        $hPt=$this->fwPt;    }    $filter=($this->compress) ? '/Filter /FlateDecode ' : '';    for($n=1;$n<=$nb;$n++)    {        //Page        $this->_newobj();        $this->_out('<</Type /Page');        $this->_out('/Parent 1 0 R');        if(isset($this->OrientationChanges[$n]))            $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$hPt,$wPt));        $this->_out('/Resources 2 0 R');        if(isset($this->PageLinks[$n]))        {            //Links            $annots='/Annots [';            foreach($this->PageLinks[$n] as $pl)            {                $rect=sprintf('%.2f %.2f %.2f %.2f',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);                $annots.='<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';                if(is_string($pl[4]))                    $annots.='/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>';                else                {                    $l=$this->links[$pl[4]];                    $h=isset($this->OrientationChanges[$l[0]]) ? $wPt : $hPt;                    $annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]>>',1+2*$l[0],$h-$l[1]*$this->k);                }            }            $this->_out($annots.']');        }        $this->_out('/Contents '.($this->n+1).' 0 R>>');        $this->_out('endobj');        //Page content        $p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];        $this->_newobj();        $this->_out('<<'.$filter.'/Length '.strlen($p).'>>');        $this->_putstream($p);        $this->_out('endobj');    }    //Pages root    $this->offsets[1]=strlen($this->buffer);    $this->_out('1 0 obj');    $this->_out('<</Type /Pages');    $kids='/Kids [';    for($i=0;$i<$nb;$i++)        $kids.=(3+2*$i).' 0 R ';    $this->_out($kids.']');    $this->_out('/Count '.$nb);    $this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$wPt,$hPt));    $this->_out('>>');    $this->_out('endobj');}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->fonts[$k]['n']=$this->n+1;        $type=$font['type'];        $name=$font['name'];        if($type=='core')        {            //Standard font            $this->_newobj();            $this->_out('<</Type /Font');            $this->_out('/BaseFont /'.$name);            $this->_out('/Subtype /Type1');            if($name!='Symbol' and $name!='ZapfDingbats')                $this->_out('/Encoding /WinAnsiEncoding');            $this->_out('>>');            $this->_out('endobj');        }        elseif($type=='Type1' or $type=='TrueType')        {            //Additional Type1 or TrueType font            $this->_newobj();            $this->_out('<</Type /Font');            $this->_out('/BaseFont /'.$name);            $this->_out('/Subtype /'.$type);            $this->_out('/FirstChar 32 /LastChar 255');            $this->_out('/Widths '.($this->n+1).' 0 R');            $this->_out('/FontDescriptor '.($this->n+2).' 0 R');            if($font['enc'])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -