PDF 表单提交 - 请求有效负载 PHP 解析器

Posted

技术标签:

【中文标题】PDF 表单提交 - 请求有效负载 PHP 解析器【英文标题】:PDF Form submit - Request Payload PHP parser 【发布时间】:2015-03-05 19:30:13 【问题描述】:

提前致谢!

我使用 Adob​​e Acrobat 创建了一个 PDF 表单,并设置了操作按钮以将表单提交到我的服务器的 URL。

在浏览器中填写表单并点击提交后,它会向 URL 发送 POST 请求,但没有任何数据

检查网络时,我发现“Request Payload”里面有很多二进制数据,我可以在其中找到提交表单的信息(截图)

我可以使用 file_get_contents('php://input') 检索“有效负载请求”字符串

我想知道这是正确的做法吗?

如果是,是否有一种标准方法可以将“有效负载请求”字符串解析为表单字段和值?

谢谢

【问题讨论】:

php://input 中的字符串是什么样的? 正是上面屏幕截图中的“请求有效负载”部分 对于没有 FDF 的解决方案,请尝试 ***.com/questions/46515906/… 【参考方案1】:

似乎是专有的,您需要:Acrobat Forms Data Format (FDF) Toolkit 安装在服务器上。

如果您无法获得该设置,只是为了好玩:

preg_match_all('#<</T\(([^\)]*)\)/V\(([^\)]*)\)#', $payload, $matches);
$DATA = array_combine($matches[1], $matches[2]);
print_r($DATA);

如果您需要其他数据,例如文件名等,那就更多了。

【讨论】:

能否在有效载荷中包含文件名和其他数据?那会很有用。 上述 preg_match_all 无法捕获复选框/单选框。这是正确的: preg_match_all('#]*))?>#', $payload, $matches );【参考方案2】:

如果您可以访问 PDF 表单,您可以将“导出格式”切换为 html,这将允许您通过 $_POST 超全局访问数据。

【讨论】:

以上是关于PDF 表单提交 - 请求有效负载 PHP 解析器的主要内容,如果未能解决你的问题,请参考以下文章

将 pdf 表单字段提交到 HTTP POST 请求

带有有效负载或表单数据的 DELETE 请求导致错误请求

Angular $resource 服务以表单数据而不是请求有效负载发送数据

在 Chrome 开发工具网络选项卡中看到的“请求有效负载”与“表单数据”有啥区别

PHP-ThinkPHP中的表单令牌是啥原理

如何通过 HTTP 提交 PDF 表单数据?