XXXII. Funzioni Forms Data Format

Introduzione

Il Forms Data Format (FDF) un formato per la gestione di form all'interno di documenti PDF. Si dovrebbe leggere la documentazione al link http://partners.adobe.com/asn/acrobat/forms.jsp per avere maggiori informazioni su cosa sia FDF e su come usarlo in generale.

L'idea di base che FDF sia simile ai form HTML. Fondamentalmente la differenza consiste nel formato con cui i dati sono inviati al server quando viene premuto il bottone di sottomissione del form (che, ovviamente, in Form Data Format) e il formato del form stesso (che il Portable Document Format, PDF). L'elaborazione dei dati FDF una delle caratteristiche delle funzioni fdf.Ma ve ne sono altre. Una di queste consiste nel prendere un form PDF e compilarne i campi senza modificare il form . In questo caso si dovrebbe creare il documento FDF (fdf_create()) impostare i valori per ciascun campo (fdf_set_value()) e associarlo al form PDF (fdf_set_file()). Infine viene inviato al browser browser con MimeType application/vnd.fdf. Acrobat Reader riconosce il MimeType, legge il form PDF associato e completa i campi con i dati dal documento FDF.

Se si apre un documento FDF con un editor di testo si troveranno degli oggetti con nome FDF. Tali oggetti possono contenere diversi campi tipo Fields, F, Status etc.. I campi pi comuni sono Fields che puntano alla lista dei campi di input, e F che contiene il nome del file PDF a cui appartengono questi dati. Questi campi sono definiti dalla documentazione FDF come chiave /F (/F-Key) e chiave /Status (/Status-Key) Le modifiche a questi chiavi posso essere svolte con funzioni tipo fdf_set_file() e fdf_set_status(). I campi sono modificati dalle funzioni fdf_set_value(), fdf_set_opt() etc..

Requisiti

Occorre avere disponibile il toolkit FDF SDK, scaricabile da http://partners.adobe.com/asn/acrobat/forms.jsp. Dal PHP 4.3 occorre avere almeno l'SDK versione 5.0. Le librerie FDF sono disponibili in formato binario solo per le piattaforme supportate da Adobe quali Win32, Linux, Solaris e AIX.

Installazione

Occorre compilare il PHP con --with-fdftk[=DIR].

Nota: Se si hanno problemi nella configurazione del PHP con supporto fdftk, verificare che i file fdftk.h e libfdftk.so siano nel posto corretto. Lo script di configurazione supporta sia la struttura delle directory della distribuzione FDFSDK, sia l'usuale struttura DIR/include / DIR/lib, pertanto si pu puntare o direttamente alla directory della distribuzione decompressa o posizionare il file con l'header e la libreria appropriata per la piattaforma, ad es. /usr/local/include e /usr/local/lib ed eseguire configure con --with-fdftk=/usr/local.

Nota per gli utenti Win32: Per potere abilitare questo modulo sui sistemi Windows, occorre copiare fdftk.dll dalla cartella DLL del rilascio PHP7Win32 alla cartella SYSTEM32 della macchina Windows. (Es. C:\WINNT\SYSTEM32 oppure C:\WINDOWS\SYSTEM32).

Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini

Tipi di risorse

fdf

La maggior parte delle funzioni richiedono una risorsa fdf come primo parametro. La risorsa fdf un puntatore al file fdf aperto. Le risorse fdf possono essere ottenute dalle funzioni fdf_create(), fdf_open() e fdf_open_string().

Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione stata compilata nel PHP o se stata caricata dinamicamente a runtime.

FDFValue (integer)

FDFStatus (integer)

FDFFile (integer)

FDFID (integer)

FDFFf (integer)

FDFSetFf (integer)

FDFClearFf (integer)

FDFFlags (integer)

FDFSetF (integer)

FDFClrF (integer)

FDFAP (integer)

FDFAS (integer)

FDFAction (integer)

FDFAA (integer)

FDFAPRef (integer)

FDFIF (integer)

FDFEnter (integer)

