Re: session variables and SVG documents

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

 



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
>
>

[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