PHP生成PDF

1.PHP的PDF-API

2.使用MPDF类生成PDF的方法

mPDF是一个PHP类,它可以从UTF-8编码的HTML生成PDF文件,它基于FPDF和HTML2FPDF,并具有许多增强功能。对于语言处理和UTF-8支持,mpdf优于FPDF。对于CJK支持,它不仅支持字体嵌入,而且支持字体子集(所以您的CJK PDF不会过大)。
$config = [
    // 支持中文设置 
    "autoScriptToLang" => true, 
    // 支持中文设置(中文乱码时,设置为true)
    "autoLangToFont" => true,
    "setAutoTopMargin" => "stretch",
    "setAutoBottomMargin" => "stretch",
    "autoMarginPadding" => 5,
    "margin_left" => 5,
    "margin_right" => 5
];
$mpdf = new \Mpdf\Mpdf($config);

// 设置页眉和页脚
$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLFooter($footer);
// 分两列写入
$mpdf->SetColumns(2);
$mpdf->WriteHTML($html);
// I'表示在线展示 'D'则显示下载窗口 'F'保存本地文件
$mpdf->Output('PDF的名称.pdf', 'I');

3.MPDF自定义字体

<?php
namespace App\Http\Controllers;

use Mpdf\Mpdf;
use Mpdf\Config\FontVariables;
use Mpdf\Config\ConfigVariables;

class ExampleController extends Controller
{
    public function readPDF()
    {
        // 字体文字所在目录
        $defaultConfig = (new ConfigVariables())->getDefaults();
        $fontDirs = $defaultConfig['fontDir'];
        
        // 配置的字体
        $defaultFontConfig = (new FontVariables())->getDefaults();
        $fontData = $defaultFontConfig['fontdata'];
        $mpdf = new Mpdf([
            // 配置自定义字体,“lt-liti”只能是小写,不然乱码
            'fontdata' => $fontData + [
                'st-liti' => [
                    'R' => '华文隶书.TTF',
                ]
            ],
            'default_font' => 'st-liti',
            // 设置下面两个值为false,方能启用自定义字体
            "autoScriptToLang"=>false,
            "autoLangToFont"=>false,
            "setAutoTopMargin"=>"stretch",
            "setAutoBottomMargin"=>"stretch",
            "autoMarginPadding"=>5,
            "margin_left" => 5,
            "margin_right" => 5
        ]);

4.MPDF相关文档

努力可以改变能力

266 声望
8 粉丝
0 条评论
推荐阅读
mysql查询数据时自动生成序号
方法一,声明一个外部变量,每行数据为它自增。 {代码...} 方法二,使用(@i:=@i+1) {代码...}

前端小菜阅读 324

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.8k评论 2

封面图
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。

煎鱼4阅读 2.2k

SpringBoot集成LibreOffice+jodconverter做文件预览(office转pdf)
LibreOffice 是一款开放源代码的自由免费全能办公软件,可运行于 Microsoft Windows, GNU/Linux 以及 macOS 等操作系统上。它包含了 Writer, Calc, Impress, Draw, Math 以及 Base 等组件,可分别用于文本文档、...

Zeran2阅读 6.3k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.5k

悬赏任务源码+开源威客系统网站源码+部署教程
威客悬赏任务发布系统源码是用来进行日常在线任务接单处理的威客系统。系统可以用来发布或处理悬赏任务,甚至可以知道一个帐户的信息,如任务类型和处理状态等,它们很方便,易于使用,它允许雇主和威客执行快速...

火爆的筷子1阅读 3.8k评论 1

我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1.7k

封面图

努力可以改变能力

266 声望
8 粉丝
宣传栏