Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
// $Header: /cvsroot/html2ps/output.pdflib.1.6.class.php,v 1.2 2006/11/11 13:43:53 Konstantin Exp $
3
 
4
require_once(HTML2PS_DIR.'output.pdflib.class.php');
5
 
6
class PDFLIBForm {
7
  var $_name;
8
 
9
  function PDFLIBForm($name /*, $submit_action, $reset_action */) {
10
    $this->_name          = $name;
11
  }
12
 
13
  function name() {
14
    return $this->_name;
15
  }
16
}
17
 
18
class OutputDriverPdflib16 extends OutputDriverPdflib {
19
  function field_multiline_text($x, $y, $w, $h, $value, $name) {
20
    $font = $this->_control_font();
21
    pdf_create_field($this->pdf,
22
                     $x, $y, $x + $w, $y - $h,
23
                     $this->_fqn($name),
24
                     "textfield",
25
                     sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto} multiline {true}",
26
                             $value,
27
                             $value,
28
                             $font));
29
  }
30
 
31
  function field_text($x, $y, $w, $h, $value, $name) {
32
    $font = $this->_control_font();
33
    pdf_create_field($this->pdf,
34
                     $x, $y, $x + $w, $y - $h,
35
                     $this->_fqn($name),
36
                     "textfield",
37
                     sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto}",
38
                             $value,
39
                             $value,
40
                             $font));
41
  }
42
 
43
  function field_password($x, $y, $w, $h, $value, $name) {
44
    $font = $this->_control_font();
45
    pdf_create_field($this->pdf,
46
                     $x, $y, $x + $w, $y - $h,
47
                     $this->_fqn($name),
48
                     "textfield",
49
                     sprintf("currentvalue {%s} font {%s} fontsize {auto} password {true}", $value, $font));
50
  }
51
 
52
  function field_pushbutton($x, $y, $w, $h) {
53
    $font = $this->_control_font();
54
 
55
    pdf_create_field($this->pdf,
56
                     $x, $y, $x + $w, $y - $h,
57
                     $this->_fqn(sprintf("___Button%s",md5(time().rand()))),
58
                     "pushbutton",
59
                     sprintf("font {%s} fontsize {auto} caption {%s}",
60
                             $font,
61
                             " "));
62
  }
63
 
64
  function field_pushbuttonimage($x, $y, $w, $h, $field_name, $value, $actionURL) {
65
    $font = $this->_control_font();
66
 
67
    $action = pdf_create_action($this->pdf,
68
                                "SubmitForm",
69
                                sprintf("exportmethod {html} url=%s", $actionURL));
70
 
71
    pdf_create_field($this->pdf,
72
                     $x, $y, $x + $w, $y - $h,
73
                     $this->_fqn($field_name),
74
                     "pushbutton",
75
                     sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}",
76
                             $action,
77
                             $font,
78
                             " "));
79
  }
80
 
81
  function field_pushbuttonreset($x, $y, $w, $h) {
82
    $font = $this->_control_font();
83
 
84
    $action = pdf_create_action($this->pdf,
85
                                "ResetForm",
86
                                sprintf(""));
87
 
88
    pdf_create_field($this->pdf,
89
                     $x, $y, $x + $w, $y - $h,
90
                     $this->_fqn(sprintf("___ResetButton%d",$action)),
91
                     "pushbutton",
92
                     sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}",
93
                             $action,
94
                             $font,
95
                             " "));
96
  }
97
 
98
  function field_pushbuttonsubmit($x, $y, $w, $h, $field_name, $value, $actionURL) {
99
    $font = $this->_control_font();
100
 
101
    $action = pdf_create_action($this->pdf,
102
                                "SubmitForm",
103
                                sprintf("exportmethod {html} url=%s", $actionURL));
104
 
105
    pdf_create_field($this->pdf,
106
                     $x, $y, $x + $w, $y - $h,
107
                     $this->_fqn($field_name),
108
                     "pushbutton",
109
                     sprintf("action {activate %s} font {%s} fontsize {auto} caption {%s}",
110
                             $action,
111
                             $font,
112
                             " "));
113
  }
114
 
