【问题标题】:PHP: Extract fdf fields as an array from a PDFPHP:从 PDF 中提取 fdf 字段作为数组
【发布时间】:2012-02-08 01:04:24
【问题描述】:

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

一个数组,如:array('firstname','secondname','address');

如果这些字段已填写,我不需要这些字段的值。

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

【问题讨论】:

标签: php arrays forms pdf fdf


【解决方案1】:

在“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";
}
?>

【讨论】:

  • 这个答案在 php 5.2 之前是正确的,但在 php 5.3 中删除了 pecl fdf 支持。让我们为失落的图书馆默哀片刻......
【解决方案2】:

我赞成 Murray 的回答,因为她很认真,我很确定他在 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;
    }

我希望有人会厌倦 php 中缺乏真正的 fdf 支持并解决这个问题。

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

HTH

-FT

【讨论】:

【解决方案3】:

如果您控制 pdf 并且只想要密钥,则以下将起作用。使用 php,没有其他库(如果您的主机没有它们很好)。

将pdf提交按钮设置为html并将页面设置为您的php代码将运行的地址。

$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——这对我来说更简单。

【讨论】:

    【解决方案4】:

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

    $allVars = file_get_contents("php://input");
    
    parse_str($allVars, $myPost);
    
    foreach($myPost as $key => $value) {
     $allKeys[] = $key;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2017-03-25
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      相关资源
      最近更新 更多