_name = $name; } function name() { return $this->_name; } } class OutputDriverPdflib16 extends OutputDriverPdflib { function field_multiline_text($x, $y, $w, $h, $value, $name) { $font = $this->_control_font(); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($name), "textfield", sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto} multiline {true}", $value, $value, $font)); } function field_text($x, $y, $w, $h, $value, $name) { $font = $this->_control_font(); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($name), "textfield", sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto}", $value, $value, $font)); } function field_password($x, $y, $w, $h, $value, $name) { $font = $this->_control_font(); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($name), "textfield", sprintf("currentvalue {%s} font {%s} fontsize {auto} password {true}", $value, $font)); } function field_pushbutton($x, $y, $w, $h) { $font = $this->_control_font(); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn(sprintf("___Button%s",md5(time().rand()))), "pushbutton", sprintf("font {%s} fontsize {auto} caption {%s}", $font, " ")); } function field_pushbuttonimage($x, $y, $w, $h, $field_name, $value, $actionURL) { $font = $this->_control_font(); $action = pdf_create_action($this->pdf, "SubmitForm", sprintf("exportmethod {html} url=%s", $actionURL)); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($field_name), "pushbutton", sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}", $action, $font, " ")); } function field_pushbuttonreset($x, $y, $w, $h) { $font = $this->_control_font(); $action = pdf_create_action($this->pdf, "ResetForm", sprintf("")); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn(sprintf("___ResetButton%d",$action)), "pushbutton", sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}", $action, $font, " ")); } function field_pushbuttonsubmit($x, $y, $w, $h, $field_name, $value, $actionURL) { $font = $this->_control_font(); $action = pdf_create_action($this->pdf, "SubmitForm", sprintf("exportmethod {html} url=%s", $actionURL)); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($field_name), "pushbutton", sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}", $action, $font, " ")); } function field_checkbox($x, $y, $w, $h, $name, $value, $checked) { pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($name), "checkbox", sprintf("buttonstyle {cross} currentvalue {%s} defaultvalue {%s} itemname {%s}", $checked ? $value : "Off", $checked ? $value : "Off", $value)); } function field_radio($x, $y, $w, $h, $groupname, $value, $checked) { $fqgn = $this->_fqn($groupname, true); if (!isset($this->_radiogroups[$fqgn])) { $this->_radiogroups[$fqgn] = pdf_create_fieldgroup($this->pdf, $fqgn, "fieldtype=radiobutton"); }; pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, sprintf("%s.%s",$fqgn,$value), "radiobutton", sprintf("buttonstyle {circle} currentvalue {%s} defaultvalue {%s} itemname {%s}", $checked ? $value : "Off", $checked ? $value : "Off", $value)); } function field_select($x, $y, $w, $h, $name, $value, $options) { $items_str = ""; $text_str = ""; foreach ($options as $option) { $items_str .= sprintf("%s ",$option[0]); $text_str .= sprintf("%s ",$option[1]); }; $font = $this->_control_font(); pdf_create_field($this->pdf, $x, $y, $x + $w, $y - $h, $this->_fqn($name), "combobox", sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto} itemnamelist {%s} itemtextlist {%s}", $value, $value, $font, $items_str, $text_str)); } function new_form($name) { $this->_forms[] = new PDFLIBForm($name); pdf_create_fieldgroup($this->pdf, $name, "fieldtype=mixed"); } /* private routines */ function _control_font() { return pdf_load_font($this->pdf, "Helvetica", "winansi", "embedding=true subsetting=false"); } function _lastform() { if (count($this->_forms) == 0) { /** * Handle invalid HTML; if we've met an input control outside the form, * generate a new form with random name */ $name = sprintf("AnonymousFormObject_%u", md5(rand().time())); $this->_forms[] = new PDFLIBForm($name); pdf_create_fieldgroup($this->pdf, $name, "fieldtype=mixed"); error_log(sprintf("Anonymous form generated with name %s; check your HTML for validity", $name)); }; return $this->_forms[count($this->_forms)-1]; } function _valid_name($name) { if (empty($name)) { return false; }; return true; } function _fqn($name, $allowexisting=false) { if (!$this->_valid_name($name)) { $name = uniqid("AnonymousFormFieldObject_"); error_log(sprintf("Anonymous field generated with name %s; check your HTML for validity", $name)); }; $lastform = $this->_lastform(); $fqn = sprintf("%s.%s", $lastform->name(), $name); if (array_search($fqn, $this->_field_names) === FALSE) { $this->_field_names[] = $fqn; } elseif (!$allowexisting) { error_log(sprintf("Interactive form '%s' already contains field named '%s'", $lastform->name(), $name)); $fqn .= md5(rand().time()); }; return $fqn; } } ?>