Add Crop Marks
Update the page boundaries and add some crop marks to an existing PDF page.
PHP
use setasign\SetaPDF2\Core\Document; use setasign\SetaPDF2\Core\Writer\HttpWriter; // load and register the autoload function require_once '../../../../../bootstrap.php'; // create a writer instance $writer = new HttpWriter('with-crop-marks.pdf', true); // create a document instance $document = Document::loadByFilename($assetsDirectory . '/pdfs/camtown/Business-Card-filled.pdf', $writer); $pages = $document->getCatalog()->getPages(); $mm = 2; $points = $mm * 2.8346456693; // 2mm to Points // get the page object $page = $pages->getPage(1); // let's save the main TrimBox $trimBox = $page->getTrimBox(); // get the MediaBox and enlarge it $box = $page->getMediaBox(); $box->setLlx($box->getLlx() - $points); $box->setLly($box->getLly() - $points); $box->setUrx($box->getUrx() + $points); $box->setUry($box->getUry() + $points); // set the new box as both Media- and CropBox $page->setMediaBox($box); $page->setCropBox($box); // now set a reduced TrimBox $trimBox->setLlx($trimBox->getLlx() + $points); $trimBox->setLly($trimBox->getLly() + $points); $trimBox->setUrx($trimBox->getUrx() - $points); $trimBox->setUry($trimBox->getUry() - $points); $page->setTrimBox($trimBox); // make sure we have a clean graphic state $page->getStreamProxy()->encapsulateExistingContentInGraphicState(); // get the canvas... $canvas = $page->getCanvas(); // and draw the crop marks - we use values of both boundary boxes $canvas->saveGraphicState() ->path() ->setLineWidth(.1) ->setStrokingColor(.3) ->draw() // left-top ->line($box->getLlx(), $trimBox->getUry(), $trimBox->getLlx() - $points / 2, $trimBox->getUry()) ->line($trimBox->getLlx(), $box->getUry(), $trimBox->getLlx(), $trimBox->getUry() + $points / 2) // right-top ->line($trimBox->getUrx(), $box->getUry(), $trimBox->getUrx(), $trimBox->getUry() + $points / 2) ->line($trimBox->getUrx() + $points / 2, $trimBox->getUry(), $box->getUrx(), $trimBox->getUry()) // right-bottom ->line($box->getUrx(), $trimBox->getLly(), $trimBox->getUrx() + $points / 2, $trimBox->getLly()) ->line($trimBox->getUrx(), $box->getLly(), $trimBox->getUrx(), $trimBox->getLly() - $points / 2) // left-bottom ->line($trimBox->getLlx(), $box->getLly(), $trimBox->getLlx(), $trimBox->getLly() - $points / 2) ->line($box->getLlx(), $trimBox->getLly(), $trimBox->getLlx() - $points / 2, $trimBox->getLly()) ->restoreGraphicState(); $document->save()->finish();