* @copyright 2002-2026 Nicola Asuni - Tecnick.com LTD * @license https://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT) * @link https://github.com/tecnickcom/tc-lib-pdf * * This file is part of tc-lib-pdf software library. */ // NOTE: run make deps fonts in the project root to generate the dependencies and example fonts. // autoloader when using Composer require __DIR__ . '/../vendor/autoload.php'; // define fonts directory \define('K_PATH_FONTS', \realpath(__DIR__ . '/../vendor/tecnickcom/tc-lib-pdf-font/target/fonts')); $pdf = new \Com\Tecnick\Pdf\Tcpdf( unit: 'mm', isunicode: true, subsetfont: false, compress: true, mode: '', objEncrypt: null, ); $pdf->setCreator('tc-lib-pdf'); $pdf->setAuthor('Nicola Asuni'); $pdf->setSubject('tc-lib-pdf example: 028'); $pdf->setTitle('Text hyphenation with soft hyphens'); $pdf->setKeywords('TCPDF tc-lib-pdf example text hyphenation soft hyphen shy html'); $pdf->setPDFFilename('028_text_hyphenation.pdf'); $pdf->setViewerPreferences(['DisplayDocTitle' => true]); $pdf->enableDefaultPageContent(); $setFont = static function (\Com\Tecnick\Pdf\Tcpdf $pdf, string $family, string $style, int $size): void { $font = $pdf->font->insert($pdf->pon, $family, $style, $size, 0.0, 1.0); $pdf->page->addContent($font['out']); }; // Insert one neutral font before addPage() so page context has a valid current font. $pdf->font->insert($pdf->pon, 'helvetica', '', 10, 0.0, 1.0); $pdf->addPage(); $setFont($pdf, 'helvetica', 'B', 20); $pdf->page->addContent($pdf->getTextCell( 'Example of Text Hyphenation', 15.0, 22.0, 180.0, 0.0, drawcell: false, valign: 'T', halign: 'L', )); $setFont($pdf, 'helvetica', '', 10); $pdf->page->addContent($pdf->getTextCell( 'The text below uses explicit soft hyphens (­) inside words and is rendered in a narrow left-aligned column.', 15.0, 34.0, 180.0, 0.0, drawcell: false, valign: 'T', halign: 'L', )); $setFont($pdf, 'times', '', 10); $html = '
' . 'On the other hand, we de­nounce with righ­teous in­dig­na­tion ' . 'and dis­like men who are so be­guiled and de­mo­r­al­ized by the charms ' . 'of plea­sure of the mo­ment, so blind­ed by de­sire, that they can­not fore­see ' . 'the pain and trou­ble that are bound to en­sue; and equal blame be­longs to ' . 'those who fail in their du­ty through weak­ness of will, which is the same as ' . 'say­ing through shrink­ing from toil and pain. Th­ese cas­es are per­fect­ly ' . 'sim­ple and easy to distin­guish. In a free hour, when our pow­er of choice is ' . 'un­tram­melled and when noth­ing pre­vents our be­ing able to do what we like ' . 'best, ev­ery plea­sure is to be wel­comed and ev­ery pain avoid­ed. But in ' . 'cer­tain cir­cum­s­tances and ow­ing to the claims of du­ty or the obli­ga­tions ' . 'of busi­ness it will fre­quent­ly oc­cur that plea­sures have to be ' . 're­pu­di­at­ed and an­noy­ances ac­cept­ed. The wise man there­fore al­ways holds ' . 'in th­ese mat­ters to this prin­ci­ple of se­lec­tion: he re­jects plea­sures to ' . 'se­cure other greater plea­sures, or else he en­dures pains to avoid worse pains.' . '
'; $cellBorderStyles = [ 'all' => [ 'lineWidth' => 0.2, 'lineCap' => 'butt', 'lineJoin' => 'miter', 'dashArray' => [], 'dashPhase' => 0, 'lineColor' => 'red', 'fillColor' => '', ], ]; $pdf->addHTMLCell(html: $html, posx: 15.0, posy: 45.0, width: 42.0, height: 0.0, cell: null, styles: $cellBorderStyles); $rawpdf = $pdf->getOutPDFString(); $pdf->renderPDF(rawpdf: $rawpdf);