无法在 PDF 上添加自定义字体

Posted

技术标签:

【中文标题】无法在 PDF 上添加自定义字体【英文标题】:Cant add custom font onmPDF 【发布时间】:2020-01-12 22:33:53 【问题描述】:

我是新的 mPDF 用户,实际上我想为我的项目添加 Times New Roman,因为 mPDF 不提供它。于是我开始找路,我找到了这些https://mpdf.github.io/fonts-languages/fonts-in-mpdf-7-x.html。我尝试在我的代码上实现它,但输出文件仍然不会加载字体。这是我的代码

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];
$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];
$mpdf = new \Mpdf\Mpdf([
'fontDir' => array_merge($fontDirs, [
    __DIR__ . '/font',
]),
'fontdata' => $fontData + [
    'times' => [
        'R' => 'times.ttf',
        'I' => 'timesi.ttf',
        'B' => 'timesbd.ttf',
        'BI' => 'timesbi.ttf',]],
'default_font' => 'times']);
$mpdf = new \Mpdf\Mpdf($hal1config);
$stylesheet = '<style>' . file_get_contents('./gaya.css') . '</style>';
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->WriteHTML($hal1, 2);
$mpdf->AddPage($hal2config);
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->WriteHTML($hal2, 2);

谢谢

【问题讨论】:

您正在使用未知配置 $hal1config 的新对象覆盖正确设置的 $mpdf 变量。并且 AddPage 方法不接受数组(我猜 $hal2config 中还有另一个数组) 【参考方案1】:

你需要:

    删除此行$mpdf = new \Mpdf\Mpdf($hal1config); 将此'tempDir' =&gt;DIR 添加到配置数组。 '/custom/temp/dir/path'`,

看看我的示例加载字体

require_once __DIR__ . '/vendor/autoload.php';

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];
$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];

$mpdf = new \Mpdf\Mpdf(
    [
        'tempDir' => __DIR__ . '/custom/temp/dir/path',
        'fontDir' => array_merge($fontDirs, [
            __DIR__ . '/fonts',
        ]),
        'fontdata' => $fontData + [
                'roboto-condensed' => [
                    'R' => 'RobotoCondensed-Regular.ttf',
                    'B' => 'RobotoCondensed-Bold.ttf',
                ]
            ],
        'default_font' => 'roboto-condensed'
    ]);
$mpdf->WriteHTML('<h1>Стенгазета</h1>');
$mpdf->Output();

【讨论】:

以上是关于无法在 PDF 上添加自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TCPDF 中添加自定义字体?

无法将自定义字体添加到应用程序

使用自定义字体在 CGContextRef 和 PDF 中打印 NSString

使用 PDFBox 为扁平化 PDF 表单嵌入字体

无法在 Mac 应用程序中添加自定义字体(OSX 10.9+ Xcode5+)

无法在 Xcode 11 beta 中选择自定义字体?