使用PHP将HTML表单数据转换为PDF文件

时间:2012-08-17 17:08:26

标签: php html forms pdf pdftk

我一直在寻找并测试这几天,并且想知道是否有人能指出我的方向不同。我有一个很长的工作申请HTML表单(jobapp.html)和一个匹配的PDF(jobpdf.pdf),它们对HTML表单和PDF中的所有条目都有相同的字段名称。我需要获取在表单中输入的用户数据并将其转换为PDF。这是我到目前为止收集的内容,但不知道我是否正在进行中:

pdftk是唯一可行的第三方应用程序吗?

使用pdftk我会为用户收集$ _POST数据并生成.fdf(user.fdf),然后在.pdf(job.pdf)上展平.fdf。因此,不知道字段在每个文档中的位置,fdf上的信息会按字段名称填充pdf吗?

我一直在努力 http://koivi.com/fill-pdf-form-fields/tutorial.php

我也看过“Submit HTML form to PDF

4 个答案:

答案 0 :(得分:6)

我多次使用fpdf来创建基于php的pdf文档。以下示例:

require('fpdf.php');

$pdf = new FPDF();

$pdf->AddFont('georgia', '', 'georgia.php');
$pdf->AddFont('georgia', 'B', 'georgiab.php');
$pdf->AddFont('georgia', 'I', 'georgiai.php');

# Add UTF-8 support (only add a Unicode font)
$pdf->AddFont('freesans', '', 'freesans.php', true);
$pdf->SetFont('freesans', '', 12);

$pdf->SetTitle('My title');
$pdf->SetAuthor('My author');
$pdf->SetDisplayMode('fullpage', 'single');

$pdf->SetLeftMargin(20);
$pdf->SetRightMargin(20);

$pdf->AddPage();
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();

您可以从网站本身快速了解这些tutorials


编辑:保存表单数据的示例:(是的,非常简单......)

require('fpdf.php');
$pdf = new FPDF();

$pdf->AddPage();
foreach ($_POST as $key =>$data)
{
    $pdf->Write(5, "$key: $data"); //write
    $pdf->Ln(10); // new line
}
$pdf->Output($path_to_file . 'file.txt','F'); // save to file

看看用fpdf创建的这些页面,真的!

enter image description here

enter image description here

答案 1 :(得分:2)

http://www.fpdf.org/

那将是图书馆。我在这里使用它来将图像添加到表单并提交它以创建包含这些图像的PDF:http://productionlocations.com/locations

实际执行的代码非常复杂。

答案 2 :(得分:1)

我发现PrinceXML非常容易使用。它需要您的HTML / XML,应用CSS并将其转换为PDF。 PHP扩展非常有效。不幸的是,它不是免费的。

答案 3 :(得分:0)

您可以考虑的一种方法是使用将任何HTML转换为PDF的在线API。您可以向他们发送包含用户提交的数据的生成的HTML(更容易制作),并接收高保真PDF。

市场上有很多服务。我想提及PDFShift,因为它提供的package in PHP简化了您的工作。

安装完成后(使用Composer或直接下载,具体取决于您的选择),您可以快速转换HTML文档,如下所示:

require_once('vendor/autoload.php');
use \PDFShift\PDFShift;

PDFShift::setApiKey('{your api key}');
PDFShift::convertTo('https://link/to/your/html', null, 'invoice.pdf');

就是这样。您可以实现许多功能(访问安全文档,添加水印等)。

希望有所帮助!