SetaPDF Demos

Stamp Enlarged Page

This demo enlarges a page and adds a stamp in the "new" area.

PHP
<?php

// load and register the autoload function
require_once __DIR__ . '/../../../../../bootstrap.php';

// let's get access to the file
$reader = new SetaPDF_Core_Reader_File($assetsDirectory . '/pdfs/Brand-Guide.pdf');
// create a HTTP writer
$writer = new SetaPDF_Core_Writer_Http('stamped.pdf', true);
//$writer = new SetaPDF_Core_Writer_File('stamped.pdf');
// let's get the document
$document = SetaPDF_Core_Document::load($reader, $writer);

// get first page
$firstPage = $document->getCatalog()->getPages()->getPage(1);
// get actually boundary of the first page
$boundary = $firstPage->getBoundary();
// define the new boundary which is increased on the bottom by 50
$newBoundary = SetaPDF_Core_DataStructure_Rectangle::byArray(
    [$boundary->getLlx(), $boundary->getLly() - 55, $boundary->getUrx(), $boundary->getUry()]
);

// we will first need to enlarge the media box to resize the crop box(visible area)
// because in this document the crop box has the same size like the media box
// and everything which isn't in the media box wouldn't be displayed
$firstPage->setBoundary($newBoundary, SetaPDF_Core_PageBoundaries::MEDIA_BOX);
// now we can enlarge the crop box
$firstPage->setBoundary($newBoundary, SetaPDF_Core_PageBoundaries::CROP_BOX);


// initiate a stamper instance
$stamper = new SetaPDF_Stamper($document);
// initiate an custom font
$font = new SetaPDF_Core_Font_TrueType_Subset(
    $document,
    $assetsDirectory . '/fonts/DejaVu/ttf/DejaVuSans.ttf'
);

// initialize a text stamp
$stamp = new SetaPDF_Stamper_Stamp_Text($font, 10);
$stamp->setText(
    "This file is downloaded at " . date("Y-m-d H:i") . " from \"" . $_SERVER['REMOTE_ADDR']
    . "\" by user \"Tester\" (e-mail: \"test@example.com\").\n"
    . "This file is a stamped demo file of the SetaPDF-Stamper."
);
// set the width of the stamp to the same width like the crop box
$stamp->setWidth($newBoundary->getWidth());
// center text
$stamp->setAlign(SetaPDF_Core_Text::ALIGN_CENTER);
// set padding to 5
$stamp->setPadding(10);

// add stamp on first page on position center-bottom
$stamper->addStamp($stamp, SetaPDF_Stamper::POSITION_CENTER_BOTTOM, SetaPDF_Stamper::PAGES_FIRST);

// stamp the document with all previously added stamps
$stamper->stamp();

// save and finish the resulting document
$document->save()->finish();