XXXI. Funciones Forms Data Format (Formato de Datos de Formularios)

El Formato de Datos de Formulario (FDF) está diseñado para el manejo de formularios en archivos PDF. Se aconseja leer la información disponible en http://partners.adobe.com/asn/developer/acrosdk/forms.html para más información sobre lo que es FDF y cómo se usa en general.

Nota: Actualmente Adobe sólo proporciona una versión compatible con libc5 para Linux. Las pruebas con glibc2 provocaron un fallo de segmentado. Si alguien es capaz de hacerla funcionar, por favor coméntelo en esta página.

Nota: Si tiene problemas configurando php con soporte de fdftk, compruebe si el archivo de cabecera FdfTk.h y la librería libFdfTk.so están en su lugar correcto. Deberían encontrarse respectivamente en fdftk-dir/include y en fdftk-dir/lib. Este problema no se dará si se limita a desempaqueta la distribucón del FtdTk.

La idea general del FDF es similar a los formularios HTML. La diferencia básicamente está en el formato en que se transmiten los datos al servidor cuando se pulsa el botón de envío (este es realmente el Formato de Datos de Formulario) y el formato del formulario en sí mismo (que es el Formato de Documento Portable, PDF). Procesar lo datos del FDF es una de las características que proporcionan las funciones fdf. Pero aún hay más. Uno también puede tomar un formulario PDF y rellenar los campos de entrada con datos sin modificar el formulario en sí mismo. En dicho caso, lo que se hace es crear un documento FDF (fdf_create()), fijar los valores de cada campo de entrada (fdf_set_value()) y asociarlo con un formulario PDF (fdf_set_file()). Finalmente, debe ser enviado al navegador con el MimeType application/vnd.fdf. El plug-in de Acrobar reader de su navegador reconoce el MimeType, lee el formulario PDF asociado y rellena los datos a partir del documento FDF.

Los siguientes ejemplos muestran cómo se evalúan los datos de los formularios.

Ejemplo 1. Evaluando un documento FDF

<?php
// Guarda los datos FDF en un archivo temporal
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);

// Abre archivo temporal y evalúa los datos
// El formulario pdf contenía varios campos de texto con los nombres
// volumen, fecha, comentario, editorial, preparador, y dos casillas de verificación
// muestra_editorial y muestra_preparador.
$fdf = fdf_open("test.fdf");
$volume = fdf_get_value($fdf, "volumen");
echo "El campo volumen tiene el valor '<B>$volume</B>'<BR>";

$date = fdf_get_value($fdf, "fecha");
echo "El campo fecha tiene el valor '<B>$date</B>'<BR>";

$comment = fdf_get_value($fdf, "comentario");
echo "El campo comentario tiene el valor '<B>$comment</B>'<BR>";

if(fdf_get_value($fdf, "muestra_editorial") == "On") {
  $publisher = fdf_get_value($fdf, "editorial");
  echo "El campo editorial tiene el valor '<B>$publisher</B>'<BR>";
} else
  echo "No se debe mostrar la editorial.<BR>";

if(fdf_get_value($fdf, "muestra_preparador") == "On") {
  $preparer = fdf_get_value($fdf, "preparador");
  echo "El campo preparador tiene el valor '<B>$preparer</B>'<BR>";
} else
  echo "No se debe mostrar el preparador.<BR>";
fdf_close($fdf);
?>
Tabla de contenidos
fdf_add_doc_javascript -- Adds javascript code to the FDF document
fdf_add_template -- Adds a template into the FDF document
fdf_close -- Cerrar un documento FDF
fdf_create -- Crear un documento FDF
fdf_errno -- Return error code for last fdf operation
fdf_error -- Return error description for fdf error code
fdf_get_ap -- Get the appearance of a field
fdf_get_attachment -- Extracts uploaded file embedded in the FDF
fdf_get_encoding -- Get the value of the /Encoding key
fdf_get_file -- Obtener el valor de la clave /F
fdf_get_status -- Obtener el valor de la clave /STATUS
fdf_get_value -- Obtener el valor de un campo
fdf_get_version -- Gets version number for FDF api or file
fdf_header -- Sets FDF-specific output headers
fdf_next_field_name -- Obtener el nombre del siguiente campo
fdf_open_string -- Read a FDF document from a string
fdf_open -- Abrir un documento FDF
fdf_save_string -- Returns the FDF document as a string
fdf_save -- Guardar un documeto FDF
fdf_set_ap -- Ajusta la apariencia de un campo
fdf_set_encoding -- Sets FDF character encoding
fdf_set_file -- Fijar el valor de la clave /F
fdf_set_flags -- Sets a flag of a field
fdf_set_javascript_action -- Sets an javascript action of a field
fdf_set_opt -- Sets an option of a field
fdf_set_status -- Fija el valor de la clave /STATUS
fdf_set_submit_form_action -- Sets a submit form action of a field
fdf_set_target_frame -- Set target frame for form display
fdf_set_value -- Fijar el valor de un campo
fdf_set_version -- Sets version number for a FDF file