这可能吗?从 PDF 到可编辑表单
Posted
技术标签:
【中文标题】这可能吗?从 PDF 到可编辑表单【英文标题】:Is this possible? From PDF to Editable Forms 【发布时间】:2013-06-04 22:14:01 【问题描述】:所以我被赋予了一项任务,如果它成为可能的话。我们有一个网站,上面有可供抓取和打印的表格。现在主管希望代理在抓取表格时不需要打印表格。但只需从那里填写并再次通过 PDF 提交表格,其中已经包含详细信息。这可以用 php 吗?我附上表格。
https://docs.google.com/file/d/0B3yAPZizyWCCYWkwWHdrdzBBdFU/edit?usp=sharing
【问题讨论】:
【参考方案1】:您为什么需要使用 PHP?您可以制作可编辑的 pdf 表单。我已经下载了附加的表格,不幸的是,这还不是可编辑的,但是将它们重新转换为可编辑的 PDF 很容易。将标准 pdf 转换为可编辑 pdf 表单的最常见解决方案是 acrobat:这样做的指南是 here。但是,您可能会发现一些免费或广告支持的服务,这些服务允许您在互联网上做同样的事情。通过谷歌搜索,我找到了pdfescape.com。尝试在 pdfescape.com 中创建一个新文档,然后在“插入”菜单下选择“表单域”。就是这样:您刚刚向页面添加了一个可编辑字段。现在点击“保存并下载”图标。
完成将 pdf 文档从静态转换为可编辑后,您可以将 pdf 分发给代理,他们可以使用免费程序编译和保存表单。在 Mac OSX 上,我可以使用默认的图像查看器来做到这一点。在 Windows 上,您可能需要 Acrobat。尽管如此,他们仍可以下载 pdf、编译表单、保存并提交回编译后的表单。
如果你真的想用 PHP 做到这一点,请查看文档并尝试弄清楚这样的任务需要多少时间,考虑到你应该告诉 PHP 在哪里写入文本(以像素为单位)自己形成和处理所有异常(例如太长的文本)。 Here.
另外,在 PHP 中执行此操作将需要您 parse the pdf file into php 然后创建一个新的 pdf 文件。祝你好运!
【讨论】:
tl;dr - 只需创建可编辑的 pdf 表单并分发它们。无需使用 PHP。【参考方案2】:这绝对是可能的。您必须注意安全性(因为您要传递税号),并且您需要让用户知道他们必须使用 Adobe Acrobat Reader 来提交他们完整的表单。
-
在表单本身上,使用 Adobe Acrobat Pro 创建自定义表单域。
设置文档以允许在 Acrobat Reader 中保存
在 Acrobat Pro 中在文档上创建一个按钮,以将整个 PDF 作为 PDF 文件提交到您的服务器。 Here's a link explaining how.
在您希望 PDF 传输到的服务器上,您需要安装来自 CA 的受信任证书。这应该允许通过 SSL 从 Acrobat 进行传输。
此外,一旦用户完成了他们的表单,您可以提供一个链接,他们可以通过 SSL 上传表单(如果他们不想使用 Acrobat 来完成这些字段)。 (一个例子可能是有人打印出文件来签名。)
您还可以将文件设置为也作为 html 帖子发送。不过,您需要弄清楚为此使用签名的法律问题。
请记住,电子邮件并不安全,因此让用户通过电子邮件提交完整的表单可能会危及他们的身份。
【讨论】:
+1 - 我完全忽略了有关已编辑文件分发的安全问题。【参考方案3】:1)如果我在浏览器中打开 pdf 表单,我无法在我的 phpscript 中获取 pdf 表单的帖子
2) 如果我在 adobe acrobat 中打开表单,那么我会在 $_POST 变量中获取帖子。 下面是我的 php 脚本..
据我说,在网络浏览器中打开表单时,$_POST 变量不起作用..
<?php
include "connection.php";
echo '<pre>'; print_r($_POST); echo '</pre>';
$sql = "INSERT INTO persons (name, city, state, country)VALUES('".$_POST["name"]."','".$_POST["city"]."','".$_POST["state"]."','".$_POST["country"]."')";
if($conn->query($sql) === TRUE)
echo "New record created successfully";
else
echo "Error: " . $sql . "<br>" . $conn->error;
?>
【讨论】:
以上是关于这可能吗?从 PDF 到可编辑表单的主要内容,如果未能解决你的问题,请参考以下文章