PHP:从PDF中提取fdf字段作为数组

时间:2012-01-11 16:54:11

标签: php arrays forms pdf fdf

我想从可填写的pdf中提取可用字段作为数组。

类似于:array('firstname','secondname','address');

的数组

我不需要这些字段的值,如果它们已被填充。

使用PHP最简单的方法是什么?

4 个答案:

答案 0 :(得分:2)

在“fdf_next_field_name”的在线文档中,给出了以下示例,您可以修改以将字段名称存储到数组中

<?php
$fdf = fdf_open($HTTP_FDF_DATA);
for ($field = fdf_next_field_name($fdf); $field != ""; $field = fdf_next_field_name($fdf, $field)) {
    echo "field: $field\n";
}
?>

答案 1 :(得分:1)

我赞成了穆雷的回答,因为她是在欧内斯特,我很确定他是对的,在php 5.3之前

可悲的是,pecl fdf已不复存在。

值得庆幸的是,one "noah" made a comment on the php documentation使用preg_match_all正则表达式来解决问题。为清晰起见,此处略作修改。诺亚万岁。

function parse($text_from_file) {
            if (!preg_match_all("/<<\s*\/V([^>]*)>>/x",$text_from_file,$out,PREG_SET_ORDER))
                    return;
            for ($i=0;$i<count($out);$i++) {
                    $pattern = "<<.*/V\s*(.*)\s*/T\s*(.*)\s*>>";
                    $thing = $out[$i][2];
                    if (eregi($pattern,$out[$i][0],$regs)) {
                            $key = $regs[2];
                            $val = $regs[1];
                            $key = preg_replace("/^\s*\(/","",$key);
                            $key = preg_replace("/\)$/","",$key);
                            $key = preg_replace("/\\\/","",$key);
                            $val = preg_replace("/^\s*\(/","",$val);
                            $val = preg_replace("/\)$/","",$val);
                            $matches[$key] = $val;
                    }
            }
            return $matches;
    }

我希望有人会因为缺乏真正的fdf支持而得到补偿并解决这个问题。

因为如果您正在阅读这个问题,我们可能都在相同的基本工作流程之后,那么您应该知道我所遵循的基本工作流程是:

HTH

-FT

答案 2 :(得分:1)

如果您控制pdf并且只想要键,则以下操作将起作用。使用php,没有其他库(如果你主持没有它们会很好)。

将pdf提交按钮设置为html,并将页面设置为运行php代码的地址。 enter image description here

$q_string  = file_get_contents("php://input");
parse_str($q_string , $pdf_array);
$pdfkeys = array_keys($pdf_array);

来自pdf文件的html查询字符串被放入变量$ q_string中。然后将其解析为名为$ pdf_array的数组。 $ pdf_array包含所有键和值。然后使用array_keys()将所有键放入$ pdfkeys中。

我来到这里看看如何读取pdf值放入数据库,最后经过一些更多的探讨后得出了上述内容。希望满足一些人的需求。 xfdf也可以工作,但你需要解析为xml然后 - 这对我来说更简单。

答案 3 :(得分:0)

我从提交到我的服务器的PDF中获得了正常的帖子,但是没有在$ _POST数组中。你只需要从php:// input:

解析它
$allVars = file_get_contents("php://input");

parse_str($allVars, $myPost);

foreach($myPost as $key => $value) {
 $allKeys[] = $key;
}