1. Go to this page and download the library: Download tecnickcom/tc-lib-pdf-font library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tecnickcom / tc-lib-pdf-font example snippets
= new \Com\Tecnick\Pdf\Font\Import('/path/to/font.ttf');
$metrics = $font->getFontMetrics();
var_dump($font->getFontName(), $metrics['type']);
$stack = new \Com\Tecnick\Pdf\Font\Stack(1.0);
$stack->insert($objnum, 'dejavusans', '', 12);
if ($stack->isCurrentGidEncoded()) {
// 2-byte big-endian glyph indices, and the glyphs are recorded on the font
$codes = $stack->ordArrToGidStr([0x41, 0x20, 0x1D703]);
} else {
// CID-0 fonts keep the UTF-16BE encoding expected by their predefined CMap
$codes = $uniconv->toUTF16BE($str);
}
interface FontSubsetCacheInterface
{
public function get(string $key): ?string; // null on cache miss
public function set(string $key, string $subsetFont): void;
}
$output = new \Com\Tecnick\Pdf\Font\Output(
$fonts,
$objectNumber,
$encrypt,
$fileHelper, // or null
$subsetCache, // your FontSubsetCacheInterface implementation
);
use Com\Tecnick\Pdf\Font\FontSubsetCacheInterface;
use Psr\SimpleCache\CacheInterface;
final class Psr16SubsetCache implements FontSubsetCacheInterface
{
public function __construct(private CacheInterface $cache) {}
public function get(string $key): ?string
{
$value = $this->cache->get($this->normalize($key));
return \is_string($value) ? $value : null;
}
public function set(string $key, string $subsetFont): void
{
$this->cache->set($this->normalize($key), $subsetFont);
}
/**
* PSR-16 only guarantees keys matching [A-Za-z0-9_.] up to 64 chars and
* reserves {}()/\@: — the library's raw key uses ':' and '-' and is longer,
* so hash it into a guaranteed-legal, fixed-length key.
*/
private function normalize(string $key): string
{
return 'tclpf_' . \sha1($key);
}
}
bash
php util/convert.php --help
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.