精华内容
下载资源
问答
  • php tcpdf
    2021-12-30 14:11:16

    安装

    composer require tecnickcom/tcpdf
    

    示例代码

     try {
        $order = requestAPI(env('A2_URL') . 'akinst/order/detail', ['user_id' => Auth::id(), 'order_number' => $request->get('p')]);
        $data = Arr::get($order,'0',[]);
        $data['total_amount_ch'] = convertAmountToCn(Arr::get($data,'total_amount',0));
        $data['downdate'] = date('Y-m-d',time()).'星期'.mb_substr( "日一二三四五六",date("w" ,time()),1,"utf-8" );;
        $view = view('tcpdf/contract', compact('data'));
        $content = response($view)->getContent();
        $pdf = new \TCPDF('p', 'mm', 'A4', true, 'UTF-8', false);
        // set margins
        $pdf->SetFont('stsongstdlight', '', 10);
        $pdf->SetCreator('创作者');
        $pdf->SetAuthor('作者');
        $pdf->SetTitle('网络销售合同');
        $pdf->SetSubject('网络销售合同');
        $pdf->SetKeywords('网络销售合同');
    
        // set default header data
        $pdf->SetHeaderData('', 63, '', '头部' , array(0, 0, 0), array(0, 0, 0));
    
        //$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setHeaderFont(Array('stsongstdlight', '', '10'));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    
        // set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    
        // set margins
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    
        // set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    
        // set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
        $pdf->SetMargins(15, 20, 15);
    
        // set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, 0);
    
        // set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        $pdf->setPrintHeader(true);
        $pdf->setPrintFooter(false);
        // set some language-dependent strings (optional)
        // ---------------------------------------------------------
        // Add a page
        $pdf->AddPage();
        $html = $content;
        $pdf->setPageMark();
    
        $pdf->SetXY(15, 20);
    
        $pdf->writeHTML($html, true, false, true, false, '');
    
        // ---------------------------------------------------------
        $tmpPath =  "pdf/" . date("Ymd");
        if (!Storage::disk('public')->exists($tmpPath)) {
            Storage::disk('public')->makeDirectory($tmpPath);
        }
        $filename = date("YmdHis") . "_" . rand(0, 10000) . '.pdf';
        $filepath = 'storage/' . $tmpPath . "/" . $filename;
        //循环每页生成公章
        for ($i = 1; $i <= $pdf->getNumPages(); $i++) {
            $pdf->setPage($i);
            $pdf->Image(public_path('/mallWeb/images/official.png'), 140, 220, 50, 43, '', '', '', false, 168, '', false, false, false, false, false, false);
        }
        $pdf->Output(public_path($filepath), 'F');
    
        if (file_exists(public_path($filepath))) {
            $retval['code'] = 0;
            $retval['filename'] = url($filepath);
            $retval['msg'] = '恭喜,生成合同的PDF文件成功.';
            return $retval;
        } else {
            $retval['code'] = 1;
            $retval['msg'] = '生成合同的PDF文件失败,请联系系统管理员.';
            return $retval;
        }
    } catch (\Exception $e) {
        return $e;
    }
    
    更多相关内容
  • php tcpdf类文件

    2015-08-27 12:11:32
    最新版tcpfd 支持中文 支持手动创建字体 快速生成pdf
  • 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDFTCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进,...
  • PHP使用TCPDF导出支持中文的pdf 一、下载 https://github.com/tecnickcom/tcpdf下载TCPDF压缩包 二、使用方法 require_once('./TCPDF/tcpdf.php'); $pdf = new \TCPDF(); $pdf->AddPage(); $html = "<...

    一、下载

    https://github.com/tecnickcom/tcpdf下载TCPDF压缩包

    二、使用方法

    	require_once('./TCPDF/tcpdf.php');
    	
    	$pdf = new \TCPDF();
    	
    	$pdf->AddPage();
    	$html = "<p>hello world 你好世界</p>";
    	
    	$pdf->WriteHtml(20, $html);
    	// 四种模式 I输出、D下载、F保存本地、S输出二进制字符串
    	$pdf->Output('test.pdf', 'I');
    

    效果如下:
    在这里插入图片描述

    三、修改配置支持中文

    define ('PDF_FONT_NAME_MAIN', 'helvetica');
    改为
    define ('PDF_FONT_NAME_MAIN', 'stsongstdlight');
    
    define ('PDF_FONT_NAME_DATA', 'helvetica');
    改为
    define ('PDF_FONT_NAME_DATA', 'stsongstdlight');
    

    效果如下:
    在这里插入图片描述

    四、文本加粗设置

    但是文本加粗就稍微复杂一点了,html中的加粗标签或者样式设置的加粗在导出后都没有加粗效果,这是TCPDF字体的问题,就需要自己下载一些字体加入TCPDF来实现加粗效果

    下载字体,从网上找也可以,用我的也可以,下载地址
    字体下载注意:
    1.必须是ttf格式
    2.需要是支持中文的(微软雅黑、宋体)都可以
    3.下载一个普通字体,一个加粗字体 ;
    然后使用TCPDF的添加字体工具(tools/tcpdf_addfont.php)

    使用方法:
    命令行,进入到字体所在路径,分两次输入命令

    php ../TCPDF/tools/tcpdf_addfont.php  -t CID0CS -i msyh.ttf
    php ../TCPDF/tools/tcpdf_addfont.php  -t CID0CS -i msyhbd.ttf
    

    注意切换成,你的路径

    显示如下,即为成功
    在这里插入图片描述
    首先,试一下没有加粗的
    代码如下:

    require_once('./TCPDF/tcpdf.php');
    $pdf = new \TCPDF();
    
    $pdf->AddPage();
    $html = "<p><b>hello world </b>你好世界</p>";
    
    $pdf->writeHTML($html);
    echo $pdf->Output('test.pdf', 'I');
    

    只是输入到浏览器,发现有加粗效果,但是保存后本地查看又没有了加粗效果。
    在这里插入图片描述在这里插入图片描述开启加粗效果

    require_once('./TCPDF/tcpdf.php');
    $pdf = new \TCPDF();
    
    //设置字体 stsongstdlight支持中文
    $pdf->SetFont('msyh', '', 10);
    
    $pdf->AddPage();
    $html = "<p><b>hello world </b>你好世界</p>";
    
    $pdf->writeHTML($html);
    // 浏览器预览且保存本地
    echo $pdf->Output(dirname(__FILE__) . '/test.pdf', 'FI');
    

    下载后的文件
    在这里插入图片描述

    五、TCPDF的扩展

    		// 设置文档信息
            $pdf->SetCreator('测试PDF');
            $pdf->SetAuthor('YJL');
            $pdf->SetTitle('测试PDF');
            $pdf->SetSubject('测试PDF');
            
            // 去掉默认的页头页脚。比如那个横线
            $pdf->setPrintHeader(false);
            $pdf->setPrintFooter(false);
            $pdf->setFontSubsetting(false);
            
            // 设置间距 页面间隔
            $pdf->SetMargins(10, 5, 10, true);
            
            //设置字体 
            $pdf->SetFont('msyh', '', 10);
            
    		// 设置自动分页 距离底部多少进行分页
            $pdf->SetAutoPageBreak(true, '5');
    
    展开全文
  • php TCPDF 生成pdf文件

    2022-02-09 16:21:59
    github:https://github.com/tecnickcom/TCPDF composer require tecnickcom/tcpdf /*新建一个pdf文件: Orientation:orientation属性用来设置文档打印格式是“Portrait”还是“Landscape”。 Landscape为横式打印...

    github:https://github.com/tecnickcom/TCPDF

     composer require tecnickcom/tcpdf

      /*新建一个pdf文件:

           Orientation:orientation属性用来设置文档打印格式是“Portrait”还是“Landscape”。 Landscape为横式打印,Portrait为纵向打印

           Unit:设置页面的单位。pt:点为单位,mm:毫米为单位,cm:厘米为单位,in:英尺为单位

           Format:设置打印格式,一般设置为A4

           Unicode:为true,输入的文本为Unicode字符文本

           Encoding:设置编码格式,默认为utf-8

           Diskcache:为true,通过使用文件系统的临时缓存数据减少RAM的内存使用。 */

           $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);

           //设置文件信息

           $pdf->SetCreator(PDF_CREATOR);

           $pdf->SetAuthor("jmcx");

           $pdf->SetTitle("pdf test");

           $pdf->SetSubject('TCPDF Tutorial');

           $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

           //删除预定义的打印 页眉/页尾

           $pdf->setPrintHeader(false);

           $pdf->setPrintFooter(false);

           //设置默认等宽字体

           $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

           /*设置页面边幅:

           Left:左边幅

           Top:顶部边幅

           Right:右边幅

           Keepmargins:为true时,覆盖默认的PDF边幅。 */

           $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP,PDF_MARGIN_RIGHT);

           /*设置单元格的边距:

           Left:左边距

           Top:顶部边距

           Right:右边距

           Bottom:底部边距。*/

           $pdf->setCellPaddings(0, 0, 0, 0);

           //GetX获得当前的横坐标,GetY获得当前的纵坐标。

    //       $pdf->GetX();

    //       $pdf->GetY();

           /*移动坐标。SetX移动横坐标。 SetY,横坐标自动移动到左边距的距离,然后移动纵坐标。SetXY,移动横坐标跟纵坐标:

           X:横坐标,可设为$pdf->GetX()+数字

           Y:纵坐标,可设为$pdf->GetY()+数字

           Rtloff:true,左上角会一直作为坐标轴的原点

           Resetx:true,重设横坐标。 */

    //       $pdf->SetX($x, $rtloff=false);

    //       $pdf->SetY($y, $resetx=true, $rtloff=false);

    //       $pdf->SetXY($x, $y, $rtloff=false)

           /*设置线条的风格:

           Width:设置线条粗细

           Cap:设置线条的两端形状

           Join:设置线条连接的形状

           Dash:设置虚线模式

           Color:设置线条颜色,一般设置为黑色,如:array(0, 0, 0)。*/

           $pdf->SetLineStyle(array('width' => 0.2, 'cap' => 'butt', 'join' => 'miter', 'dash' => '0', 'color' => array(0, 0,0)));

           /*画一条线:

           x1:线条起点x坐标

           y1:线条起点y坐标

           x2:线条终点x坐标

           y2:线条终点y坐标

           style:SetLineStyle的效果一样

           */

    //       $pdf->Line($x1, $y1, $x2, $y2, $style=array());

           /*执行一个换行符,横坐标自动移动到左边距的距离,纵坐标换到下一行:

           H:设置下行跟上一行的距离,默认的话,高度为最后一个单元格的高度

           Cell:true,添加左或右或上的间距到横坐标。 */

    //       $pdf->Ln($h='', $cell=false);

           //设置自动分页符

           $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

           //设置图像比例因子

           $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

           //设置一些语言相关的字符串

    //       $pdf->setLanguageArray("xx");

           /*设置字体:

    字体类型(如helvetica(Helvetica)黑体,times (Times-Roman)罗马字体)、风格(B粗体,I斜体,underline下划线等)、字体大小 */

           $pdf->SetFont('times', 'I', 20);

           /*增加一个页面:

           Orientation:orientation属性用来设置文档打印格式。 Landscape为横式打印,Portrait为纵向打印。

           Format:设置此页面的打印格式。

           Keepmargins:true,以当前的边幅代替默认边幅来重写页面边幅。

           Tocpage:true,所添加的页面将被用来显示内容表。*/

           $pdf->AddPage();

           /*设置单行单元格:

           W:设置单元格的宽

           H:设置单元格的高

           Text:单元格文本

           Border:设置单元格的边框。0,无边框,1,一个框,L,左边框,R,右边框,B, 底边框,T,顶边框,LTRB指四个边都显示

           Ln:0,单元格后的内容插到表格右边或左边,1,单元格的下一行,2,在单元格下面

           Align:文本位置。L,左对齐,R,右对齐,C,居中,J,自动对齐

           Fill:填充。false,单元格的背景为透明,true,单元格必需被填充

           Link:设置单元格文本的链接。*/

           $pdf->Cell(0, 10, 'test', 1, 1, 'C');

           /*设置多行单元格。注意跟Cell的参数位置有些差别,Cell是用来输出单行文本的,MultiCell就能用来输出多行文本

           W:设置多行单元格的宽

           H: 设置多行单元格的单行的高

           Text:文本

           Border:边框

           Align:文本位置

           Fill:填充

           Ln:0,单元格后的内容插到表格右边或左边,1,单元格的下一行,2,在单元格下面

           X:设置多行单元格的行坐标

           Y:设置多行单元格的纵坐标

           Reseth:true,重新设置最后一行的高度

           Stretch:调整文本宽度适应单元格的宽度

           Ishtml:true,可以输出html文本,有时很有用的

           Autopadding:true,自动调整文本与单元格之间的距离

           Maxh:设置单元格最大的高度

           Valign:设置文本在纵坐标中的位置,T,偏上,M,居中,B,偏下

           Fillcell:自动调整文本字体大小来适应单元格大小。 */

    //       $pdf->MultiCell($w, $h, $txt, $border=0, $align='J',$fill=false, $ln=1, $x='', $y='',  $reseth=true, $stretch=0,$ishtml=false, $autopadding=true, $maxh=0, $valign='T', $fitcell=false);

           // setCellHeightRatio设置单元格行高,可以引用此函数调整行与行的间距。SetLineWidth设置线条宽度。

    //       $pdf->setCellHeightRatio($h);

    //       $pdf->SetLineWidth($width);

           /*在PDF中,插入图片,参数列表如下;

           File:图片路径。

           X:左上角或右上角的横坐标。

           Y:左上角或右上角的纵坐标。

           W:设置图片的宽度,为空或为0,则自动计算。

           H:设置图片的高度,为空或为0,则自动计算。

           Type:图片的格式,支持JPGE,PNG,BMP,GIF等,如果没有值,则从文件的扩展名中自动找到文件的格式。

           Link:图片链接。

           Align:图片位置。

           Resize:true,调整图片的大小来适应宽跟高;false,不调整图片大小;2,强制调整。

           Dpi:以多少点每英寸来调整图片大小。

           Palign:图片位置,L,偏左,C,居中,R,偏右

           Imgmask:true,返回图像对象。

           Border:边框。

           Fitbox:调整适合大小。

           Hidden:true,隐藏图片。

           Fitonpage:如果为true,图像调整为不超过页面尺寸。 */

           $pdf->Image('../img/test.png');

           /*输出HTML文本:

           Html:html文本

           Ln:true,在文本的下一行插入新行

           Fill:填充。false,单元格的背景为透明,true,单元格必需被填充

           Reseth:true,重新设置最后一行的高度

           Cell:true,就调整间距为当前的间距

           Align:调整文本位置。 */

          $pdf->writeHTML("<div><label>hah<strong>aha</strong></label><br/></div>");

           /*用此函数可以设置可选边框,背景颜色和HTML文本字符串来输出单元格(矩形区域)

           W:设置单元格宽度。0,伸展到右边幅的距离

           H:设置单元格最小的高度

           X:以左上角为原点的横坐标

           Y:以左上角为原点的纵坐标

           Html:html文本

           Border:边框

           Ln:0,单元格后的内容插到表格右边或左边,1,单元格的下一行,2,在单元格下面

           Fill:填充

           Reseth:true,重新设置最后一行的高度

           Align:文本的位置

           Autopadding:true,自动调整文本到边框的距离。 */

           $pdf->writeHTMLCell();

           /*输入PDF文档 :

           Name:PDF保存的名字

           Dest:PDF输出的方式。I,默认值,在浏览器中打开;D,点击下载按钮, PDF文件会被下载下来;F,文件会被保存在服务器中;S,PDF会以字符串形式输出;E:PDF以邮件的附件输出。 */

           return $pdf->Output("test001.pdf", "F");

    代码  

    注:tp框架需要把《应用调节模式》关掉否则页面无法体现效果

     

        /**
         * @Notes   (备注):申请退房
         * @Author  (作者):seven
         * @Date    (时间):2022/2/9 16:18
         * @Name    (名称):getCheckOutApplication
         */
       public function getCheckOutApplication(){
           $param = input('post.');
           if(!isset($param['sign']) && empty($param['sign'])){
               return $this->ajaxReturn([API_CODE_NAME => 1000001,          API_MSG_NAME => '缺少签名']);
           }
           $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
           //工具
           $pdf->SetCreator(PDF_CREATOR);
           //作者
           $pdf->SetAuthor('XinEnHua');
           //标题
           $pdf->SetTitle('申请退房');
           $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
           $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);
    
           $pdf->setPrintHeader(false); //设置打印页眉
           $pdf->setPrintFooter(false); //设置打印页脚
           $pdf->AddPage();
           $pdf->Image(APP_PATH."/../public/static/admin/img/logo1.png",15,5,50,12);
           /*设置字体:字体类型(如helvetica(Helvetica)黑体,times (Times-Roman)罗马字体)、风格(B粗体,I斜体,underline下划线等)、字体大小 */
           $pdf->SetFont('msyh', 'B', 15);
           $pdf->MultiCell(160, 5, '鉴于甲方__________________________________________________________', 0, 'L', 0, 0, 25, 25, true, 0, false, true, 8, true, true);
           $pdf->MultiCell(160, 5, $param['first_party']??"", 0, 'C', 0, 0, 0, 25, true, 0, false, true, 8, true, true);
    
           $pdf->MultiCell(160, 5, '与乙方_____________________________________________________________', 0, 'L', 0, 0, 25, 36, true, 0, false, true, 8, true, true);
           $pdf->MultiCell(160, 5, $param['b_party']??"", 0, 'C', 0, 0, 0, 36, true, 0, false, true, 8, true, true);
    
           $pdf->MultiCell(160, 5, '签订的《场地租赁与孵化协议书》原合同期限自____________________', 0, 'L', 0, 0, 25, 47, true, 0, false, true, 8, true, true);
           $pdf->MultiCell(160, 5, $param['start_time']??"", 0, 'C', 0, 0, 80, 47, true, 0, false, true, 8, true, true);
    
           $pdf->MultiCell(160, 5, '至____________________,现由于乙方__________________________等原因', 0, 'L', 0, 0, 25, 57, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['start_time']??"", 0, 'L', 0, 0, 40, 57, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['reason']??"", 0, 'L', 0, 0, 110, 57, true, 0, false, true, 8, 'M', true);
    
           $pdf->MultiCell(160, 5, '向甲方申请提前终止房屋使用。经甲方同意,乙方于________________', 0, 'L', 0, 0, 25, 67, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['application_time']??"", 0, 'L', 0, 0, 150, 67, true, 0, false, true, 8, 'M', true);
    
           $pdf->MultiCell(160, 5, '提出退房申请,乙方的正式房屋结算日为__________________________', 0, 'L', 0, 0, 25, 77, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['settlement_time']??"", 0, 'L', 0, 0, 135, 77, true, 0, false, true, 8, 'M', true);
    
           $pdf->MultiCell(160, 5, '(即乙方提出本申请之日起45个自然日后为正式退租结算日)', 0, 'L', 0, 0, 25, 87, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '根据原合同第九部分之规定,乙方须按照合同总价款(包含但不限于', 0, 'L', 0, 0, 25, 97, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '租金、物业服务费、孵化服务费及其他费用)的【百分之十五】向甲', 0, 'L', 0, 0, 25, 107, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '方支付违约金,违约金额合计___________元', 0, 'L', 0, 0, 25, 117, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['price']??"", 0, 'C', 0, 0, 28, 117, true, 0, false, true, 8, 'M', true);
    
           $pdf->MultiCell(160, 5, '注:使用房屋注册地址的客户,继续使用注册地址,房屋租赁合同终', 0, 'L', 0, 0, 25, 141, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '止之日起签署《企业孵化与企业托管服务协议书》;如不使用请于申', 0, 'L', 0, 0, 25, 151, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '请退房起30日内办理公司迁址或注销,办理成功后请于____________', 0, 'L', 0, 0, 25, 161, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, $param['processing_time']??"", 0, 'L', 0, 0, 153, 161, true, 0, false, true, 8, 'M', true);
    
           $pdf->MultiCell(160, 5, '前将企业新地址营业执照交于我处继续办理后续退房手续,逾期不办理', 0, 'L', 0, 0, 25, 171, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '我方将向有关部门提交地址证明材料,证明贵企业实际已搬离,剩余退款', 0, 'L', 0, 0, 25, 181, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '甲方视作乙方放弃领取,逾期不再办理房屋结算。由此产生的后果由乙方', 0, 'L', 0, 0, 25, 191, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(160, 5, '承担,甲方概不负责。', 0, 'L', 0, 0, 25, 201, true, 0, false, true, 8, 'M', true);
           $pdf->MultiCell(185, 15, '公司/负责人签字:', 0, 'L', 0, 0, 25, 230, true, 0, false, true, 8, 'M', true);
           $pdf->Image(APP_PATH."/../public"."/upload/house/settled/sign/20210901/1630467941.jpeg",80,230,60,12);
    //       $pdf->Image(APP_PATH."/../public".$param['sign'],80,230,60,12);
    
           $pdf->MultiCell(185, 15, '申请日期:'.date('Y-m-d'), 0, 'L', 0, 0, 25, 250, true, 0, false, true, 8, 'M', true);
           $contract_url = 'upload/housing/finished/'.date('Ymd').'/';
           if (!file_exists($contract_url)) {
               mkdir($contract_url, 0777, true);
           }
           $contract_name = 'applyoccupancy'.mt_rand(1000000, 9999999).'.pdf';
    //       $pdf->Output('aaaa.pdf', 'I');//I打印
           $pdf->Output($_SERVER['DOCUMENT_ROOT'].$contract_url.$contract_name, 'F');
       }

    效果图

    展开全文
  • composer require tecnickcom/tcpdf https://github.com/tecnickcom/tcpdf 直接下载 官网地址 : http://www.tcpdf.org 如下效果: 二、开发代码 html 生成pdf html样式格式可以参考官网案例 ...

    利用Tcpdf生成pdf,使用 html标签,生成 pdf

    一、 拉取扩展代码
    使用 composer 拉取

    composer require tecnickcom/tcpdf
    

    https://github.com/tecnickcom/tcpdf 直接下载

    官网地址 : http://www.tcpdf.org

    如下效果:在这里插入图片描述

    二、开发代码 html 生成pdf
    html样式格式可以参考官网案例 https://tcpdf.org/examples/

    require_once(dirname(dirname(__FILE__)) . '/sdk/tcpdf.php'); //记得引入
    
     public function createPdf($pdf_name,$data=[],$type=1)
        {
            if(empty($pdf_name)){
                $pdf_name = md5(microtime());
            }
            $pdf_name = $pdf_name;
            $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);
    		// 设置文档信息
    		$pdf->SetCreator('hello world');
    		$pdf->SetAuthor('hello world');
    		$pdf->SetTitle('hello world');
    		$pdf->SetSubject('TCPDF Tutorial');
    		$pdf->SetKeywords('TCPDF, PDF, PHP');
    		// 设置页眉和页脚信息
    //		$pdf->SetHeaderData('logo.png', 30, 'Helloweba.com', '致力于WEB前端技术在中国的应用', array(0,64,255), array(0,64,128));
    		$pdf->setFooterData(array(0,64,0), array(0,64,128));
    		// 设置页眉和页脚字体
    		$pdf->setHeaderFont(Array('stsongstdlight', '', '10'));
    		$pdf->setFooterFont(Array('helvetica', '', '8'));
    		// 设置默认等宽字体
    		$pdf->SetDefaultMonospacedFont('courier');
    		// 设置间距
    		$pdf->SetMargins(15, 27, 15);
    		$pdf->SetHeaderMargin(5);
    		$pdf->SetFooterMargin(10);
    		// 设置分页
    		$pdf->SetAutoPageBreak(TRUE, 25);
    		// set image scale factor
    		$pdf->setImageScale(1.25);
    		// set default font subsetting mode
    		$pdf->setFontSubsetting(true);
    		//设置字体
    		$pdf->SetFont('stsongstdlight', '', 14);//可以设置自己中意字体
    		$pdf->AddPage();
    		$str1 = $this->getHtml($pdf_name,$data,$pdf);
            $pdf->writeHTML($str1, true, false, true, false, '');
    
            //输出PDF
            ob_clean();
            $pdf_path = ROOT_PATH .'public/pdf/'.$pdf_name.'.pdf';
            $pdf_png_path = ROOT_PATH .'publi/pdf/png/'.$pdf_name.'.png';
           
          
            $pdf->Output($pdf_path, 'F'); //I:将文件内联发送到浏览器(默认)。如果可用,则使用插件。当在生成PDF的链接上选择“另存为”选项时,使用name指定的名称。D:发送到浏览器并强制使用name指定的名称下载文件。F: 以指定的名称保存到本地服务器文件。S:以字符串形式返回文档(忽略名称)。FI:等效于F + I选项FD:等效于F + D选项E:返回文档为base64 mime多部分电子邮件附件(RFC 2045) 
    
            $this->pdf2png($pdf_path,$pdf_png_path);
            return array($pdf_url,$pdf_png_url);
    
        }
    
    //获取html样式
    public funcitoin getHtml(){
    	$html = '<h1>HTML Example</h1>
    	Some special characters: &lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt; \\slash \\\\double-slash \\\\\\triple-slash
    	<h2>List</h2>
    	List example:
    	<ol>
    	    <li><img src="images/logo_example.png" alt="test alt attribute" width="30" height="30" border="0" /> test image</li>
    	    <li><b>bold text</b></li>
    	    <li><i>italic text</i></li>
    	    <li><u>underlined text</u></li>
    	    <li><b>b<i>bi<u>biu</u>bi</i>b</b></li>
    	    <li><a href="http://www.tecnick.com" dir="ltr">link to http://www.tecnick.com</a></li>
    	    <li>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.<br />Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.</li>
    	    <li>SUBLIST
    	        <ol>
    	            <li>row one
    	                <ul>
    	                    <li>sublist</li>
    	                </ul>
    	            </li>
    	            <li>row two</li>
    	        </ol>
    	    </li>
    	    <li><b>T</b>E<i>S</i><u>T</u> <del>line through</del></li>
    	    <li><font size="+3">font + 3</font></li>
    	    <li><small>small text</small> normal <small>small text</small> normal <sub>subscript</sub> normal <sup>superscript</sup> normal</li>
    	</ol>
    	<dl>
    	    <dt>Coffee</dt>
    	    <dd>Black hot drink</dd>
    	    <dt>Milk</dt>
    	    <dd>White cold drink</dd>
    	</dl>
    	<div style="text-align:center">IMAGES<br />
    	<img src="images/logo_example.png" alt="test alt attribute" width="100" height="100" border="0" /><img src="images/tcpdf_box.svg" alt="test alt attribute" width="100" height="100" border="0" /><img src="images/logo_example.jpg" alt="test alt attribute" width="100" height="100" border="0" />
    	</div>';
    	return $html;
    
    }
    
    
    

    也可以使用其他形式,生成 pdf,有兴趣的同学可以尝试一下
    在这里插入图片描述

    三、使用 Imagick 将 pdf 生成 png
    根据介绍安装一下php扩展 https://www.php.net/manual/zh/book.imagick.php

    在这里插入图片描述

     //pdf合并转换一张图片 from_path pdf来源地址(绝对地址) target_path 图片存储地址 (绝对地址)
        public  function pdf2png($from_path,$target_path)
        {
     
            try {
                $img =  new \Imagick();
                $img->setCompressionQuality(100);
                $img->setResolution(120, 120);
                $img->readImage($from_path);
    
                $canvas = new \Imagick();
                $imgNum = $img->getNumberImages();
                foreach ($img as $k => $sub) {
                    $sub->setImageFormat('png');
                    $sub->stripImage();
                    $sub->trimImage(0);
                    $width = $sub->getImageWidth() + 10;
                    $height = $sub->getImageHeight() + 10;
                    if ($k + 1 == $imgNum) $height += 10;
                    $canvas->newImage($width, $height, new \ImagickPixel('white'));
                    $canvas->compositeImage($sub, \Imagick::COMPOSITE_DEFAULT, 5, 5);
                }
    
                $canvas->resetIterator();
                $canvas->appendImages(true)->writeImage($target_path);
                return $target_path;
             } catch (Exception $e) {
                echo $e->getMessage();
                echo $e->getTraceAsString();
                return false;
            }
        }
    

    四、注意事项

    1、使用 Tcpdf html生成 pdf时,注意一下html的样式问题,不支持外部css样式

    2、使用 Tcpdf html生成 pdf时,注意一下html的样式问题, 你看到html不一定能生成正常html哦!

    3、Imagick 安装时,一定要注意检查是否安装成功,否则会有报错信息,不能正常使用

    展开全文
  • 2021年6月18日10:50:25 官方文档https://tcpdf.org/examples/example_052/ ... - To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out...
  • 项目需要把html 页面转换成pdf,并带图片,这个文件可以完美解决
  • } require_once VENDOR_PATH.'tcpdf/tcpdf.php'; $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // 设置打印模式 $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor...
  • php TCPDF 输出表格到pdf

    2020-11-09 14:08:28
    $pdf->Output($title, 'D');//默认是I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串 遇到的问题: $pdf->... 输出页面,没有自动适应 A4 尺寸的高度.... /** A4纸是 210x297 mm, 250是...
  • php代码-tcpdf

    2021-07-15 02:40:53
    php代码-tcpdf
  • tcpdf最新版本 6.2

    2016-06-13 12:35:10
    因为访问不到sourceforge,找了很多办法,终于下载到了最新的tcpdf,需要的小伙伴自行下载
  • 压缩包 : tcpdf_6_2_13.zip 列表tcpdf/tcpdf/tools/tcpdf/tools/tcpdf_addfont.phptcpdf/tools/convert_fonts_examples.txttcpdf/tools/.htaccesstcpdf/CHANGELOG.TXTtcpdf/tcpdf_import.phptcpdf/LICENSE.TXTtcpdf/...
  • php tcpdf error

    千次阅读 2016-04-21 11:05:37
    Warning: FPDF::include(helveticab.php) [function.FPDF-include]: failed to open stream: No such file or directory Warning: FPDF::include() [function.include]: Failed opening 'helveticab....
  • php图片添加水印例子

    2020-10-21 21:51:46
    主要为大家分享了一段php图片添加水印例子,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • TCPDF页面生成PDF

    2017-12-30 14:02:19
    PHP代码实现网页转为PDF,可添加新字体,支持图片、背景图、简单的css,包含ttf2ufm.exe和php.exe文件
  • php 使用tcpdf库输出pdf

    2021-03-25 11:07:06
    试了几种其他的插件,总是搞不定编码问题,用这个成功了require_once('./tcpdf/tcpdf.php'); //引入库文件//实例化$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);// 设置文档信息$pdf->SetCreator('...
  • PHP TCPDF heredoc

    2015-10-01 10:08:15
    <p>I got this in my heredoc in my TCPDF. I basically want to create a dynamic pdf with the data of my database. <pre><code> $html = <<<EOD <table border="1"> <thead> <tr>...
  • 最近在项目中遇到了导出PDF的功能,导出过程中也遇到了好几个奇葩bug,经过查找资料,终于完成了...1、下载TCPDF库 我们可以通过composer或者其他途径下载,这里是我下载的库:点击下载 阅读原文:原文链接 ...
  • PHP使用tcpdf类生成PDF文件龙行PHP2019-5-644420评论使用pctdf生成的pdf文件可以插入图片、HTML、链接、表格、柱状图折线图等PHP动态生成PDF的功能。require_once './tcpdf/tcpdf.php';//实例化$content = '我是一个...
  • 1. composer 安装安装命令:composer require tecnickcom/tcpdf2. 使用
  • 我正在使用TCPDF来创建简单的pdf文档.我正在创建一个页面并使用下面的代码添加链接$pdf->addTOCPage();$link = $pdf->AddLink();$pdf->SetLink($link, 0, -1);现在链接设置成功.但是要导航到该页面我应该...
  • 我想在我的代码中使用tcpdf库....和另一个php文件:index.php,其中包含我的主要代码.只是它 !在我的浏览器中,当我输入:loclhost / mysite时,它会给我一个无法填充文件的错误:tcpdf_include.我相...
  • 分享一个php给图片添加水印的类,支持水印图片,调用方式:  先包含类文件  然后实例化类:  $img = new Images;  然后提供图片:  $img->imgpath(原图片路径及名称,水印图片路径及名称);  之后开始加...
  • 特意找到这个tcpdf。下载的地址搞一个试试中文字体包下载%20Sans%20Fallback%20-%20PHP.zip/download下载后,将它解压放在droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文...
  • TCPDF:用于生成PDF文档的开源PHP

    千次阅读 2021-04-10 12:21:11
    要在PHP项目中添加生成PDF文档的功能,开源类库TCPDF无疑是最好的选择。个人感觉它最大的优点是能将HTML式的字符串直接用于生成PDF,也就是说能够通过HTML来定好文档的式和内容,然后用TCPDF导出PDF文件。 TCPDF的...
  • php中pdf生成类TCPDF.zip

    2019-12-17 14:17:24
    php中pdf生成类。
  • 我正在使用TCPDF,目前我使用array_chunk在两列中列出数据工作正常.但是我需要在第一列中显示数据,然后在第二列中显示数据,请参见下文:Currently:1 23 45 67 89 10Should be:1 62 73 84 95 10这是代码:} ?>我的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,447
精华内容 578
关键字:

php tcpdf