Manuale PHP
Indietro |  | Avanti

# XXXVI. 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);
?>`

Indietro | Partenza | Avanti
fam_suspend_monitor | Risali | fdf_add_doc_javascript