Esempio n. 1
0
function forge_fdf_fields(&$fdf, &$fdf_data, &$fields_hidden, &$fields_readonly, $accumulated_name, $strings_b)
{
    if (0 < strlen($accumulated_name)) {
        $accumulated_name .= '.';
        // append period seperator
    }
    foreach ($fdf_data as $key => $value) {
        // we use string casts to prevent numeric strings from being silently converted to numbers
        $fdf .= "<< ";
        // open dictionary
        if (gettype($value) == 'array') {
            // parent; recurse
            $fdf .= "/T (" . escape_pdf_string((string) $key) . ") ";
            // partial field name
            $fdf .= "/Kids [ ";
            // open Kids array
            // recurse
            forge_fdf_fields($fdf, $value, $fields_hidden, $fields_readonly, $accumulated_name . (string) $key, $strings_b);
            $fdf .= "] ";
            // close Kids array
        } else {
            // field name
            $fdf .= "/T (" . escape_pdf_string((string) $key) . ") ";
            // field value
            if ($strings_b) {
                // string
                $fdf .= "/V (" . escape_pdf_string((string) $value) . ") ";
            } else {
                // name
                $fdf .= "/V /" . escape_pdf_name((string) $value) . " ";
            }
            // field flags
            forge_fdf_fields_flags($fdf, $accumulated_name . (string) $key, $fields_hidden, $fields_readonly);
        }
        $fdf .= ">> \r";
        // close dictionary
    }
}
Esempio n. 2
0
/**
*   Generates the fdf code
*
*@param String      $pdf_form_url:  a string containing a URL path to a PDF file on the
*                   server. This PDF MUST exist and contain fields with
*                   the names referenced by $pdf_data for this function
*                   to work.
*@param Array   	$fdf_data_strings:  an array of any fields in $pdf_form_url that you want to
*                   populate, of the form key=>val; where the field
*                   name is the key, and the field's value is in val.
*@return String 
**/
function forge_fdf($pdf_form_url, $fdf_data_strings, $fdf_data_names, $fields_hidden, $fields_readonly)
{
    $fdf = "%FDF-1.2\r%ту╧╙\r\n";
    // header
    $fdf .= "1 0 obj\r<< ";
    // open the Root dictionary
    $fdf .= "\r/FDF << ";
    // open the FDF dictionary
    $fdf .= "/Fields [ ";
    // open the form Fields array
    // string data, used for text fields, combo boxes and list boxes
    foreach ($fdf_data_strings as $key => $value) {
        $fdf .= "<< /V (" . escape_pdf_string($value) . ")" . "/T (" . escape_pdf_string($key) . ") ";
        if (in_array($key, $fields_hidden)) {
            $fdf .= "/SetF 2 ";
        } else {
            $fdf .= "/ClrF 2 ";
        }
        if (in_array($key, $fields_readonly)) {
            $fdf .= "/SetFf 1 ";
        } else {
            $fdf .= "/ClrFf 1 ";
        }
        $fdf .= ">> \r";
    }
    // name data, used for checkboxes and radio buttons
    // (e.g., /Yes and /Off for true and false)
    foreach ($fdf_data_names as $key => $value) {
        $fdf .= "<< /V /" . escape_pdf_name($value) . " /T (" . escape_pdf_string($key) . ") ";
        if (in_array($key, $fields_hidden)) {
            $fdf .= "/SetF 2 ";
        } else {
            $fdf .= "/ClrF 2 ";
        }
        if (in_array($key, $fields_readonly)) {
            $fdf .= "/SetFf 1 ";
        } else {
            $fdf .= "/ClrFf 1 ";
        }
        $fdf .= ">> \r";
    }
    $fdf .= "] \r";
    // close the Fields array
    // the PDF form filename or URL, if given
    if ($pdf_form_url) {
        $fdf .= "/F (" . escape_pdf_string($pdf_form_url) . ") \r";
    }
    $fdf .= ">> \r";
    // close the FDF dictionary
    $fdf .= ">> \rendobj\r";
    // close the Root dictionary
    // trailer; note the "1 0 R" reference to "1 0 obj" above
    $fdf .= "trailer\r<<\r/Root 1 0 R \r\r>>\r";
    $fdf .= "%%EOF\r\n";
    return $fdf;
}