123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- require('fpdf17/dashed_rect.php');
- require_once 'const.php';
- //Settare a false prima di uppare e true per il debug
- $debug=false;
- //Stampo il testo
- function printText($label,$value,$nline,$nx,$ny,$string=""){
- global $pdf,$Xinit,$Ymargin,$Ypadding,$spaceWidth,
- $XcellsWidth,$YcellsDepth,$fontType,$fontSize;
- $pdf->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');
- ?>
|