【问题标题】:PDF Form submit - Request Payload PHP parserPDF 表单提交 - 请求有效负载 PHP 解析器
【发布时间】:2024-05-29 19:25:01
【问题描述】:

提前致谢!

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

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

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

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

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

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

谢谢

【问题讨论】:

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

标签: php forms pdf pdf-form


【解决方案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 超全局访问数据。

【讨论】:

    最近更新 更多