PHP:PDFからの配列としてFDFフィールドを抽出します
質問
入手可能な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";
}
?>
他のヒント
彼女がアーネストにいたので、私はマレーの答えを支持しました。
悲しいことに、PECL FDFはもうありません。
ありがたいことに、 1人の「ノア」はPHPドキュメントについてコメントしました 問題に対するpreg_match_all regexソリューションを使用します。ここには、明確になるためのわずかな変更があります。ロングライブノア。
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サポートが不足していることにFedupになり、これを修正することを期待しています。
あなたがこの質問を読んでいるなら、私たちはおそらく同じ基本的なワークフローの後にいるので、あなたは私がフォローしている基本的なワークフローは次のことを知っている必要があります。
- 通常のPDFフォームをダウンロードします。
- 使用する Libreofficeが名前が付けられたフィールドを備えたPDFフォームにする.
- 使用する PDFTKをFDFファイルに変換します
- この関数を使用して、フォームが必要とする値を把握します。
- 正しい変数が定義されている(db/whated)にフラットPHPアレイを入力します
- 使用する PDF_FORGE充填前の値で新しいFDFを作成する
- 使用する PDFTKは、変数を備えたFDF+Original-PDFから新しいPDFを作成します (dbから/何でも)
- 利益
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値をDBに入れて読む方法を探していましたが、最終的にもう少し突っついた後、上記を思いつきました。うまくいけば、いくつかの人々のニーズを満たします。 XFDFも機能する可能性がありますが、XMLとして解析する必要があります。これは私にとって簡単でした。
サーバーに送信するPDFSから通常の投稿を取得しますが、$ _POSTアレイではありません。 php://入力から解析する必要があります:
$allVars = file_get_contents("php://input");
parse_str($allVars, $myPost);
foreach($myPost as $key => $value) {
$allKeys[] = $key;
}