PHP: извлечение полей fdf в виде массива из 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 больше нет.

К счастью, один «ной» сделал комментарий к документации php с помощью решения regx 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; } 

Я ожидаю, что кто-то получит fedup с отсутствием истинной поддержки fdf в php и исправит это.

Поскольку мы все, вероятно, после того же основного рабочего процесса, если вы читаете этот вопрос, то вы должны знать, что основной рабочий процесс, за которым я следую:

  • Загрузите обычную форму pdf.
  • используйте libreoffice, чтобы сделать его формой pdf с именованными полями .
  • используйте pdftk, чтобы превратить его в файл fdf
  • используйте эту функцию, чтобы выяснить, какие значения требуется форме.
  • заполнить плоский массив php с определенными правильными переменными (из db / whatever)
  • используйте pdf_forge для создания нового fdf с предварительно заполненными значениями
  • снова используйте pdftk, чтобы создать новый pdf-файл из fdf + original-pdf с переменными (из db / whatever)
  • прибыль

НТН

-Ft

Если вы будете управлять pdf-файлом и просто хотите использовать клавиши, то будет работать следующее. Использует php, никаких других библиотек (хорошо, если у вас их нет).

Установите кнопку отправки PDF в html и установите страницу на адрес, где будет запущен ваш PHP-код. введите описание изображения здесь

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

Строка запроса html из файла pdf помещается в переменную $ q_string. Затем он разбирается в массив с именем $ pdf_array. $ pdf_array содержит все ключи и значения. Затем array_keys () используется, чтобы поместить все ключи в $ pdfkeys по вашему желанию.

Я пришел сюда, чтобы посмотреть, как читать значения PDF, чтобы вставить в db, и, наконец, после того, как некоторые из них выкачали, вышли выше. Надеюсь, это удовлетворит потребности некоторых людей. xfdf также может работать, но вам нужно будет анализировать как xml, тогда – это было проще для меня.

Я получаю обычный пост из PDF-файлов, отправляемых на мой сервер, но не в массив $ _POST. Вам просто нужно разобрать его из php: // input:

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