set_option("searchpath={" . $searchpath . "}"); /* This means we must check return values of begin_document() * etc. */ $p->set_option("errorpolicy=return"); /* Start the document */ if ($p->begin_document($outfile, "destination={type=fitwindow}") == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->set_info("Creator", "PDFlib Cookbook"); $p->set_info("Title", $title); $p->begin_page_ext(0, 0, "width=a4.width height=a4.height"); // Load the 3D model to create a 3D asset $asset_3d = $p->load_asset("3D", $modelfile, ""); if ($asset_3d == 0) throw new Exception("Error: " . $p->get_errmsg()); // Load JavaScript asset $asset_js = $p->load_asset("JavaScript", $jsfile, ""); if ($asset_js == 0) throw new Exception("Error: " . $p->get_errmsg()); /* Define a 3D view which shows the model from the top */ $optlist = "type=PRC name=FirstView background={fillcolor=lightblue} " . "camera2world={-1 0 0 0 1 0 0 0 -1 0.5 0 300}"; if (($view = $p->create_3dview("First view", $optlist)) == 0) throw new Exception("Error: " . $p->get_errmsg()); /* * Create a RichMedia annotation containing the 3D and JavaScript * assets and the 3D view as its initial view */ $optlist = "richmedia={" . "assets={ " . "{asset=" . $asset_3d . " name=3dasset} " . "{asset=" . $asset_js . " name=script1} " . "} " . "configuration={instances={ {asset=3dasset} }} " . "views={" . $view . "} " . "activate={condition=visible scripts={script1} } " . "}"; $p->create_annotation(116, 200, 447, 580, "RichMedia", $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=richmedia_3d.pdf"); print $buf; } catch (PDFlibException $e) { print("PDFlib exception occurred:\n". "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Exception $e) { print($e->getMessage()); exit(1); } $p = 0; ?>