set_option("searchpath={" . $searchpath . "}"); /* This means we must check return values of load_font() etc. */ $p->set_option("errorpolicy=return"); /* Start the document */ if ($p->begin_document($outfile, "") == 0) { throw new Exception("Error: " . $p->get_errmsg()); } $p->set_info("Creator", "PDFlib starter sample"); $p->set_info("Title", "starter_geospatial"); /* Load the map $image */ $image = $p->load_image("auto", $imagefile, ""); if ($image == 0) { throw new Exception("Error: " . $p->get_errmsg()); } /* Retrieve $image width and height */ $mapwidth = $p->info_image($image, "imagewidth", ""); $mapheight = $p->info_image($image, "imageheight", ""); /* Generate georeference option list */ $pageoptlist = "viewports={{ georeference={"; $pageoptlist .= $georefsystem . " "; /* Use the four corners as reference points; (0,0)=lower left etc. */ $pageoptlist .= "mappoints={0 0 1 0 1 1 0 1} "; /* * The following can be used as a workaround for a problem with the * Avenza PDF Maps app on Android; otherwise the (almost) default * bounds values can be skipped: * * $pageoptlist .= "bounds={0.000001 0 0 1 1 1 1 0} "; */ $pageoptlist .= "worldpoints={"; /* lower left corner */ $pageoptlist .= $worldpoints[3] . " " . $worldpoints[1] . " "; /* lower right corner */ $pageoptlist .= $worldpoints[3] . " " . $worldpoints[2] . " "; /* upper right corner */ $pageoptlist .= $worldpoints[0] . " " . $worldpoints[2] . " "; /* upper left corner */ $pageoptlist .= $worldpoints[0] . " " . $worldpoints[1] . " "; $pageoptlist .= "} } "; $pageoptlist .= "boundingbox={0 0 "; $pageoptlist .= $mapwidth . " " . $mapheight; $pageoptlist .= "} } }"; /* Create a page with geospatial reference information. */ $p->begin_page_ext($mapwidth, $mapheight, $pageoptlist); /* Place the map on the lower left corner of the page */ $optlist = "adjustpage boxsize={"; $optlist .= $mapwidth . " " . $mapheight; $optlist .= "}"; $p->fit_image($image, 0, 0, $optlist); $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=starter_geospatial.pdf"); print $buf; } catch (PDFlibException $e) { echo("PDFlib exception occurred in starter_geospatial sample:\n" . "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Throwable $e) { echo($e); exit(1); } $p = 0; ?>