Re: session variables and SVG documents

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 3, 2010 at 8:20 AM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx>wrote:

> On Wed, 2010-02-03 at 10:49 +0100, Aurelie REYMUND wrote:
>
> > Hello,
> >
> > unfortunately, it does not suite my needs. The image must be clickable.
> The
> > application I'm developping reads data from a database and display the
> > information graphically. The user must be able to click on some elements
> of
> > the picture, and I have to store the information the user clicked on
> > (session vars). I cannot tell the user not to use IE, so I have to find
> > another solution...
> >
> > Regards,
> > Aurelie
> >
> > 2010/2/1 Ray Solomon <ray@xxxxxxxxxxxxxx>
> >
> > > From: "Aurelie REYMUND" <aurely001@xxxxxxxxx>
> > > Sent: Monday, February 01, 2010 3:37 AM
> > > To: <php-general@xxxxxxxxxxxxx>
> > > Subject:  session variables and SVG documents
> > >
> > >
> > >  Hello,
> > >>
> > >> I have the following problem with the Adobe SVG viewer:
> > >> I try to generate a SVG document using PHP. the following code is
> working
> > >> well under Firefox, as well as IE with ASV:
> > >>
> > >> <?php
> > >>
> > >> header("Content-type: image/svg+xml");
> > >>
> > >> $graph_title = 'title';
> > >>
> > >>
> > >> print('<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>');
> > >> $svgwidth=500;
> > >> $svgheight=400;
> > >> ?>
> > >>
> > >> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "
> > >> http://www.w3.org/TR/SVG/DTD/svg10.dtd";>
> > >> <svg width="<?php echo $svgwidth; ?>px" height="<?php echo $svgheight;
> > >> ?>px"
> > >> xmlns="http://www.w3.org/2000/svg";>
> > >>   <desc>This is a php-random rectangle test</desc>
> > >> <?php
> > >> srand((double) microtime() * 1000000); //initalizing random generator
> > >> for ($i = 0; $i < 20; $i+=1) {
> > >>   $x = floor(rand(0,$svgwidth-1)); //avoid getting a range 0..0 for
> rand
> > >> function
> > >>   $y = floor(rand(0,$svgheight-1));
> > >>   $width = floor(rand(0,$svgwidth-$x)); //avoid getting rect outside
> of
> > >> viewbox
> > >>   $height = floor(rand(0,$svgheight-$y));
> > >>   $red = floor(rand(0,255));
> > >>   $blue = floor(rand(0,255));
> > >>   $green = floor(rand(0,255));
> > >>   $color = "rgb(".$red.",".$green.",".$
> > >> blue.")";
> > >>   print "\t<rect x=\"$x\" y=\"$y\" width=\"$width\" height=\"$height\"
> > >> style=\"fill:$color;\"/>\n";
> > >> }
> > >> ?>
> > >>   <text x="<?php echo $svgwidth/2;?>px" y="300" style="font-size:15;"
> > >> text-anchor="middle">The servers Date and Time is: <?php print
> > >> (strftime("%Y-%m-%d, %H:%M:%S")); ?></text>
> > >>   <text x="<?php echo $svgwidth/2;?>px" y="340" style="font-size:15;"
> > >> text-anchor="middle">You are running:</text>
> > >>   <text x="<?php echo $svgwidth/2;?>px" y="360" style="font-size:15;"
> > >> text-anchor="middle"><?php print $HTTP_USER_AGENT; ?></text>
> > >> </svg>
> > >>
> > >> If now I want to include the session_start() at the beginning of the
> code,
> > >> in IE I got a pop-up dialog called "download file"
> > >>
> > >> What am I doing wrong ?
> > >>
> > >> Regards,
> > >> Aurelie
> > >>
> > >>
> > >
> > > It appears IE does not support svg yet and you need a plugin for it.
> > >
> > > However, you could also design your code differently by using
> Imagemagick
> > > to convert the svg to png.
> > > If that suits your needs, then use the modified code below:
> > >
> > >
> > > <?php
> > >
> > > header("Content-type: image/png");
> > >
> > > $graph_title = 'title';
> > >
> > > $svgwidth=500;
> > > $svgheight=400;
> > >
> > > $svg = '<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
> > > <svg width="'.$svgwidth.'px" height="'.$svgheight.'px" xmlns="
> > > http://www.w3.org/2000/svg";>
> > >   <desc>This is a php-random rectangle test</desc>';
> > >
> > >
> > > for ($i = 0; $i < 20; $i++) {
> > >
> > >        $x = floor(rand(0,$svgwidth-1));
> > >        $y = floor(rand(0,$svgheight-1));
> > >        $width = floor(rand(0,$svgwidth-$x));
> > >        $height = floor(rand(0,$svgheight-$y));
> > >        $red = floor(rand(0,255));
> > >        $blue = floor(rand(0,255));
> > >        $green = floor(rand(0,255));
> > >        $color = "rgb(".$red.",".$green.",".$blue.")";
> > >        $svg .= "\t<rect x=\"$x\" y=\"$y\" width=\"$width\"
> > > height=\"$height\" style=\"fill:$color;\"/>\n";
> > > }
> > >
> > >   $svg .= '<text x="'.($svgwidth/2).'px" y="300" style="font-size:15;"
> > > text-anchor="middle">The servers Date and Time is: '.date("Y-m-d,
> > > H:m:s").'</text>
> > >   <text x="'.($svgwidth/2).'px" y="340" style="font-size:15;"
> > > text-anchor="middle">You are running:</text>
> > >   <text x="'.($svgwidth/2).'px" y="360" style="font-size:15;"
> > > text-anchor="middle">'.$HTTP_USER_AGENT.'</text>
> > > </svg>';
> > >
> > >
> > > file_put_contents('/tmp/image.svg', $svg);
> > >
> > > exec("/usr/bin/rsvg /tmp/image.svg /tmp/image.png");
> > >
> > > echo file_get_contents('/tmp/image.png');
> > > ?>
> > >
> > > -Ray Solomon
> > >
> > >
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> > >
>
>
> IE doesn't display SVG natively, and the plugins for it are pants.
> However, IE does make use of its own propitiatory vector language called
> VML, This is how the Cufon font replacer system works.
>
> Thanks,
> Ash
> http://www.ashleysheridan.co.uk
>
>
>
Maybe svgweb (by Google) would allow you to achieve your goals:
http://code.google.com/p/svgweb/

Adam

-- 
Nephtali:  PHP web framework that functions beautifully
http://nephtaliproject.com

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux