purtroppo ho notato che la gestione delle immagini sul pdf generato è molto carente, così ho apportato un paio di modifiche al codice per utilizzare meglio le GD
nel file admin/pdf_catalogue.pdf, cercate la funzione "ShowImage" alla riga 170, e sostituite l'intera funzione con questa:
Codice: Seleziona tutto
function ShowImage(&$width,&$height,$link,$path)
{
//$width=min($width,MAX_IMAGE_WIDTH);
//$height=min($height,MAX_IMAGE_HEIGHT);
$width = MAX_IMAGE_WIDTH;
$height= MAX_IMAGE_HEIGHT;
if(RESIZE_IMAGES) {
$destination =DIR_FS_CATALOG."catalogues/";
if(substr(strtolower($path), (strlen($path)-4),4)==".jpg" || substr(strtolower($path), (strlen($path)-5),5)==".jpeg") {
$src=imagecreatefromjpeg($path);
} else if (substr(strtolower($path), (strlen($path)-4),4)==".png") {
$src=imagecreatefrompng($path);
} else {
echo "Only PNG and JPEG";
exit();
}
$array=explode("/", $path);
$last=sizeof($array);
$size = getimagesize($path);
if($size[0] > $size[1]) {
$im=imagecreatetruecolor($width/PDF_TO_MM_FACTOR, $height/PDF_TO_MM_FACTOR);
imagecopyresampled($im, $src, 0, 0, 0, 0,$width/PDF_TO_MM_FACTOR, $height/PDF_TO_MM_FACTOR, $size[0], $size[1]);
} else {
$im=imagecreatetruecolor($height/PDF_TO_MM_FACTOR,$width/PDF_TO_MM_FACTOR);
imagecopyresampled($im, $src, 0, 0, 0, 0, $height/PDF_TO_MM_FACTOR, $width/PDF_TO_MM_FACTOR, $size[0], $size[1]);
}
if(!imagejpeg($im, $destination.$array[$last-1])) {
exit();
}
$path=$destination.$array[$last-1];
$this->SetLineWidth(1);
$this->Cell($width+3,$height,"",1,0);
$this->SetLineWidth(0.2);
$this->Image($path,($this->GetX()-$width), $this->GetY(), $width, $height,'',$link);
$this->SetFont('Arial','',8);
unlink($path);
} else {
$this->SetLineWidth(1);
// NH $this->Cell($width,$height,"",1,0);
$this->Cell($width+3,$height,"",SIZE_BORDER_IMAGE,0);
$this->SetLineWidth(0.2);
//NH $this->Image($path,($this->GetX()-$width), $this->GetY(), $width, $height,'',$link);
$this->Image($path,($this->GetX()-$width), $this->GetY(),$width ,'' ,'',$link);
$this->SetFont('Arial','',8);
}
}
Codice: Seleziona tutto
define('RESIZE_IMAGES',1);
Codice: Seleziona tutto
//Width max in mm
define('MAX_IMAGE_WIDTH',50);
//Height max in mm
define('MAX_IMAGE_HEIGHT',50);
un'ultima cosa: ho notato che se sono presenti i evcchi cataloghi, lo script non li sovrascrive! quindi quando generate un nuovo catalogo dovete cancellare i vecchi files
questo penso sia dovuto al parametro "safe_mode=on" del php.ini, magari su server diversi dal mio è settato off e il problema non sussiste...
Se avete linux come server usate un .htaccess e settate il parametro off (però poi diventa pericoloso magari con altri script!)
se non potete o non volete settare parametri del php.ini, bisogna modificare la classe di FPDF:
nel file pdf_fpdf.php, aggiungete sotto la riga 1062:
Codice: Seleziona tutto
if (file_exists($name)) {
unlink($name);
}
ciao, teo