232 lines
No EOL
6.2 KiB
PHP
232 lines
No EOL
6.2 KiB
PHP
<?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');
|
|
?>
|