欢迎来到银川社交动力网络科技有限公司
建站资讯

当前位置: 首页 > 建站资讯 > 建站教程 > PHP教程

使用TinyButStrong生成HTML并结合Dompdf创建PDF教程

作者:购物商城 来源:php教程百度云日期:2025-11-29

使用tinybutstrong生成html并结合dompdf创建pdf教程

针对希望通过TinyButStrong(TBS)生成HTML并进一步使用Dompdf转换为PDF的开发者,本文将澄清TinyButStrong与OpenTBS插件的功能区别。我们将重点介绍如何利用纯TinyButStrong作为通用模板引擎处理HTML模板,从而为Dompdf提供有效的输入,实现高效的HTML到PDF转换流程,避免对OpenTBS的误用。

1. 理解TinyButStrong与OpenTBS的功能边界

在尝试使用TinyButStrong(TBS)及其插件生成特定格式文件时,首先需要明确其核心功能与插件的特定用途。

TinyButStrong (TBS):TBS是一个功能强大的通用PHP模板引擎。它的设计宗旨是能够处理任何文本文件作为模板,包括但不限于HTML页面、XML文件、纯文本文件甚至是自定义格式的数据文件。TBS通过其灵活的标签系统,允许开发者将动态数据合并到静态模板中,生成最终的输出内容。当处理HTML文件时,TBS能够高效地进行数据替换和循环渲染,生成完整的HTML结构。

OpenTBS 插件:OpenTBS是TinyButStrong的一个专用插件,其核心功能是扩展TBS,使其能够处理基于Opendocument Format (ODF) 和 Office Open XML (OOXML) 标准的文档。这意味着OpenTBS专门用于合并Microsoft Office(如.docx, .xlsx, .pptx)和LibreOffice(如.odt, .ods, .odp)文档。这些文档在技术上是包含XML子文件的ZIP压缩包,OpenTBS能够解析这些结构并进行数据合并。

立即学习“前端免费学习笔记(深入)”;

核心区别:OpenTBS并非用于生成HTML,而是用于处理Office文档。如果你需要生成HTML,TinyButStrong本身就具备这个能力,无需加载OpenTBS插件。将OpenTBS用于生成HTML并期望其为Dompdf提供输入是错误的用法,因为它会尝试将HTML作为Office文档处理,这显然不是其设计目的。

2. 使用TinyButStrong生成HTML

要使用TinyButStrong生成HTML内容,你只需要使用TBS核心库,而无需安装或加载OpenTBS插件。以下是具体步骤和示例代码:

2.1 准备HTML模板

