当前位置: 技术文章>> PHP 如何创建 PDF 文件?

文章标题:PHP 如何创建 PDF 文件?
  • 文章分类: 后端
  • 9000 阅读

在PHP中创建PDF文件是一个常见需求,尤其是在需要自动化报告生成、发票、证书或其他文档处理的场景中。PHP自身并不直接支持PDF文件的创建,但幸运的是,我们可以通过集成一些强大的第三方库来实现这一功能。在本文中,我们将探讨几种在PHP中创建PDF文件的常用方法,并详细介绍如何使用这些库来生成高质量的PDF文档。

1. 选择合适的PDF库

在PHP生态系统中,有多个库可以帮助我们生成PDF文件,其中最为流行的几个包括FPDF、TCPDF和Dompdf。每个库都有其独特的优点和适用场景:

  • FPDF:一个轻量级的PDF生成库,易于上手,适用于简单的PDF文档生成。
  • TCPDF:基于FPDF,但提供了更多的功能和更高级的PDF特性支持,如Unicode、书签、水印等。
  • Dompdf:能够将HTML内容渲染成PDF文件,非常适合需要将动态生成的HTML内容转换为PDF的场景。

2. 使用FPDF生成PDF

首先,让我们从最简单的FPDF库开始。FPDF是一个免费的PHP类库,用于生成PDF文件。要使用FPDF,你需要先从其官方网站下载库文件,并包含到你的项目中。

步骤1:包含FPDF库

require('fpdf.php');

步骤2:创建一个继承自FPDF的类

class PDF extends FPDF
{
    // 页面头
    function Header()
    {
        // Logo
        $this->Image('logo.png',10,8,30);
        // Arial bold 15
        $this->SetFont('Arial','B',15);
        // 移动指针到右侧
        $this->Cell(80);
        // 标题
        $this->Cell(30,10,'码小课教程',1,0,'C');
        // 换行
        $this->Ln(20);
    }

    // 页面脚注
    function Footer()
    {
        // 位置
        $this->SetY(-15);
        // Arial italic 8
        $this->SetFont('Arial','I',8);
        // 页面号
        $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    }

    // 简单的页面内容
    function ChapterBody($num)
    {
        if($num==1)
            $this->Cell(0,10,'Hello world!',0,1);
        else
            $this->Cell(0,10,'Welcome to the world of FPDF!',0,1);
    }

    // 示例页面
    function Chapter1()
    {
        $this->ChapterBody(1);
        $this->Ln();
        $this->Image('logo.png',10,26,30);
    }
}

// 创建PDF对象
$pdf = new PDF();
$pdf->AddPage();
$pdf->Chapter1();
$pdf->Output();

上述代码创建了一个简单的PDF文档,其中包含了一个标题、一个图片和一些文本。通过扩展FPDF类,我们可以轻松定义自己的页面布局和内容。

3. 使用TCPDF生成PDF

TCPDF是FPDF的一个扩展,提供了更多的功能和更强大的配置选项。使用TCPDF与FPDF类似,但TCPDF的API更加丰富。

安装TCPDF

与FPDF类似,你需要从TCPDF的官方网站下载库文件,并将其包含到你的项目中。

示例代码

require_once('tcpdf_include.php');

// 创建一个新的PDF文档
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// 设置文档信息
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('TCPDF Example');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// 移除默认的页眉和页脚
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// 添加一个页面
$pdf->AddPage();

// 设置字体
$pdf->SetFont('helvetica', '', 12);

// 添加文本
$pdf->Write(0, 'Hello World!', '', 0, 'L', true, 0, false, false, 0);

// 输出PDF
$pdf->Output('example_001.pdf', 'I');

在这个例子中,我们创建了一个PDF文档,并添加了简单的文本内容。TCPDF支持更多的字体、颜色和图像类型,允许你创建更复杂的PDF文档。

4. 使用Dompdf将HTML转换为PDF

如果你的应用场景需要将HTML内容(比如动态生成的网页)转换为PDF,那么Dompdf是一个非常好的选择。Dompdf是一个基于CSS 2.1的HTML渲染引擎,它可以将HTML和CSS转换为PDF文件。

安装Dompdf

你可以通过Composer来安装Dompdf:

composer require dompdf/dompdf

示例代码

require_once "vendor/autoload.php";

use Dompdf\Dompdf;

// 实例化Dompdf
$dompdf = new Dompdf();

// 加载HTML内容
$html =
    '<html><body>' .
    '<h1>Welcome to CodeXiaoke</h1>' .
    '<p>This is a test PDF document generated by Dompdf.</p>' .
    '</body></html>';

$dompdf->loadHtml($html);

// (可选)设置纸张大小和方向
$dompdf->setPaper('A4', 'portrait');

// 渲染PDF
$dompdf->render();

// 输出PDF到浏览器
$dompdf->stream("dompdf_out.pdf");

在这个例子中,我们创建了一个简单的HTML字符串,并将其加载到Dompdf对象中。然后,我们设置了纸张大小和方向,并渲染PDF。最后,我们通过stream方法将PDF发送到浏览器进行查看。

5. 结论

PHP中创建PDF文件的方法多种多样,选择哪种方法取决于你的具体需求和偏好。FPDF和TCPDF提供了强大的编程接口,允许你通过编写PHP代码来精确控制PDF的布局和内容。而Dompdf则适合那些需要将HTML内容转换为PDF的场景,它使得从网页到PDF的转换变得简单快捷。

无论你选择哪种方法,记得在实际项目中测试不同库的性能和兼容性,以确保它们能够满足你的需求。此外,随着技术的不断进步,新的库和工具也在不断涌现,所以保持对新技术的关注总是有益的。

希望这篇文章能帮助你理解在PHP中创建PDF文件的不同方法,并能在你的项目中成功应用。如果你有任何进一步的问题或需要更详细的示例,请随时访问码小课网站,我们将竭诚为你提供帮助。

推荐文章