set_option("searchpath={" . $searchpath . "}"); /* This means we must check return values of load_font() etc. */ $p->set_option("errorpolicy=return"); if ($p->begin_document($outfile, "") == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->set_info("Creator", "PDFlib Cookbook"); $p->set_info("Title", $title); /* * Start the page with a CropBox which is 40 points smaller than * the page in both dimensions for placing crop marks and info text. */ $p->begin_page_ext($pagewidth, $pageheight, "cropbox={40 40 802 555}"); /* Load and fit CMYK image */ $image = $p->load_image("auto", $imagefile, ""); if ($image == 0) throw new Exception("Error: " . $p->get_errmsg()); $margin=60; $p->fit_image($image, $margin, $margin, "boxsize={" . ($pagewidth-2*$margin) . " " . ($pageheight-2*$margin) . "} position=center fitmethod=meet"); // Create a path object with two lines for the crop mark $crop_mark_length = 20; $crop_mark_gap = 5; $crop_mark = 0; $crop_mark = $p->add_path_point($crop_mark, 0, $crop_mark_length + $crop_mark_gap, "move", "stroke"); $crop_mark = $p->add_path_point($crop_mark, $crop_mark_length, 0, "line", "relative"); $crop_mark = $p->add_path_point($crop_mark, $crop_mark_length + $crop_mark_gap, 0, "move", "stroke"); $crop_mark = $p->add_path_point($crop_mark, 0, $crop_mark_length, "line", "relative"); // Draw crop marks at each corner draw_cropmark($p, $crop_mark, 0, 0, 0); draw_cropmark($p, $crop_mark, $pagewidth, 0, 90); draw_cropmark($p, $crop_mark, $pagewidth, $pageheight, 180); draw_cropmark($p, $crop_mark, 0, $pageheight, 270); /* Emit some info text outside the CropBox. * The special color "All" is used for crop marks and info * text; these items are visible on all color separations. */ $p->fit_textline($info, 30, 8, "fontname=NotoSerif-Regular fontsize=10 fillcolor={spotname All 1}"); $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=color_All_for_cropmarks.pdf"); print $buf; } catch (PDFlibException $e) { echo("PDFlib exception occurred:\n". "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Throwable $e) { echo("PHP exception occurred: " . $e->getMessage() . "\n"); exit(1); } $p = 0; // Draw crop mark at specified location and angle function draw_cropmark($p, $crop_mark, $x, $y, $alpha) { $p->save(); $p->translate($x, $y); $p->rotate($alpha); $p->draw_path($crop_mark, 0, 0, "stroke strokecolor={spotname All 1}"); $p->restore(); } ?>