可采用tcpdf、dompdf、mpdf或fpdf四种纯php方案将文件内容转pdf:tcpdf支持html/文本直接渲染;dompdf专注html/css解析;mpdf优化多语言与复杂排版;fpdf轻量但需手动处理文本布局。

如果您需要将PHP脚本读取的文件内容(如文本、HTML或结构化数据)转换为PDF格式并输出,可采用多种不依赖外部命令行工具的纯PHP方案。以下是实现此目标的具体操作步骤:
一、使用TCPDF库生成PDF
TCPDF是一个开源、纯PHP编写的PDF生成类库,支持从字符串、HTML片段直接渲染为PDF,无需外部二进制依赖。
1、通过Composer安装TCPDF:运行命令 composer require tecnickcom/tcpdf。
2、在PHP文件中引入TCPDF类:require_once 'vendor/autoload.php';。
立即学习“PHP免费学习笔记(深入)”;
3、读取目标文件内容:$content = file_get_contents('example.txt');。
4、初始化TCPDF对象并设置文档属性:$pdf = new TCPDF(); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false);。
5、将读取的内容写入PDF页面:$pdf->AddPage(); $pdf->writeHTML($content, true, false, true, false, ''); 。
6、输出PDF到浏览器:$pdf->Output('output.pdf', 'I');。
二、使用Dompdf库渲染HTML为PDF
Dompdf将HTML和CSS解析为PDF,适合处理含样式、表格或嵌入图像的HTML文件内容,支持UTF-8中文字符(需正确设置字体)。
1、通过Composer安装Dompdf:composer require dompdf/dompdf。
2、引入自动加载器与Dompdf核心类:require_once 'vendor/autoload.php'; use Dompdf\Dompdf;。
3、读取HTML格式的源文件:$html = file_get_contents('document.html');。
4、创建Dompdf实例并配置选项:$dompdf = new Dompdf(['enable_remote' => true]);。
5、加载HTML内容:$dompdf->loadHtml($html);。
6、设置纸张大小与方向:$dompdf->setPaper('A4', 'portrait');。
7、渲染并输出PDF:$dompdf->render(); $dompdf->stream('result.pdf');。
三、使用mpdf库处理多语言及复杂排版
mpdf专为多语言(含中文、阿拉伯文等)和CSS兼容性优化,支持页眉页脚、分栏、水印及TrueType字体嵌入,适用于正式文档输出场景。
1、执行Composer安装:composer require mpdf/mpdf。
2、引入mpdf命名空间:require_once 'vendor/autoload.php'; $mpdf = new \Mpdf\Mpdf();。
3、读取待转换文件内容(支持HTML或纯文本):$text = file_get_contents('report.txt');。
4、若为纯文本,需包裹HTML基础结构以确保正确渲染:$html = '' . htmlspecialchars($text) . '
';。
5、写入内容并生成PDF:$mpdf->WriteHTML($html);。
6、发送PDF响应至客户端:$mpdf->Output('report.pdf', 'I');。
四、使用FPDF配合GetStringWidth实现轻量文本转PDF
FPDF是极简型PDF生成库,无外部依赖,适合仅需输出纯文本且格式简单的场景;需手动处理换行与分页,但体积小、执行快。
1、下载fpdf.php并放入项目目录,然后引入:require('fpdf.php');。
2、创建FPDF实例并添加页面:$pdf = new FPDF(); $pdf->AddPage();。
3、设置中文字体(需提前准备UTF-8兼容字体文件):$pdf->AddFont('simhei', '', 'simhei.php'); $pdf->SetFont('simhei', '', 12);。
4、读取原始文件:$lines = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);。
5、逐行写入PDF,控制宽度避免溢出:foreach ($lines as $line) { $pdf->Cell(0, 6, $line, 0, 1); }。
6、输出PDF流:$pdf->Output('data.pdf', 'I');。










