介绍
在这篇文章中,我们将讨论如何创建一个同时提交表单和下载 PDF 的按钮。这个功能非常实用,在很多场景下都可以使用。比如,当我们需要用户填写一些表单并生成 PDF 文件时,我们可以使用这个按钮来方便地一次提交表单并下载 PDF 文件。
HTML 表单
首先,我们需要创建一个 HTML 表单,让用户填写一些数据。以下是一个简单的 HTML 表单的例子:
<form>
<label for="name">姓名:</label>
<input type="text" id="name" name="name">
<label for="email">邮箱地址:</label>
<input type="email" id="email" name="email">
<label for="phone">手机号码:</label>
<input type="tel" id="phone" name="phone">
<input type="submit" value="提交">
</form>
这个表单包含三个输入框:姓名、邮箱地址和手机号码,以及一个提交按钮。当用户填写完表单内容并点击提交按钮时,表单将被提交到服务器。
PHP 生成 PDF 文件
接下来,我们需要编写 PHP 代码来生成 PDF 文件。我们将使用一个名为 dompdf 的 PHP 库来完成这个任务。这个库可以将 HTML 代码转换为 PDF 文件。
首先,我们需要在项目中安装 dompdf。我们可以使用 Composer 进行安装:
composer require dompdf/dompdf
安装完成后,我们就可以开始编写 PHP 代码了。以下是一个简单的例子:
<?php
require_once 'vendor/autoload.php';
use Dompdf\Dompdf;
// 创建一个 DOMPDF 实例
$dompdf = new Dompdf();
// 获取表单数据
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
// 生成 HTML 代码
$html = "<h1>个人信息</h1>";
$html .= "<p><strong>姓名:</strong> $name</p>";
$html .= "<p><strong>邮箱地址:</strong> $email</p>";
$html .= "<p><strong>手机号码:</strong> $phone</p>";
// 将 HTML 代码加载到 DOMPDF 中
$dompdf->loadHtml($html);
// 将 HTML 转换为 PDF 文件
$dompdf->render();
// 将 PDF 文件保存到服务器上
$output = $dompdf->output();
file_put_contents('personal_info.pdf', $output);
?>
以上代码中,我们首先使用 $_POST 获取表单数据,然后生成了一个包含个人信息的 HTML 代码。接着,我们将 HTML 代码加载到 DOMPDF 中,并将其转换为 PDF 文件,并最终将 PDF 文件保存到服务器中。
创建一个提交表单和下载 PDF 的按钮
现在,我们已经完成了表单和 PHP 生成 PDF 文件的工作。接下来,我们需要创建一个按钮来同时提交表单和下载 PDF 文件。
我们可以使用 JavaScript 来实现这个功能。以下是一个示例代码:
// 获取表单元素
const form = document.getElementsByTagName('form')[0];
// 创建一个按钮元素
const button = document.createElement('button');
button.innerText = '提交并下载 PDF';
button.addEventListener('click', () => {
// 提交表单
form.submit();
// 下载 PDF 文件
fetch('生成 PDF 文件的 PHP 文件路径')
.then(response => response.blob())
.then(blob => {
const url = window.URL.createObjectURL(new Blob([blob]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'personal_info.pdf');
document.body.appendChild(link);
link.click();
});
});
// 将按钮元素追加到 body 中
document.body.appendChild(button);
以上代码中,我们首先获取了表单元素和一个下载 PDF 的 PHP 文件路径。接着,我们创建了一个按钮元素,并将其添加事件监听器。当按钮被点击时,我们先提交表单,然后通过 fetch 方法向服务器请求生成的 PDF 文件,并将其下载下来。
总结
在本文中,我们讨论了如何创建一个提交表单和下载 PDF 的按钮。我们首先使用 HTML 创建了一个表单,然后使用 PHP 生成 PDF 文件,最后使用 JavaScript 实现了按钮的功能。这个功能非常实用,并且可以应用到各种场景中。