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 » https://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 » https://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: 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.
Example#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);
?>
Indice dei contenuti
- 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_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF
- 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