SetaPDF Demos

There seems to be a problem loading the components. Please check your PHP error logs for details!

Common issues could be that you missed to install the trial license or that you are using a trial version on an unsupported PHP version.

Add Text Above Found String

This demo finds a string/number (labeled as the "Task Number" in the document), adds a white rectangle and text surrounded by a red border above it.

PHP
<?php

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

$document = \SetaPDF_Core_Document::loadByFilename(
    $assetsDirectory . '/pdfs/tektown/Laboratory-Report.pdf'
);

// initate an extractor instance
$extractor = new \SetaPDF_Extractor($document);

// define the word strategy
$strategy = new \SetaPDF_Extractor_Strategy_Word();
$extractor->setStrategy($strategy);

// get the pages helper
$pages = $document->getCatalog()->getPages();

// let's find all placeholders
$matches = [];
for ($pageNo = 1; $pageNo <= $pages->count(); $pageNo++) {
    /**
     * @var \SetaPDF_Extractor_Result_Words $words
     */
    $words = $extractor->getResultByPageNumber($pageNo);
    // we search for the number "11563"
    $matches[] = [$pageNo, $words->search('/11563/')];
}

if (count($matches)) {
    $font = new \SetaPDF_Core_Font_TrueType_Subset(
        $document,
        $assetsDirectory . '/fonts/DejaVu/ttf/DejaVuSans.ttf'
    );
}

// iterate over the matches
foreach ($matches AS list($pageNo, $results)) {
    /** @var \SetaPDF_Extractor_Result_Words $segments */
    foreach ($results as $segments) {
        // get the bounds of the found phrase
        $bounds = $segments->getBounds();
        $rect = $bounds[0]->getRectangle();

        // get the page object
        $page = $pages->getPage($pageNo);
        // make sure that the new content is encapsulated in a seperate content stream
        $page->getContents()->encapsulateExistingContentInGraphicState();
        // get the canvas object
        $canvas = $page->getCanvas();

        // get some rect data
        $x = $rect->getLl()->getX();
        $y = $rect->getLl()->getY();
        $width = $rect->getWidth();
        $height = $rect->getHeight();

        // draw a white rectangle
        $canvas->draw()
            ->setNonStrokingColor(1)
            ->rect($x, $y, $width, $height, \SetaPDF_Core_Canvas_Draw::STYLE_FILL);

        $textBlock = new SetaPDF_Core_Text_Block($font, $height * .7);
        $textBlock->setText('875631');
        $textBlock->setAlign(SetaPDF_Core_Text::ALIGN_CENTER);
        $textBlock->setBorderColor([1, 0, 0]);
        $textBlock->setBorderWidth(1);
        $textBlock->draw($canvas, $x, $y);
    }
}

// save and finish the document
$document->setWriter(new \SetaPDF_Core_Writer_Http('document.pdf', true));
$document->save()->finish();