【问题标题】:Fill in PDF online? [closed]在线填写PDF? [关闭]
【发布时间】:2013-05-01 00:01:50
【问题描述】:

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

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

这工作正常,但有很多地方可能会出错。 CKEditor 与 HTML 有点混淆,而 DOMPDF 并不总是完美地转换它。特别是,我们不能正确地做页眉和页脚。

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

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

【问题讨论】:

  • 有可填写的pdf表格
  • 如果您从 HTML 提交数据并在服务器端组装 PDF 怎么样?
  • @YoriKusanagi:嗯?这与我已经在做的有什么不同?我们自己创建 HTML 模板,然后在 WYSIWYG 编辑器中呈现 HTML,客户可以根据自己的喜好对其进行编辑,然后单击将其转换为 PDF(服务器端)的按钮。
  • @Dagon:我解决了这个问题。这对我们不起作用,因为我们需要跟踪他们在 PDF 中输入的内容。一旦它离开我们的网站,我们就不知道他们对文件做了什么。 PDF 仅用于打印。

标签: php pdf


【解决方案1】:

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

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

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

编辑这不是“没有外部程序”的问题。 您最初的问题要求“没有外部程序”,但 many other sources say 似乎没有 PHP 库可以进行这种转换。

【讨论】:

  • 我所说的“没有外部程序”的意思是我不希望我的客户离线填写文档。即,一旦它离开我们的网站,我们就无法追踪他们对该文档所做的事情。我们需要他们直接在我们的网站上输入所有信息,以便我们可以记录他们对文档所做的所有更改。最好在他们导出 PDF 后将其“锁定”且不易编辑。
  • 数据通常位于段落的中间,但我认为文本在输入周围“紧密”并不重要。即,为文本保留一个固定宽度的插槽就可以了。
【解决方案2】:

首先,您需要将 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

【讨论】:

  • 我也使用 PDFTK 将 XFDF 处理成 PDF,但这不一定是最好的方法。部分问题在于这假设他们正在填写文档中的预定义位置 - 问题没有说明是否是这种情况,或者他们是否正在填写现有段落或文本行中的文本。
  • OP 没有在线表格..
  • Ejay 是正确的。我们没有一堆表单域,我们有一个所见即所得的编辑器,可以让他们填写文档的某些部分,或者在需要时稍微编辑一下。
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2021-08-07
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
相关资源
最近更新 更多