在线填写PDF?

时间:2013-05-01 00:01:51

标签: php pdf

我正试图想出一种管理文档的方法。

目前,我们正在用HTML设计我们的文档模板,然后我们让客户使用CKEditor填充一些空白,然后我们使用DOMPDF将HTML转换为PDF,以便他们可以打印文档。 / p>

这没关系,但有很多地方可能出错。 CKEditor稍微混淆了HTML,DOMPDF并不总能完美地转换它。特别是,我们无法正确地进行页眉和页脚。

由于我们的最终目标是生成PDF,有没有更好的方法来完成所有这些?例如,我们可以使用PostScript或LaTeX设计文档,然后使用JavaScript直接在我们的网站(无外部程序!)上呈现PDF,其中包含一些占位符文本框,以便我们的客户可以填写所需的部分,然后保存并导出?

“填写”部分必须留在我们的网站上,因为我们需要跟踪他们输入的内容以进行审核和版本控制。

2 个答案:

答案 0 :(得分:1)

此问题的最佳答案取决于您的客户在表单中添加的数据类型。

如果他们在特定的固定宽度字段中填写信息,那么最简单的方法就像其他人提到的那样是创建一个可填写的PDF,使用XFDF来填充它,并PDFTK来展平它。您可以看到my answer to another question代码示例。

但是,如果您的客户在文本的行或段落中填写空白,您将无法轻松使用可填写的PDF。您对使用PostScript或LaTeX的建议是一个很好的建议。如果您在原始文件中保留某种令牌,然后使用从您的网页提交的数据动态替换它们,则可以在调用ps2pdflatex2pdf(或任何其他转换程序)时调用它们提交表单以返回完成的PDF。

编辑这不是“没有外部程序”的问题。 您的原始问题要求“无外部程序”,但many other sources say似乎没有PHP库可以执行此类转换

答案 1 :(得分:0)

首先,您需要将HTML表单数据处理为XFDF格式(通过createXFDF()函数),然后您将需要使用以下代码:

$pdf_template_path = dirname( __FILE__ ) . '/pdf_form_template.pdf';
$pdftk = '/usr/bin/pdftk';
$pdf_name = substr( $xfdf_file_path, 0, -4 ) . 'pdf';
$result_pdf = $result_directory . '/' . $pdf_name;
$command = "$pdftk $pdf_template_path fill_form $xfdf_file_path output $result_pdf flatten";

假设您在服务器上有一个模板PDF来写入数据。

> more information here