115
  function field_checkbox($x, $y, $w, $h, $name, $value, $checked) {
116
    pdf_create_field($this->pdf,
117
                     $x, $y, $x + $w, $y - $h,
118
                     $this->_fqn($name),
119
                     "checkbox",
120
                     sprintf("buttonstyle {cross} currentvalue {%s} defaultvalue {%s} itemname {%s}",
121
                             $checked ? $value : "Off",
122
                             $checked ? $value : "Off",
123
                             $value));
124
  }
125
 
126
  function field_radio($x, $y, $w, $h, $groupname, $value, $checked) {
127
    $fqgn = $this->_fqn($groupname, true);
128
 
129
    if (!isset($this->_radiogroups[$fqgn])) {
130
      $this->_radiogroups[$fqgn] = pdf_create_fieldgroup($this->pdf, $fqgn, "fieldtype=radiobutton");
131
    };
132
 
133
    pdf_create_field($this->pdf,
134
                     $x, $y, $x + $w, $y - $h,
135
                     sprintf("%s.%s",$fqgn,$value),
136
                     "radiobutton",
137
                     sprintf("buttonstyle {circle} currentvalue {%s} defaultvalue {%s} itemname {%s}",
138
                             $checked ? $value : "Off",
139
                             $checked ? $value : "Off",
140
                             $value));
141
  }
142
 
143
  function field_select($x, $y, $w, $h, $name, $value, $options) {
144
    $items_str = "";
145
    $text_str  = "";
146
    foreach ($options as $option) {
147
      $items_str .= sprintf("%s ",$option[0]);
148
      $text_str  .= sprintf("%s ",$option[1]);
149
    };
150
 
151
    $font = $this->_control_font();
152
    pdf_create_field($this->pdf,
153
                     $x, $y, $x + $w, $y - $h,
154
                     $this->_fqn($name),
155
                     "combobox",
156
                     sprintf("currentvalue {%s} defaultvalue {%s} font {%s} fontsize {auto} itemnamelist {%s} itemtextlist {%s}",
157
                             $value,
158
                             $value,
159
                             $font,
160
                             $items_str,
161
                             $text_str));
162
  }
163
 
164
  function new_form($name) {
165
    $this->_forms[] = new PDFLIBForm($name);
166
 
167
    pdf_create_fieldgroup($this->pdf, $name, "fieldtype=mixed");
168
  }
169
 
170
  /* private routines */
171
 
172
  function _control_font() {
173
    return pdf_load_font($this->pdf, "Helvetica", "winansi", "embedding=true subsetting=false");
174
  }
175
 
176
  function _lastform() {
177
    if (count($this->_forms) == 0) {
178
      /**
179
       * Handle invalid HTML; if we've met an input control outside the form,
180
       * generate a new form with random name
181
       */
182
 
183
      $name = sprintf("AnonymousFormObject_%u", md5(rand().time()));
184
 
185
      $this->_forms[] = new PDFLIBForm($name);
186
      pdf_create_fieldgroup($this->pdf, $name, "fieldtype=mixed");
187
 
188
      error_log(sprintf("Anonymous form generated with name %s; check your HTML for validity",
189
                        $name));
190
    };
191
 
192
    return $this->_forms[count($this->_forms)-1];
193
  }
194
 
195
  function _valid_name($name) {
196
    if (empty($name)) { return false; };
197
 
198
    return true;
199
  }
200
 
201
  function _fqn($name, $allowexisting=false) {
202
    if (!$this->_valid_name($name)) {
203
      $name = uniqid("AnonymousFormFieldObject_");
204
      error_log(sprintf("Anonymous field generated with name %s; check your HTML for validity",
205
                        $name));
206
    };
207
 
208
    $lastform = $this->_lastform();
209
    $fqn = sprintf("%s.%s",
210
                   $lastform->name(),
211
                   $name);
212
 
213
    if (array_search($fqn, $this->_field_names) === FALSE) {
214
      $this->_field_names[] = $fqn;
215
    } elseif (!$allowexisting) {
216
      error_log(sprintf("Interactive form '%s' already contains field named '%s'",
217
                        $lastform->name(),
218
                        $name));
219
      $fqn .= md5(rand().time());
220
    };
221
 
222
    return $fqn;
223
  }
224
}
225
?>