Ciao a tutti, ho trovato un codice che genera un calendario stampabile in pdf
Vorrei adattarlo perchè in questo codice l'immagine che puoi usare è solo una mentre io vorrei che tramite un input type si potessero scegliere le immagini e che la variabile $logo divenisse un array che recupera le scelte della input type.
Ho tipo 3 temi diversi da scelgiere e ognuno 12 foto, mi va anche bene che si possa scegliere anche solo il tema e le 12 immagini poi vengano assegnate direttamente ai mesi senza che si possa scegliere mese per mese l'immagine da associare....
Non sono una cima in php! so che si può fare ma non ho chiaro come.
Vi posto sotto il codice completo.
Grazie!
japan
<?php
require_once("class.ezpdf.php");
class calendarPDF extends Cezpdf {
var $calArray = array();
var $yearNum = NULL;
var $logo = NULL;
var $easterDay = array();
function buildCalendar($yearYouWant,$logoPath){
$this->yearNum = empty($yearYouWant) ? intval(date("Y")) : $yearYouWant;
$this->logo = $logoPath;
$e = strtotime("$yearYouWant-03-21 +".
easter_days($yearYouWant)." days");
$this->easterDay = array("month"=>intval(date("n",$e)),
"day"=>intval(date("j",$e)));
for ($i=1;$i<=12;$i++) {
$this->buildMonths($i);
}
}
function buildMonths ($monthNum)
{
$giorniSettimana = array("Domenica","Lunedì","Martedì","Mercoledì",
"Giovedì","Venerdì","Sabato");
$mesiAnno = array("GENNAIO","FEBBRAIO","MARZO","APRILE","MAGGI O",
"GIUGNO","LUGLIO","AGOSTO","SETTEMBRE","OTTOBR E",
"NOVEMBRE","DICEMBRE");
$firstDay = mktime(0,0,0,$monthNum,1,$this->yearNum);
$daysPerMonth = intval(date("t",$firstDay));
$monthName = $mesiAnno[$monthNum-1];
for ($i = 1; $i<=$daysPerMonth; $i++)
{
$actualDay = mktime(0,0,0,$monthNum,$i,$this->yearNum);
$numDay = intval(date("w",$actualDay));
if ($numDay == 0 ) {
$f = true;
}
elseif ($this->isHoliday($monthNum,date("j",$actualDay))) {
$f = true;
}
elseif (($monthNum == $this->easterDay['month']) &&
(intval(date("j",$actualDay)) == $this->easterDay['day']+1)) {
$f = true;
}
else {
$f = false;
}
$this->calArray[$monthName][] = array("day"=>date("d",$actualDay),
"weekday"=>iconv('UTF-8','CP1252',
$giorniSettimana[$numDay]),
"F"=>$f);
}
}
function isHoliday ($monthNumber,$dayNumber)
{
$monthNumber = intval($monthNumber);
$dayNumber = intval($dayNumber);
$holiday = array(1=>array(1,6),
4=>array(25),
5=>array(1),
6=>array(2),
8=>array(15),
11=>array(1),
12=>array(8,25,26)
);
$holidayKeys = array_keys($holiday);
if (in_array($monthNumber,$holidayKeys)){
if (in_array($dayNumber,$holiday[$monthNumber])) {
return true;
}
}
return false;
}
}
?>
Ecco infine il codice per generare il calendario in PDF:
<?php
require_once("calendario_ita.php");
$cal = new calendarPDF('a4','portrait');
$cal->buildCalendar(2009,"./logo.png");
$cal->selectFont('./fonts/Helvetica.afm');
$tmp = array(
'b'=>'Helvetica-Bold.afm'
,'i'=>'Helvetica-Oblique.afm'
,'bi'=>'Helvetica-BoldOblique.afm'
,'ib'=>'Helvetica-BoldOblique.afm'
,'bb'=>'Helvetica-Bold.afm'
);
$cal->setFontFamily("Helvetica.afm",$tmp);
$cal->ezSetMargins(30,20,60,30);
foreach ($cal->calArray as $calMonth => $dati) {
$cal->ezImage($cal->logo,0,490,"none","left");
$cal->setColor(0,0,1,0);
$monthString = "".$calMonth." ".$cal->yearNum."";
$cal->ezSetY(700);
$cal->ezText($monthString,18);
$cal->ezSetDY(-10);
$cal->setColor(0,0,0);
foreach ($dati as $singleDay) {
$toPrint = $singleDay['day']." ".$singleDay['weekday'];
if ($singleDay['F']) {
$toPrint = "".$toPrint."";
$cal->setColor(1,0,0,0);
}
$y = $cal->ezText($toPrint,14);
$cal->setColor(0,0,0,0);
$cal->setLineStyle(1);
$cal->line(155,$y,540,$y);
$y = $cal->ezSetDY(-4);
}
$cal->ezNewPage();
}
$cal->stream();
?>