php生成PDF文件

该PHP代码实现了一个将HTML内容转换为PDF的控制器。它使用TCPDF库,设置了页面元数据、作者、标题、主题和关键词,并定义了页眉和页脚。HTML内容包括段落、链接、图片和表格,还展示了浮动元素和居中对齐的图像。代码支持自定义字体,可以添加多页并调整页边距和自动分页。
摘要由CSDN通过智能技术生成
<?php
declare (strict_types=1);

namespace App\Http\Controllers;

define ('K_PATH_IMAGES', ''); //文件目录定义
require_once(realpath(dirname(__FILE__) . '/../../../vendor/tecnickcom/tcpdf/tcpdf.php'));

use TCPDF;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //html转pdf
    function pdf(Request $request)
    {
        $stsongstdlight = 'stsongstdlight';//中文字体

        global $l;
        $l = Array();

        // PAGE META DESCRIPTORS --------------------------------------
        $l['a_meta_charset'] = 'UTF-8';
        $l['a_meta_dir'] = 'ltr';
        $l['a_meta_language'] = 'cn';
        // TRANSLATIONS --------------------------------------
        $l['w_page'] = '页面';

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

        // 设置文档信息
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('我是作者:山猫');
        $pdf->SetTitle('我是标题');
        $pdf->SetSubject('我是主题');
        $pdf->SetKeywords('我是关键字');

        // 是否显示页眉
        //$pdf->setPrintHeader(false);
        // 是否显示页脚
        //$pdf->setPrintFooter(false);

        // 默认页眉数据
        // 文字,和分割线颜色RGB
        // 本地图片
        $pdf->SetHeaderData('logo.jpg', 30, '山猫001', "我们是山猫团队\nhttps://www.baidu.com", [0, 0,0], [0, 0,0]);

        // 设置页眉和页脚字体array(family, style, size)
        $pdf->setHeaderFont(Array($stsongstdlight, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array($stsongstdlight, '', PDF_FONT_SIZE_DATA));

        // 设置默认等宽字体
        $pdf->SetDefaultMonospacedFont($stsongstdlight);

        // 页眉距离顶部的距离
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        // 设置是否自动分页  距离底部多少距离时分页
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        // 设置图像比例因子
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

        $pdf->setLanguageArray($l);


        // 设置字体
        $pdf->SetFont($stsongstdlight, '', 10);

        $pdf->AddPage(); //首页

        // writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='')
        // writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true)

        $html = <<<EOF
        <p>111你家娃儿还在熬油点灯卷分数吗?近日发表的一项研究提醒,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展</p>
        <p>2222你家娃儿还在熬油点灯卷分数吗?近日发表的一项研究提醒,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展</p>
        <p>2222你家娃儿还在熬油点灯卷分数吗?近日发表的一项研究提醒,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展,<a href="https://www.baidu.com"> 点击去百度 </a></p>
        <p style="text-align: center"><img style="width: 150px;height: auto;" src="https://www.jyeyw.com/index/img/logo.jpg"/></p>
        <p style="text-align: center">
            <table style="border: 2px solid #0000ff">
              <tr style="border: 2px solid #0000ff">
                <th style="border: 2px solid #0000ff">tile</th>
                <th style="border: 2px solid #0000ff">Address</th>
              </tr>
              <tr style="border: 2px solid #0000ff">
                <td style="border: 2px solid #0000ff">tile</td>
                <td style="border: 2px solid #0000ff">Address</td>
              </tr>
            </table>
        </p>

        <div>
            <div style="float: left">左右<div>
            <div style="float: right;">左右<div>
        <div>
        <div>
            <div style="margin-left: 200px;">左右<div>
        <div>
EOF;

        $pdf->writeHTML($html);

        $html = <<<EOF
        <p style="text-align: center"><img style="width: 150px;height: auto;" src="https://www.jyeyw.com/index/img/logo.jpg"/></p>
        <p style="text-align: center">
            <table style="border: 2px solid #0000ff">
              <tr style="border: 2px solid #0000ff">
                <th style="border: 2px solid #0000ff">tile</th>
                <th style="border: 2px solid #0000ff">Address</th>
              </tr>
              <tr style="border: 2px solid #0000ff">
                <td style="border: 2px solid #0000ff">tile</td>
                <td style="border: 2px solid #0000ff">Address</td>
              </tr>
            </table>
        </p>
EOF;
        $pdf->AddPage();//分页
        $pdf->writeHTMLCell(0, 0, '', '',  $html, 'LRTB', 1, 0, true, 'L', true);
        $pdf->lastPage();

        $pdf->AddPage();//分页

        $html = <<<EOF
        <p>11你家娃儿还在熬油点灯卷分数吗?近日发表的一项研究提醒,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展,儿童缺乏睡眠会持续损害大脑健康及认知能力的发展</p>
EOF;
        //输出html
        $pdf->writeHTML($html);
        // reset pointer to the last page
        $pdf->lastPage();
        // reset pointer to the last page
        //$pdf->lastPage();

        //Output($name='doc.pdf', $dest='I')
        //$dest I 发送到浏览器
        //$dest D 发送到浏览器,直接下载
        //$dest F 保存本地
        //$dest E base64
        //$pdf->Output('/ee/example_006.pdf', 'F');
        $pdf->Output('下载名.pdf', 'I');


   
    }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值