[mapguide-users] Re: Generate a pdf view of the current map
Nick Sebastyan
nick_sebastyan at yahoo.com
Fri Jul 9 03:22:55 EDT 2010
That is very useful ram282, I succeeded to do what you did in java using iText,
but the quality of the resulting image is not very good.
I saw in your code that you generated a view of the map as a PNG file, mapguide
allows you to generate a view of the map as a DWF file, that act's as a SVG
file, the quality is just perfect.
I have found that Autodesk is giving for free the DWF Toolkit, and we ca use
that two read the contents of a DWF file and write it in a PDF file, and the
resulting PDF file will contain the map as a SVG rather than a PNG picture.
I am working on an application that will do that, but I do not know if our
clients will allow me to post the code after I finish it. :(
________________________________
From: ram282 <ram282 at gmail.com>
To: mapguide-users at lists.osgeo.org
Sent: Fri, July 9, 2010 7:18:25 AM
Subject: [mapguide-users] Re: Generate a pdf view of the current map
I had successfully generated pdf in this way....
In this, I am temporarily saving the image files and after generating the
pdf, I am deleting them. Yo should require the php file called fpdf.php,
through which u are going to generate the pdf.
And I also changed some configuration settings in the php.ini (LOCATED AT
C:\Program Files\OSGeo\MapGuide\Web\Php\php.ini)
remove the semicolon at the start of the lines
;extension=php_curl.dll
;extension=php_gd2.dll in the php.ini file....
Here is the code..
<?php
$fusionMGpath = '../../layers/MapGuide/php/';
include $fusionMGpath . 'Common.php';
require($fusionMGpath . 'fpdf.php');
$locale = "en";
$mapName = "";
$sessionId = "";
$isTitle = "";
$isLegend = "";
$isArrow = "";
$title = "";
$scale = "";
$centerX = "";
$centerY = "";
$dpi = "";
$Server= "";
$clAgent = "Fusion%20Viewer";
$tempMapImgPath="";
GetRequestParameters();
$agent = GetRootVirtualFolder() . "/mapagent/mapagent.fcgi";
$imgRequest = $Server . $agent .
"?OPERATION=GETMAPIMAGE&VERSION=1.0.0&FORMAT=PNG&LOCALE=en&MAPNAME=" .
$mapName . "&SESSION=" . $sessionId .
"&SETDISPLAYWIDTH=480&SETDISPLAYHEIGHT=580&SETDISPLAYDPI=" . $dpi .
"&SETVIEWSCALE=" . $scale . "&SETVIEWCENTERX=" . $centerX .
"&SETVIEWCENTERY=" . $centerY . "&SEQ=0.2873515576651681&CLIENTAGENT=" .
$clAgent;
$LegendImgRequest = $Server . $agent .
"?OPERATION=GETMAPLEGENDIMAGE&VERSION=1.0.0&MAPNAME=" . $mapName .
"&SESSION=" . $sessionId . "&CLIENTAGENT=" . $clAgent .
"&WIDTH=180&HEIGHT=580&FORMAT=PNG";
// declaring the abcissa and ordinates of the images for the pdf.
$LegendA=10;
$LegendO=20;
$MapA=45;
$MapO=20;
$NorthA=145;
$NorthO=120;
class PDF extends FPDF
{
//Page header
function Header()
{
global $isTitle;
global $title;
if($isTitle=='1')
{
$this->SetFont('Arial','B',15);
$this->Cell(80);
$this->Cell(30,10,$title,0,1,'C');
$this->Ln(20);
}
}
//Page footer
function Footer()
{
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',8);
//Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//Instanciation of inherited class
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
if($isTitle=='0')
{
$LegendO=$LegendO-10;
$MapO=$MapO-10;
$NorthO=$NorthO-10;
}
if($isLegend=='0')
{
$MapA=$MapA-40;
$NorthA=$NorthA-40;
saveImage($imgRequest,$sessionId,"Map",".png");
$pdf->Image($tempMapImgPath,$MapA,$MapO,100,100);
unlink($tempMapImgPath);
}
if($isLegend=='1')
{
saveImage($LegendImgRequest,$sessionId,"Legend",".png");
$pdf->Image($tempMapImgPath,$LegendA,$LegendO,35,100);
unlink($tempMapImgPath);
}
saveImage($imgRequest,$sessionId,"Map",".png");
$pdf->Image($tempMapImgPath,$MapA,$MapO,100,100);
unlink($tempMapImgPath);
if($isArrow=='1')
{
$pdf->Image("pr_north.gif",$NorthA,$NorthO,15,15);
}
$pdf->Output();
function saveImage($imageSource,$sessionId,$ImageType,$ImageFormat)
{
global $tempMapImgPath;
$ch = curl_init($imageSource);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close($ch);
$tempMapImgPath = $ImageType.$sessionId.time().$ImageFormat;
$fp = fopen($tempMapImgPath,'w');
fwrite($fp, $rawdata);
fclose($fp);
}
function GetParameters($params)
{
global $mapName, $sessionId, $title, $locale;
global $scale, $centerX, $centerY, $dpi;
global $isTitle, $isLegend, $isArrow;
global $Server;
if(isset($params['LOCALE']))
$locale = $params['LOCALE'];
$mapName = $params['MAPNAME'];
$sessionId = $params['SESSION'];
$isTitle = $params['ISTITLE'];
$isLegend = $params['ISLEGEND'];
$isArrow = $params['ISARROW'];
$title = $params['TITLE'];
$scale = $params['SCALE'];
$centerX = $params['CENTERX'];
$centerY = $params['CENTERY'];
$dpi = $params['DPI'];
$Server = $params['SERVER'];
}
function GetRequestParameters()
{
if($_SERVER['REQUEST_METHOD'] == "POST")
GetParameters($_POST);
else
GetParameters($_GET);
}
?>
save the above code as some file mappdf.php in the folder C:\Program
Files\OSGeo\MapGuide\Web\www\fusion\widgets\Print
I will call this pdf file from print.js (widget)
showPdf: function() {
var mainMap = this.getMap();
// this.printablePdfURL is Fusion.getFusionURL() + widgetTag.location +
'Print/mappdf.php';
var url = this.printablePdfURL + '?';
var extents = mainMap.getCurrentExtents();
var centerX = (extents.left + extents.right) / 2;
var centerY = (extents.top + extents.bottom) / 2;
var dpi = mainMap._nDpi;
var scale = mainMap.getScale();
var maps = mainMap.getAllMaps();
url = url + 'MAPNAME=' + mainMap.getMapName();
url = url + '&SESSION=' + maps[0].getSessionID();
url = url + '&CENTERX=' + centerX;
url = url + '&CENTERY=' + centerY;
url = url + '&DPI=' + dpi;
url = url + '&SCALE=' + scale;
url = url + '&ISTITLE=' + (this.showTitle != '' ? '1' : '0');
url = url + '&ISLEGEND=' + (this.showLegend ? '1' : '0');
url = url + '&ISARROW=' + (this.showNorthArrow ? '1' : '0');
url = url + '&SERVER=' +
Fusion.getFusionURL().split('/mapguide')[0];
if (this.pageTitle != '') {
url = url + '&TITLE=' + this.pageTitle;
}
window.open(url, 'printablepdf', '');
}
--
View this message in context:
http://osgeo-org.1803224.n2.nabble.com/Generate-a-pdf-view-of-the-current-map-tp5264270p5272913.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
_______________________________________________
mapguide-users mailing list
mapguide-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20100709/cdf4a1c6/attachment.html
More information about the mapguide-users
mailing list