[英]PHP: Extract fdf fields as an array from a PDF
我想從可填寫的pdf中提取可用字段作為數組。
數組如: array('firstname','secondname','address');
如果這些字段被填充,我不需要這些字段的值。
使用PHP最簡單的方法是什么?
在“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.3
可悲的是,pecl fdf已不復存在。
值得慶幸的是, 一個“諾亞”用這個問題的preg_match_all正則表達式解決方案對php文檔做了評論 。 為清晰起見,此處略作修改。 諾亞萬歲。
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
如果您控制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然后 - 這對我來說更簡單。
我從提交到我的服務器的PDF獲得了一個普通的帖子,但是沒有在$ _POST數組中。 你只需要從php:// input解析它:
$allVars = file_get_contents("php://input");
parse_str($allVars, $myPost);
foreach($myPost as $key => $value) {
$allKeys[] = $key;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.