将PDF表单数据接收到PHP

时间:2017-10-01 19:09:27

标签: php forms pdf fdf xfdf

所以我一直在网上寻找几个小时,我认为这是一个非常简单的答案,但我似乎无法找到它。

我试图了解PDF表单数据提交的工作原理。我的目标是阅读从我在PHP脚本中设置的PDF表单提交的表单数据。我希望我的PHP脚本解析表单数据并将其插入我的SQL数据库。

我遇到的障碍是如何收到文件以便我解析它?

提交文件的文件名是什么?

我在PDF表单上设置了提交按钮,我可以将其导出为FDF,HTML或XFDF,但我只是想将数据转换为字符串或以某种方式将内容导入PHP但我不这样做知道如何。

如果我尝试:

  

$ fileFromPDF = file_get_contents('file.txt',true);

我仍然需要文件的名称,而且我不知道从PDF表单提交的文件的名称。我如何获得此文件的名称?它甚至是一个文件还是只是一行xml?如果它只是一行XML,我该如何收到?

如果有人能指出我正确的方向,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

我想我终于找到了答案。我用了这段代码:

  

$ post_body = file_get_contents(' php:// input');

我能得到一个字符串。

如果有人知道更好的方式,我全都耳朵。谢谢!

答案 1 :(得分:0)

function ArrayFromHttpPut() { # assume a simple PUT, like a PDF form submission
  $arrRtn = array();                                   # init result
  $strInp = file_get_contents('php://input');          # PUT data comes in on StdIn, not in GET

  $arrInp = explode("\r\n", $strInp, 2);               # break input into array by only the first CrLf
  $strBnd = $arrInp[0];                                # first line of input is content boundary
  $strInp = $arrInp[1];                                # proceed with remainder of input

  $arrInp = explode($strBnd, $strInp);                 # break input into array by content boundary

  foreach ($arrInp as $idxInp => $strInp) {            # scan input items
    $arrItm = explode("\r\n\r\n", $strInp, 2);         # break each item into array by only the first double-blank line
    $arrItm[0] = trim($arrItm[0]);                     # drop spurious leading and trailing
    $arrItm[1] = trim($arrItm[1]);                     #   blank lines from both parts

    $arrItmNam = explode('=', $arrItm[0]);             # break item name away from Content-Disposition wording
    $strItmNam = str_replace('"', '', $arrItmNam[1]);  # get item name without its enclosing double-quotes
    $strItmVal =                      $arrItm   [1] ;  # get item value

    $arrRtn[$strItmNam] = $strItmVal;                  # append (item-name => item-value) to output buffer
  }                                                    # done with scanning input items
  return $arrRtn;                                      # pass result back to caller
} # ArrayFromHttpPut