Dynamic Font Size
For demonstration purpose this PHP demo creates several PDF pages and places individual text stamps onto these pages, while all stamps have a different content but the same width. The font size of all stamps is calculated automatically by a fixed stamp-width.
PHP
<?php use setasign\SetaPDF2\Core\Document; use setasign\SetaPDF2\Core\Font\TrueType\Subset; use setasign\SetaPDF2\Core\PageFormats; use setasign\SetaPDF2\Core\Text\Text; use setasign\SetaPDF2\Core\Writer\HttpWriter; use setasign\SetaPDF2\Stamper\Stamp\TextStamp; use setasign\SetaPDF2\Stamper\Stamper; // load and register the autoload function require_once __DIR__ . '/../../../../../../bootstrap.php'; // define a fixed width $width = 180; // prepare some example texts $texts = [ 'All stamps will always have the width of ' . $width . ' points.', 'A short text.', 'A bit longer text.', 'A much longer text with some more words', 'A very long text with very very much words to show how the font-size is reduced.', "Also a text\nwith\nseveral\nlines will\nwork.", 'A', 'B', 'AB', 'ABC' ]; // we create a blank document to show the behavior $writer = new HttpWriter('stamped.pdf', true); $document = new Document($writer); // let's create pages for each text $pages = $document->getCatalog()->getPages(); for ($i = count($texts); $i > 0; $i--) { $pages->create(PageFormats::A4); } // create a stamper instance $stamper = new Stamper($document); // create a font instance which is needed for the text stamp instance $font = new Subset( $document, $assetsDirectory . '/fonts/DejaVu/ttf/DejaVuSans.ttf' ); // now create individual text stamps placed on each page foreach ($texts as $key => $text) { // Setting the font-size to -1 will let it be calculated automatically $stamp = new TextStamp($font, -1); $stamp->setBorderWidth(1); $stamp->setText($text); $stamp->setAlign(Text::ALIGN_CENTER); $stamp->setTextWidth($width); $stamp->setPadding(1); // the set a line-height, we can make use of the calculated font-size $stamp->setLineHeight($stamp->getFontSize() * 1.2); $stamper->addStamp( $stamp, Stamper::POSITION_CENTER_TOP, $key + 1 ); } $stamper->stamp(); // save and finish the document instance $document->save()->finish();
