graphics/pdfclock
Create an analog clock with current time.
Download PHP Code Switch to Java Code Show Output
<?php
/*
* A little PDFlib application to draw an analog clock.
*/
$RADIUS = 200.0;
$MARGIN = 20.0;
try {
$p = new PDFlib();
// This means we must check return values of load_font() etc.
$p->set_option("errorpolicy=return");
/* all strings are expected as utf8 */
/* open new PDF file; insert a file name to create the PDF on disk */
if ($p->begin_document("", "") == 0) {
die("Error: " . $p->get_errmsg());
}
$p->set_info("Creator", "pdfclock.php");
$p->set_info("Author", "Rainer Schaaf");
$p->set_info("Title", "PDF clock (PHP)");
$p->begin_page_ext(2 * ($RADIUS + $MARGIN), 2 * ($RADIUS + $MARGIN), "");
$p->translate($RADIUS + $MARGIN, $RADIUS + $MARGIN);
$p->setcolor("fillstroke", "rgb", 0.0, 0.0, 1.0, 0.0);
$p->save();
/* minute strokes */
$p->setlinewidth(2.0);
for ($alpha = 0; $alpha < 360; $alpha += 6)
{
$p->rotate(6.0);
$p->moveto($RADIUS, 0.0);
$p->lineto($RADIUS-$MARGIN/3, 0.0);
$p->stroke();
}
$p->restore();
$p->save();
/* 5 minute strokes */
$p->setlinewidth(3.0);
for ($alpha = 0; $alpha < 360; $alpha += 30)
{
$p->rotate(30.0);
$p->moveto($RADIUS, 0.0);
$p->lineto($RADIUS-$MARGIN, 0.0);
$p->stroke();
}
// set timezone to avoid PHP warnings
date_default_timezone_set('Europe/Berlin');
$ltime = getdate();
/* draw hour hand */
$p->save();
$p->rotate(-(($ltime['minutes']/60.0)+$ltime['hours']-3.0)*30.0);
$p->moveto(-$RADIUS/10, -$RADIUS/20);
$p->lineto($RADIUS/2, 0.0);
$p->lineto(-$RADIUS/10, $RADIUS/20);
$p->closepath();
$p->fill();
$p->restore();
/* draw minute hand */
$p->save();
$p->rotate(-(($ltime['seconds']/60.0)+$ltime['minutes']-15.0)*6.0);
$p->moveto(-$RADIUS/10, -$RADIUS/20);
$p->lineto($RADIUS * 0.8, 0.0);
$p->lineto(-$RADIUS/10, $RADIUS/20);
$p->closepath();
$p->fill();
$p->restore();
/* draw second hand */
$p->setcolor("fillstroke", "rgb", 1.0, 0.0, 0.0, 0.0);
$p->setlinewidth(2);
$p->save();
$p->rotate(-(($ltime['seconds'] - 15.0) * 6.0));
$p->moveto(-$RADIUS/5, 0.0);
$p->lineto($RADIUS, 0.0);
$p->stroke();
$p->restore();
/* draw little circle at center */
$p->circle(0, 0, $RADIUS/30);
$p->fill();
$p->restore();
$p->end_page_ext("");
$p->end_document("");
$buf = $p->get_buffer();
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=pdfclock.pdf");
print $buf;
}
catch (PDFlibException $e) {
die("PDFlib exception occurred in pdfclock sample:\n" .
"[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
$e->get_errmsg() . "\n");
}
catch (Throwable $e) {
die($e);
}
$p = 0;
?>