首先,创建一个包含TBS字段的HTML模板文件(例如 template.html)。

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <title>[val.title]</title>    <style>        body { font-family: sans-serif; margin: 20px; }        h1 { color: #333; }        .item { border: 1px solid #eee; padding: 10px; margin-bottom: 10px; }        .item-name { font-weight: bold; }    </style></head><body>    <h1>[val.header]</h1>    <p>生成日期:[val.date]</p>    <h2>商品列表</h2>    [onshow.block_items]    <div class="item">        <div class="item-name">[item.name]</div>        <div class="item-price">价格:[item.price]</div>        <div class="item-qty">数量:[item.quantity]</div>    </div>    [/onshow.block_items]    <p>总计:[val.total_amount]</p></body></html>
登录后复制

在上述模板中:

Quinvio AI Quinvio AI

AI辅助下快速创建视频,虚拟代言人

Quinvio AI 59 查看详情 Quinvio AI [val.title], [val.header], [val.date], [val.total_amount] 是简单的值替换字段。[onshow.block_items] 和 [/onshow.block_items] 定义了一个数据块,TBS会循环处理 item 数组中的数据来生成多个 div.item 元素。

2.2 使用TinyButStrong合并数据到HTML模板

接下来,编写PHP代码来加载模板、分配数据并生成HTML输出。

<?php// 引入TinyButStrong库// 假设TinyButStrong库位于 vendor/tinybutstrong/tinybutstrong.phprequire_once 'vendor/tinybutstrong/tinybutstrong.php';// 实例化TinyButStrong对象$TBS = new clsTinyButStrong;// 加载HTML模板// 注意:这里不需要使用OPENTBS_PLUGIN$TBS->LoadTemplate('template.html', 'UTF-8'); // 确保编码正确// 准备数据$data = array(    'title' => '产品销售报告',    'header' => '月度销售概览',    'date' => date('Y-m-d H:i:s'),    'items' => array(        array('name' => '笔记本电脑', 'price' => '¥5000', 'quantity' => 2),        array('name' => '无线鼠标', 'price' => '¥150', 'quantity' => 5),        array('name' => '机械键盘', 'price' => '¥400', 'quantity' => 1),    ),    'total_amount' => '¥10550',);// 分配数据到模板$TBS->MergeBlock('item', $data['items']); // 合并数据块$TBS->MergeField('val', $data);          // 合并简单字段// 生成HTML内容// 使用 TBS_STRING 参数将输出捕获为字符串,而不是直接输出到浏览器$html_output = $TBS->Show(TBS_STRING);// 现在 $html_output 变量包含了完整的、合并了数据的HTML字符串echo $html_output;// 如果你想直接输出到浏览器,可以使用:// $TBS->Show();?>
登录后复制

运行这段PHP代码,你将得到一个完整的HTML字符串,其中包含了所有动态数据。

3. 结合Dompdf实现HTML到PDF转换

有了TinyButStrong生成的HTML字符串后,下一步就是将其传递给Dompdf进行PDF转换。

3.1 安装Dompdf

如果你尚未安装Dompdf,可以通过Composer进行安装:

composer require dompdf/dompdf
登录后复制

3.2 使用Dompdf转换HTML到PDF

将TinyButStrong生成的 $html_output 字符串作为Dompdf的输入。

<?php// 引入Dompdf库require_once 'vendor/autoload.php'; // 假设Dompdf通过Composer安装use Dompdf\Dompdf;use Dompdf\Options;// ... (接上一节TinyButStrong生成HTML的代码) ...// 假设 $html_output 已经包含了TinyButStrong生成的HTML内容// 实例化Dompdf并设置选项$options = new Options();$options->set('isHtml5ParserEnabled', true);$options->set('isRemoteEnabled', true); // 如果HTML中包含外部图片或CSS,需要开启此选项$dompdf = new Dompdf($options);// 加载HTML内容$dompdf->loadHtml($html_output);// 设置纸张大小和方向 (可选)$dompdf->setPaper('A4', 'portrait');// 渲染PDF$dompdf->render();// 输出PDF到浏览器或保存到文件// 输出到浏览器 (直接下载)$dompdf->stream("report.pdf", array("Attachment" => true));// 输出到浏览器 (在浏览器中预览)// $dompdf->stream("report.pdf", array("Attachment" => false));// 保存到文件// file_put_contents("path/to/save/report.pdf", $dompdf->output());?>
登录后复制

这段代码首先配置Dompdf选项,然后加载由TinyButStrong生成的HTML字符串,最后渲染并输出PDF文件。

4. 注意事项与最佳实践

明确区分用途:再次强调,TinyButStrong是通用模板引擎,OpenTBS是Office文档专用插件。请勿混淆使用。编码一致性:确保HTML模板文件、PHP脚本以及数据源的编码都是UTF-8,以避免中文乱码问题。在 LoadTemplate 方法中指定 UTF-8 是一个好习惯。Dompdf的CSS支持:Dompdf对CSS的支持并非完全兼容所有现代CSS特性。在设计HTML模板时,应尽量使用基本的CSS样式,并避免复杂的布局(如Flexbox、Grid),以确保在PDF中正确渲染。内联CSS或嵌入式CSS通常比外部CSS文件更稳定。性能优化:对于包含大量数据或复杂HTML结构的PDF生成,渲染过程可能会耗时较长。考虑在后台任务中生成PDF,或对数据进行分页处理。错误处理:在实际项目中,应加入适当的错误处理机制,例如检查文件是否存在、数据是否有效等。

总结

通过本文的详细教程,我们澄清了TinyButStrong与OpenTBS插件的功能差异,并演示了如何利用TinyButStrong作为纯HTML模板引擎来生成动态HTML内容。随后,我们结合Dompdf库,将生成的HTML无缝转换为高质量的PDF文档。掌握这一流程,开发者可以灵活高效地创建各种基于HTML的报告和文档,并将其导出为PDF格式,满足多样化的业务需求。关键在于选择正确的工具来完成特定的任务:使用TinyButStrong处理HTML,而OpenTBS则专用于Office文档。

以上就是使用TinyButStrong生成HTML并结合Dompdf创建PDF教程的详细内容,更多请关注php中文网其它相关文章!

标签: php教程
上一篇: php数据整理怎么把数组数据拆分为集合_php拆分为不重复集合与array_unique结合技巧
下一篇: 暂无

推荐建站资讯

更多>