FDFExit (integer)

FDFDown (integer)

FDFUp (integer)

FDFFormat (integer)

FDFValidate (integer)

FDFKeystroke (integer)

FDFCalculate (integer)

FDFNormalAP (integer)

FDFRolloverAP (integer)

FDFDownAP (integer)

Esempi

Il seguente esempio illustra l'elaborazione dei dati di un form.

Esempio 1. Elaborazione di un documento FDF

<?php
// Apre fdf dalla stringa di input fornita dalla estensione
// Il form pdf contiene diversi campi con nome
// volume, date, comment, publisher, preparer, e due checkboxes
// show_publisher e show_preparer.
$fdf = fdf_open_string($HTTP_FDF_DATA);
$volume = fdf_get_value($fdf, "volume");
echo
"TIl campo volume ha valore '<b>$volume</b>'<br />";

$date = fdf_get_value($fdf, "date");
echo
"Il campo date ha valore '<b>$date</b>'<br />";

$comment = fdf_get_value($fdf, "comment");
echo
"Il campo commento ha valore '<b>$comment</b>'<br />";

if (
fdf_get_value($fdf, "show_publisher") == "On") {
  
$publisher = fdf_get_value($fdf, "publisher");
  echo
"Il campo publisher ha valore '<b>$publisher</b>'<br />";
} else
  echo
"Publisher non deve essere visualizzato.<br />";

if (
fdf_get_value($fdf, "show_preparer") == "On") {
  
$preparer = fdf_get_value($fdf, "preparer");
  echo
"Il campo preparer ha valore '<b>$preparer</b>'<br />";
} else
  echo
"Preparer non deve essere visualizzato.<br />";
fdf_close($fdf);
?>

Sommario
fdf_add_doc_javascript -- Aggiunge codice Javascript ad un documento FDF
fdf_add_template -- aggiunge un templat in un documento FDF
fdf_close -- Chiude un documento FDF
fdf_create -- Crea un nuovo documento FDF
fdf_enum_values -- Richiama una funzione definita dall'utente per ciascun valore del documento
fdf_errno -- Restituisce il codice di errore per l'ultima operazione FDF
fdf_error -- Restituisce la descrizione di un codice di errore fdf
fdf_get_ap -- Ottiene il formato di un campo
fdf_get_attachment -- Estrae file racchiusi nel FDF
fdf_get_encoding -- Restituisce il valore della chiave /Encoding
fdf_get_file -- Ottiene il valore della chiave /F
fdf_get_flags -- Ottiene i flag di un campo
fdf_get_opt -- Ottiene un valore dalla matrice delle opzioni di un campo
fdf_get_status -- Restituisce il valore per la chiave /STATUS
fdf_get_value -- Ottiene il valore di un campo
fdf_get_version -- Restituisce il numero di versione per le API FDF o un file
fdf_header -- Imposta gli header specifici per FDF
fdf_next_field_name -- Restituisce il nome del campo successivo
fdf_open_string -- Legge un documento FDF da una stringa
fdf_open -- Apre un documento FDF
fdf_remove_item -- Imposta il frame di destinazione per un form
fdf_save_string -- Restituisce un documento FDF come una stringa
fdf_save -- Salva un documento FDF
fdf_set_ap -- Imposta l'apparire di un campo
fdf_set_encoding -- Imposta la codifica dei caratteri per FDF
fdf_set_file -- Imposta un documento PDF per visualizzare i dati FDF presenti
fdf_set_flags -- Imposta i flag di un campo
fdf_set_javascript_action -- Imposta un'azione javascript per un campo
fdf_set_opt -- Imposta le opzioni per un campo
fdf_set_status -- Imposta il valore per la chiave /STATUS
fdf_set_submit_form_action -- Imposta un'azione per un campo nell'invio di un form
fdf_set_target_frame -- Imposta il frame in cui visualizzare il form
fdf_set_value -- Imposta il valore di un campo
fdf_set_version -- Imposta il numero di versione per un file FDF