/[openfoncier]/trunk/app/pdf_instruction.php
ViewVC logotype

Contents of /trunk/app/pdf_instruction.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 469 - (show annotations)
Wed Oct 3 16:09:03 2012 UTC (12 years, 4 months ago) by nhaye
Original Path: trunk/app/pdflettretype_instruction.php
File size: 23197 byte(s)
Correction de l'ouverture de pdf dans les sous formulaires de l'objet dossier

1 <?php
2 /**
3 *
4 *
5 * @package openmairie_exemple
6 * @version SVN : $Id: pdflettretype.php 278 2010-11-30 07:12:41Z fmichon $
7 */
8 // fpdf ne traite pas UTF8
9 // donc il faut utiliser decode
10 include ("../dyn/locales.inc.php");
11 require_once "../obj/utils.class.php";
12 $f = new utils("nohtml");
13
14 /**
15 *
16 */
17 // Nom de l'objet metier
18 (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = "");
19 (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");
20
21 /**
22 * en utilisant une table courrier (par exemple)
23 * on peut typer les courriers
24 * par destinataire
25 * suivant une date
26 * avec un complement
27 * voir openfoncier ou openpersonnalite
28 *
29 * cette table est desactivee dans l exemple
30 *
31 */
32
33
34 $sql_courrier="select * from ".DB_PREFIXE."instruction where instruction=".$idx;
35 $res = $f->db->query($sql_courrier);
36 $f->isDatabaseError($res);
37 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
38 $obj=$row['lettretype'];
39 //if(DBCHARSET=='UTF8'){
40 // $titre= utf8_decode($lettretype["titre"]);
41 $destinataire=$row['destinataire']; // ***
42 $datecourrier=$row['datecourrier'];
43 $complement=$row['complement'];
44 $complement2=$row['complement2'];
45 $complement3=$row['complement3'];
46 $complement4=$row['complement4'];
47 $complement5=$row['complement5'];
48 $complement6=$row['complement6'];
49 $complement7=$row['complement7'];
50 $complement8=$row['complement8'];
51 $complement9=$row['complement9'];
52 $complement10=$row['complement10'];
53 $complement11=$row['complement11'];
54 $complement12=$row['complement12'];
55 $complement13=$row['complement13'];
56 $complement14=$row['complement14'];
57 $complement15=$row['complement15'];
58 }
59
60 // ligne a desactiver ==========================================================================
61 //$destinataire ="";
62 //$datecourrier=date('d/m/Y');
63 //$complement="<-Ici le complement->";
64 // =============================================================================================
65
66 // format date courrier en francais
67 if ($f->formatdate=="AAAA-MM-JJ"){
68 $valTemp=explode("-",$datecourrier);
69 $datecourrier = $valTemp[2]."/".$valTemp[1]."/".$valTemp[0];
70 }
71
72
73 /**
74 * acces table om_lettretype
75 */
76 $niveau='';
77 // requete SQL
78 $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj
79 $sql.= " and actif IS TRUE";
80 $sql.= " and om_collectivite ='".$_SESSION['collectivite']."'";
81 $res1 = $f->db->query($sql);
82 $f->isDatabaseError($res1);
83 if ($res1->numrows()==0){
84 $sql="select om_collectivite from ".DB_PREFIXE."om_collectivite where niveau ='2'";
85 $niveau=$f->db->getOne($sql);
86 //$res1->free();
87 $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj
88 $sql.= " and actif IS TRUE";
89 $sql.= " and om_collectivite ='".$niveau."'";
90 $res1 = $f->db->query($sql);
91 $f->isDatabaseError($res1);
92 }
93
94 if ($res1->numrows()==0){
95 //$res1->free();
96 $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj
97 $sql.= " and om_collectivite ='".$niveau."'";
98 $res1 = $f->db->query($sql);
99 $f->isDatabaseError($res1);
100 }
101
102 set_time_limit(180);
103 //require_once PATH_FPDF."fpdf.php";
104 require_once "../php/fpdf/fpdf.php"; // *** mettre le path FPDF
105 $collectivite = $f->collectivite; // bug array vide
106
107
108 class PDF extends FPDF {
109 /**
110 * Pied de page
111 */
112 function Footer() {
113 // NUMERO DE PAGE
114 //Positionnement à 1,5 cm du bas
115 $this->SetY(-15);
116 // Police Arial italique 8
117 $this->SetFont('Arial','I',8);
118 // Numero de page
119 $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
120 }
121
122 }
123
124
125 // INSTANCE PDF ================================================
126 // orientation P= portrait L=paysage
127 // unite mm (milimetre)
128 // format A4 A3
129 // =============================================================
130 $unite="mm";
131
132 while ($lettretype =& $res1->fetchRow(DB_FETCHMODE_ASSOC)) {
133
134 $pdf=new PDF($lettretype["orientation"],$unite,$lettretype["format"]);
135 // methode fpdf calcul nombre de page
136 $pdf->AliasNbPages();
137 // methode de creation de page
138 $pdf->AddPage();
139 // police ======================================================
140 // setFont 0 = times, arial
141 // 1 = I B ou ''
142 // 2 = 8 ....
143 // affichage image =============================================
144 // image 0 = nom
145 // 1 = left
146 // 2 = top
147 // 3 = width 0=calcul auto
148 // 4 = hauteur 0=calcul auto
149 // 5 = type image rien=exetension du fichier
150 // 6 = lien
151 // setXY (left,top) =============================================
152 // affichage multicell ==========================================
153 // multicell 0 = width =0 left->droite
154 // 1 = hauteur de la cellule
155 // 2 = texte
156 // 3 = bordure (0 ou 1)
157 // 4 = align (L C R J)
158 // 5 = 0 fd transparent
159 // 1 couleur (parametre à rajouter)
160 // ==============================================================
161 if(file_exists($f->getPathFolderTrs().$lettretype["logo"])) {
162 $pdf->Image($f->getPathFolderTrs().$lettretype["logo"],
163 $lettretype["logoleft"],
164 $lettretype["logotop"],
165 0,
166 0,
167 '',
168 '');
169 }
170 // variables statiques
171 $sql = $lettretype['om_sql'];
172 $titre= $lettretype["titre"];
173 $corps= $lettretype["corps"];
174
175
176 //
177 include("../dyn/varlettretypepdf.inc");
178 //
179 $res = $f->db->query($sql);
180 $f->isDatabaseError($res);
181 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
182 // titre
183 $temp = explode("[",$lettretype["titre"]);
184 for($i=1;$i<sizeof($temp);$i++){
185 $temp1 = explode("]",$temp[$i]);
186 $titre=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$titre);
187 }
188 //
189 //************************************************
190 // traitement attribut affichage <b> dans titre *
191 // aout 2008 *
192 //************************************************
193 $pos_t="";
194 $pos_t = strpos($titre, "<b>");
195 if(DBCHARSET=='UTF8')
196 $titre= utf8_decode($titre);
197 if ($pos_t === false) {
198 // compatibilite :aucun attribut affichage <b> dans corps
199 //***************************************************************************
200 if(trim($titre)!="") {
201 $pdf->SetFont($lettretype["titrefont"],
202 $lettretype["titreattribut"],
203 $lettretype["titretaille"]);
204 $pdf->SetXY($lettretype["titreleft"],
205 $lettretype["titretop"]);
206 $pdf->MultiCell($lettretype["titrelargeur"],
207 $lettretype["titrehauteur"],
208 $titre,
209 $lettretype["titrebordure"],
210 $lettretype["titrealign"],
211 0);
212 }
213 //****************************************************************************
214 // attribut affichage <b> present dans titre
215 }else{
216 $pdf->SetY($lettretype["titretop"]);
217 $tmptitre="";
218 $tmptitre=explode('<b>', $titre);
219 //
220 for($y=0;$y<sizeof($tmptitre);$y++){
221 $pos1="";
222 $pos1 = strpos($tmptitre[$y], "</b>");
223 //
224 if ($pos1 === false) {
225 if(trim($tmptitre[$y])!="") {
226 $pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]);
227 $pdf->SetX($lettretype["titreleft"]);
228 $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0);
229 }
230 }else{
231 $ctrl_fin_b=0;
232 $ctrl_fin_b=substr_count($tmptitre[$y],"</b>");
233 $lettretype["titreattribut"] = str_replace("B","",$lettretype["titreattribut"]);
234 $lettretype["titreattribut"] = str_replace("b","",$lettretype["titreattribut"]);
235 if ($ctrl_fin_b>1){
236 // nbr </b> superieur a 1
237 if(trim($tmptitre[$y])!="") {
238 $pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]);
239 $pdf->SetX($lettretype["titreleft"]);
240 $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0);
241 }
242 }else{
243 $tmptitre1 = explode("</b>",$tmptitre[$y]);
244 //
245 if(trim($tmptitre1[0])!="") {
246 $pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]);
247 $pdf->SetX($lettretype["titreleft"]);
248 $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[0],$lettretype["titrebordure"],$lettretype["titrealign"],0);
249 }
250 if(trim($tmptitre1[1])!=""){
251 $pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]);
252 $pdf->SetX($lettretype["titreleft"]);
253 $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[1],$lettretype["titrebordure"],$lettretype["titrealign"],0);
254 }
255 }
256 //
257 }
258 }
259 }
260 // corps
261
262 $temp = explode("[",$lettretype["corps"]);
263 for($i=1;$i<sizeof($temp);$i++){
264 $temp1 = explode("]",$temp[$i]);
265 $corps=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$corps);
266 //18//11/2011 +
267 $temp1[0]="";
268 //FIN +
269 }
270 //18//11/2011++
271 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
272 $pdf->SetXY($lettretype["corpsleft"],$lettretype["corpstop"]);
273 //FIN++
274 //18//11/2011 AJOUT \p
275 if (strstr($corps,'\p')){
276 $temp="";
277 $temp = explode("\p",$corps);
278 ////////////////////////
279 // image en fond de page
280 if (file_exists("../trs/bg_".$obj."1.png")) {
281 $pdf->Image("../trs/bg_".$obj."1.png", 0, 0, 210, 0, '', '');
282 }
283 ////////////////////////
284 //************************************************
285 //traitement attribut affichage <b> dans $temp[0]*
286 // aout 2008 *
287 //************************************************
288 $pos="";
289 $pos = strpos($temp[0], "<b>");
290 if ($pos === false) {
291 // compatibilite :aucun attribut affichage dans corps
292 //***************************************************************************
293 $pdf->MultiCell($lettretype["corpslargeur"],$lettretype["corpshauteur"],$temp[0],$lettretype["corpsbordure"],$lettretype["corpsalign"],0);
294 }else{
295 $tmp="";
296 $tmp=explode('<b>', $temp[0]);
297 //
298 for($x=0;$x<sizeof($tmp);$x++){
299 $pos1="";
300 $pos1 = strpos($tmp[$x], "</b>");
301 //
302 if ($pos1 === false) {
303 if(trim($tmp[$x])!=""){
304 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
305 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
306 }
307 }else{
308 $ctrl_fin_b=0;
309 $ctrl_fin_b=substr_count($tmp[$x],"</b>");
310 $lettretype["corpsattribut"] = str_replace("B","",$lettretype["corpsattribut"]);
311 $lettretype["corpsattribut"] = str_replace("b","",$lettretype["corpsattribut"]);
312 if ($ctrl_fin_b>1){
313 // nbr </b> superieur a 1
314 if(trim($tmp[$x])!=""){
315 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
316 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
317 }
318 }else{
319 $tmp1 = explode("</b>",$tmp[$x]);
320 //
321 if(trim($tmp1[0])!=""){
322 //
323 $nbcar=0;
324 $nbcar=$tmp1[0];
325 if( strlen($nbcar)==1) {
326 // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs
327 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
328 $pdf->write($lettretype["corpshauteur"]," ".$tmp1[0]." ");
329 }else{
330 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
331 $pdf->write($lettretype["corpshauteur"],$tmp1[0]);
332 }
333 }
334 if(trim($tmp1[1])!=""){
335 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
336 $pdf->write($lettretype["corpshauteur"],$tmp1[1]);
337 }
338 }
339 //
340 }
341 }
342 }
343 for($i=1;$i<sizeof($temp);$i++){
344 $pdf->AddPage();
345 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
346 $pdf->SetXY($lettretype["corpsleft"],$lettretype["titretop"]);
347 ////////////////////////
348 // image en fond de page
349 if (file_exists("../trs/bg_".$obj.($i+1).".png")) {
350 $pdf->Image("../trs/bg_".$obj.($i+1).".png", 0, 0, 210, 0, '', '');
351 }
352 //************************************************
353 //traitement attribut affichage <b> dans $temp[$i]*
354 // aout 2008 *
355 //************************************************
356 $pos="";
357 $pos = strpos($temp[$i], "<b>");
358 if ($pos === false) {
359 // compatibilite :aucun attribut affichage dans corps
360 //***************************************************************************
361 $pdf->MultiCell($lettretype["corpslargeur"],$lettretype["corpshauteur"],$temp[$i],$lettretype["corpsbordure"],$lettretype["corpsalign"],0);
362 }else{
363 $tmp="";
364 $tmp=explode('<b>', $temp[$i]);
365 //
366 for($x=0;$x<sizeof($tmp);$x++){
367 $pos1="";
368 $pos1 = strpos($tmp[$x], "</b>");
369 //
370 if ($pos1 === false) {
371 if(trim($tmp[$x])!=""){
372 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
373 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
374 }
375 }else{
376 $ctrl_fin_b=0;
377 $ctrl_fin_b=substr_count($tmp[$x],"</b>");
378 $lettretype["corpsattribut"] = str_replace("B","",$lettretype["corpsattribut"]);
379 $lettretype["corpsattribut"] = str_replace("b","",$lettretype["corpsattribut"]);
380 if ($ctrl_fin_b>1){
381 // nbr </b> superieur a 1
382 if(trim($tmp[$x])!=""){
383 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
384 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
385 }
386 }else{
387 $tmp1 = explode("</b>",$tmp[$x]);
388 //
389 if(trim($tmp1[0])!=""){
390 //
391 $nbcar=0;
392 $nbcar=$tmp1[0];
393 if( strlen($nbcar)==1) {
394 // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs
395 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
396 $pdf->write($lettretype["corpshauteur"]," ".$tmp1[0]." ");
397 }else{
398 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
399 $pdf->write($lettretype["corpshauteur"],$tmp1[0]);
400 }
401 }
402 if(trim($tmp1[1])!=""){
403 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
404 $pdf->write($lettretype["corpshauteur"],$tmp1[1]);
405 }
406 }
407 //
408 }
409 }
410 }
411 }
412 }else{ //18/11/2011 fin ajout \p
413 //************************************************
414 // traitement attribut affichage <b> dans corps *
415 // aout 2008 *
416 //************************************************
417 $pos="";
418 $pos = strpos($corps, "<b>");
419 if(DBCHARSET=='UTF8')
420 $corps= utf8_decode($corps);
421 if ($pos === false) {
422 // compatibilite :aucun attribut affichage dans corps
423 //***************************************************************************
424 if(trim($corps)!="") {
425 $pdf->SetFont($lettretype["corpsfont"],
426 $lettretype["corpsattribut"],
427 $lettretype["corpstaille"]);
428 $pdf->SetXY($lettretype["corpsleft"],
429 $lettretype["corpstop"]);
430 $pdf->MultiCell($lettretype["corpslargeur"],
431 $lettretype["corpshauteur"] ,
432 $corps,
433 $lettretype["corpsbordure"],
434 $lettretype["corpsalign"],
435 0);
436 }
437 //****************************************************************************
438 // attribut affichage <b> present dans corps
439 }else{
440 $pdf->SetXY($lettretype["corpsleft"],$lettretype["corpstop"]);
441 $tmp="";
442 $tmp=explode('<b>', $corps);
443 //
444 for($x=0;$x<sizeof($tmp);$x++){
445 $pos1="";
446 $pos1 = strpos($tmp[$x], "</b>");
447 //
448 if ($pos1 === false) {
449 if(trim($tmp[$x])!=""){
450 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
451 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
452 }
453 }else{
454 $ctrl_fin_b=0;
455 $ctrl_fin_b=substr_count($tmp[$x],"</b>");
456 $lettretype["corpsattribut"] = str_replace("B","",$lettretype["corpsattribut"]);
457 $lettretype["corpsattribut"] = str_replace("b","",$lettretype["corpsattribut"]);
458 if ($ctrl_fin_b>1){
459 // nbr </b> superieur a 1
460 if(trim($tmp[$x])!=""){
461 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
462 $pdf->write($lettretype["corpshauteur"],$tmp[$x]);
463 }
464 }else{
465 $tmp1 = explode("</b>",$tmp[$x]);
466 //
467 if(trim($tmp1[0])!=""){
468 //
469 $nbcar=0;
470 $nbcar=$tmp1[0];
471 if( strlen($nbcar)==1) {
472 // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs
473 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
474 $pdf->write($lettretype["corpshauteur"]," ".$tmp1[0]." ");
475 }else{
476 $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);
477 $pdf->write($lettretype["corpshauteur"],$tmp1[0]);
478 }
479 }
480 if(trim($tmp1[1])!=""){
481 $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);
482 $pdf->write($lettretype["corpshauteur"],$tmp1[1]);
483 }
484 }
485 //
486 }
487 }
488 }
489 } //18/11/2011 fin de 'pas de \p'
490 // fermeture pdf
491 $pdf->Output($obj.date("dmY").".pdf","D");
492 }
493 }
494 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26