SetFont($fontType,'B',$fontSize); //Spostamento in base alla posizione della cella nella colonna $Xcol=$XcellsWidth*($nx-1); //Spostamento in base alla lunghezza della parola precedente, //deve essere seguita dopo il settaggio del font $Xword=$pdf->GetStringWidth($string); //Spostamento in base alla posizione della cella tra le righe $YInLine=$Ypadding*$nline; $Yrow=$YcellsDepth*($ny-1); //Spostamento in base alla posizione della linea all'interno della cella $YInLine=$Ypadding*$nline; //Print della label $pdf->Text( $Xinit+$Xcol+$Xword, $Ymargin+$YInLine+$Yrow, $label ); $string.=$label; $pdf->SetFont($fontType,'',$fontSize); $Xword=$pdf->GetStringWidth($string); //Print del valore $pdf->Text( $Xinit+$Xcol+$Xword+$spaceWidth*2, $Ymargin+$YInLine+$Yrow, $value ); $string.=$value; return $string; } //Stampo il contorno function printBorder($nx,$ny){ global $pdf,$Xmargin,$XcellsWidth,$Ymargin,$YcellsDepth,$borderWidth; $pdf->SetDrawColor(100); $pdf->DashedRect( $Xmargin+$XcellsWidth*($nx-1), $Ymargin+$YcellsDepth*($ny-1), $Xmargin+$XcellsWidth*$nx, $Ymargin+$YcellsDepth*$ny, $borderWidth,13 ); } //Raccolgo i dati $labels=Array(); $values=Array(); if(!$debug){ foreach ($_POST as $label => $value ){ if($value!=""){ $labels[$label]=str_replace("ids", "ID(s)", str_replace("_", " ", ucfirst($label))).": "; $new_value=$value; if($label=='user_ids') $new_value=explode(',', trim($value)); $values[$label]=$new_value; } } } else { require_once 'debug.php'; } $pdf=new PDF_DashedRect(); $pdf->AddPage(); for($c=1;$c<$maxcell;$c++) { for($l=1;$l<$maxline;$l++){ //TODO:Sgrezzare il codice che si ripete Nmila volte $bck_labels=$labels; $bck_values=$values; $row=1; if(isset($labels['nickname'])){ $div=""; if(isset($labels['key_server'])){ $div=" - "; $key2="key_server"; } else if(isset($labels['key_size'])){ $div=" - "; $key2="key_size"; } else if(isset($labels['expire_date'])){ $div=" - "; $key2="expire_date"; } $str=printText($labels['nickname'],$values['nickname'].$div,$row,$c,$l); unset($labels['nickname']); unset($values['nickname']); if($div==" - "){ $str=printText($labels[$key2],$values[$key2],$row,$c,$l,$str); unset($labels[$key2]); unset($values[$key2]); } $row++; } else if(isset($labels['key_server'])) { $div=""; if(isset($labels['key_size'])){ $div=" - "; $key2="key_size"; } else if(isset($labels['expire_date'])){ $div=" - "; $key2="expire_date"; } $str=printText($labels['key_server'],$values['key_server'].$div,$row,$c,$l); unset($labels['key_server']); unset($values['key_server']); if($div==" - "){ $str=printText($labels[$key2],$values[$key2],$row,$c,$l,$str); unset($labels[$key2]); unset($values[$key2]); } $row++; } else if(isset($labels['key_size'])){ $div=""; if(isset($labels['expire_date'])){ $div=" - "; $key2="expire_date"; } $str=printText($labels['key_size'],$values['key_size'].$div,$row,$c,$l); unset($labels['key_size']); unset($values['key_size']); if($div==" - "){ $str=printText($labels[$key2],$values[$key2],$row,$c,$l,$str); unset($labels[$key2]); unset($values[$key2]); } $row++; } //TODO: la prima volta misura 0, MISTERO DELLA FEDE! //var_dump($pdf->GetStringWidth($labels['fingerprint']." ".$values['fingerprint'])); if($pdf->GetStringWidth($labels['fingerprint']." ".$values['fingerprint'])>=$XcellsWidth){ $swap=preg_replace('/ /','',$values['fingerprint']); $values['fingerprint']=$swap; } $str=printText($labels['fingerprint'],$values['fingerprint'],$row,$c,$l); $row++; if(isset($labels['key_size'])){ $div=""; if(isset($labels['expire_date'])){ $div=" - "; $key2="expire_date"; } $str=printText($labels['key_size'],$values['key_size'].$div,$row,$c,$l); unset($labels['key_size']); unset($values['key_size']); if($div==" - "){ $str=printText($labels[$key2],$values[$key2],$row,$c,$l,$str); unset($labels[$key2]); unset($values[$key2]); } $row++; } else if(isset($labels['expire_date'])){ $div=""; $str=printText($labels['expire_date'],$values['expire_date'].$div,$row,$c,$l); unset($labels['expire_date']); unset($values['expire_date']); $row++; } $divider=" - "; $n_user_ids=count($values['user_ids']); if($n_user_ids==1){ printText($labels['user_ids'],$values['user_ids'][0],$row,$c,$l); } else { $str=""; for($i=0;$i<$n_user_ids;$i++){ if($i==0){ $str.=printText($labels['user_ids'],$values['user_ids'][$i],$row,$c,$l); // echo "div:".$labels['user_ids']." uid:".$values['user_ids'][$i]." i:".$i." row:".$row." c:".$c." l:".$l." str:".$str."\n"; } else { $div=$divider; if($str==""){ $div=""; } // echo "div:".$div." uid:".$values['user_ids'][$i]." i:".$i." row:".$row." c:".$c." l:".$l." str:".$str."\n"; $str.=printText($div,$values['user_ids'][$i],$row,$c,$l,$str); } $Xmove=$pdf->GetStringWidth($str); if($i+1<$n_user_ids){ if($Xmove+$pdf->GetStringWidth($divider.$values['user_ids'][$i+1])>=$XcellsWidth){ $str=""; $row++; } } } } //Ripristino i valori iniziali il giro successivo visto che uso unset // sugli elementi dell'array $labels=$bck_labels; $values=$bck_values; //Se ci sono troppe righe dentro una cella, vanno diminite il numero // di celle in una colonna //TODO: far qualcosa del genere anche se le righe dentro una cella // sono poche if($row>5 && $l==1 && $c==1){ $n_dif=$row-5; //TODO: Trovare una funzione che cali in modo migliore $maxline-=4+(2*$n_dif); $YcellsDepth+=$Ypadding*$n_dif; } printBorder($c,$l); //exit; } } //Disegno le forbicine $pdf->Image($img_path."cut_me.png",$Ymargin-2,2,3,3,"PNG"); $file_name_pdf="fingerprint_".$values['fingerprint'].".pdf"; $pdf->Output($file_name_pdf,'I'); ?>