php实现pdf文件的生成与下载

这个有点复杂的,我们一步一步来说明。

受先我们要下载pdf需要的文件,搜索‘php生成pdf’找到相关进行下载,这里不做介绍

//pdf下载
 $name = $_SESSION['ex_uname'];
 $name_pdf=$name.'.pdf';
 $url = $_SERVER['DOCUMENT_ROOT']."/static/download/".$name;
        
 if (false == file_exists($url.'/'.$name_pdf)) {             

     $name = $_SESSION['ex_uname'];
     $url = $_SERVER['DOCUMENT_ROOT']."/static/download/".$name;
     @mkdir ( $_SERVER['DOCUMENT_ROOT']."/static/download/".$name, 0777 );//新建文件夹
     //echo dirname(dirname(__FILE__)).'/static/pdf/tdpdf/tcpdf_autoconfig.php';exit;
     require_once($_SERVER['DOCUMENT_ROOT'].'/static/pdf/tcpdf/tcpdf.php');
     require_once($_SERVER['DOCUMENT_ROOT'].'/static/pdf/opendir.php');
     $var_array = require($_SERVER['DOCUMENT_ROOT'].'/static/pdf/signconfig.php');
     $str_array = require($_SERVER['DOCUMENT_ROOT'].'/static/pdf/rayconfig.php');
     class MYPDF extends TCPDF {
          public function Header() {
              $bMargin = $this->getBreakMargin();
              $auto_page_break = $this->AutoPageBreak;
              $this->SetAutoPageBreak(false, 0);
              $this->SetAutoPageBreak($auto_page_break, $bMargin);
              $this->setPageMark();
          }
     }
             
     $id = $_SESSION['ex_uid'];
     $str  = APP::M('advset')->get_exlist($id);
     $companyname = $str['companyname'];
     $username = $str['username'];
     $fullname = $str['fullname'];
     $telphone = $str['telphone'];
     $address = $str['address'];
     $fax = $str['fax'];
     $email = $str['email']; 
     //print_r($str);exit;
            
     //实例化类并设置一些PDF属性
     $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     $pdf->SetCreator(PDF_CREATOR);
     $pdf->SetAuthor('Note');
     $pdf->SetTitle('Note');
     $pdf->SetSubject('TCPDF Tutorial');
     $pdf->SetKeywords('TCPDF,文件');
     $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
     $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
     $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
     $pdf->SetHeaderMargin(0);
     $pdf->SetFooterMargin(0);
     $pdf->setPrintFooter(false);
     $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
     $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
     //调用遍历文件的类
                
     $biao = new opdirsign();
     $jet = $biao->kob();
     $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     $i=1;
     foreach($jet as $key=>$value){
        //添加新的一页
        $pdf->AddPage();
        $bMargin = $pdf->getBreakMargin();
        $auto_page_break = $pdf->getAutoPageBreak();
        $pdf->SetAutoPageBreak(false, 0);
        $img_file = K_PATH_IMAGES.'sign/'.$value["name"];
        $pdf->Image($img_file, 0, 0, 210, 297, '', '', '', true, 300, '', false, false, 0);
        $pdf->SetAutoPageBreak($auto_page_break, $bMargin);
        $pdf->setPageMark();
        $pdf->SetFont('cid0cs', '', 10);
        //这里开始定位
        $bot = explode(",",$var_array[$i]['firm']);
        $bot[0] == 0 && $bot[1] ==0?" " :$pdf->writeHTMLcell($bot[0],$bot[1],$bot[2],$bot[3],$companyname, 0, 0, false, false, '',0,0);
        $jot = explode(",",$var_array[$i]['address']);
        $jot[0] == 0?" ":$pdf->writeHTMLcell($jot[0],$jot[1],$jot[2],$jot[3],$address, 0, 0, false, false, '',0,0);
        $aot = explode(",",$var_array[$i]['booth']);
        $aot[0] ==0?" ":$pdf->writeHTMLcell($aot[0],$aot[1],$aot[2],$aot[3],$username, 0, 0, false, false, '',0,0);
        $cot = explode(",",$var_array[$i]['touch']);
        $cot[0] == 0?" ":$pdf->writeHTMLcell($cot[0],$cot[1],$cot[2],$cot[3],$fullname, 0, 0, false, false, '',0,0);
        $dot = explode(",",$var_array[$i]['tel']);
        $dot[0] == 0 ?" ":$pdf->writeHTMLcell($dot[0],$dot[1],$dot[2],$dot[3],$fax, 0, 0, false, false, '',0,0);
        $eot = explode(",",$var_array[$i]['fax']);
        $eot[0] == 0 ?" " :$pdf->writeHTMLcell($eot[0],$eot[1],$eot[2],$eot[3],$telphone, 0, 0, false, false, '',0,0);
        $fot = explode(",",$var_array[$i]['email']);
        $fot[0] == 0 ?" ":$pdf->writeHTMLcell($fot[0],$fot[1],$fot[2],$fot[3],$email, 0, 0, false, false, '',0,0);
        $hot = explode(",",$var_array[$i]['phone']);
        $hot[0] == 0 ?" " :$pdf->writeHTMLcell($hot[0],$hot[1],$hot[2],$hot[3],$phone, 0, 0, false, false, '',0,0);
        $i++;
      }
      $iconv = iconv("UTF-8","gbk//TRANSLIT","资料下载");
      //echo $mingz;exit;
      $pdf->Output($name.'_optional.pdf', 'd');
      $pdf->Output($url.'/'.$name.'_optional_'.$iconv.'.pdf', 'F');
}


转载于:https://my.oschina.net/meng527/blog/364276

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值