Warm tip: This article is reproduced from serverfault.com, please click

css-Arial字体从HTML到mpdf转换看起来不同

(css - Arial font looks different from HTML to a mpdf conversion)

发布于 2020-12-03 15:01:24

关于字体如何工作,肯定有一些我不知道的东西,实际上有很多事情。也许有人可以解释我为什么将CSS中的字体设置为“ font-family:Arial,Helvetica和sans-serif”;

为什么看起来有些不同?在pdf中看起来更宽且更圆。同一字体有不同类型吗?如果是这种情况,我该如何解决?

HTML页面: 在此处输入图片说明

PDF页面: 在此处输入图片说明

这就是我正在申请html以便使用mpdf打印的内容

h1
{
text-align: center;
margin-top: 90px;
margin-bottom: 90px;
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
font-weight: normal;
font-size: 23vw;
}




$htmlStringView = view('pdf-view', ['content' => $content, 'cssString' => $cssString])->render();

$contract = $this->userContractRepository->show($id);
$mpdf = new Mpdf(['tempDir' => '/var/www/storage/temp', 'format' => [198, 280]]);
$contract = $this->addJsonDataToModelAttributes($contract);
$mpdf->SetHTMLFooter('<div style="text-align: right;">{PAGENO}/{nbpg}</div>');
$mpdf->WriteHTML($htmlStringView);
$mpdf->SetTitle($contract->title);
$mpdf->SetAuthor($contract->owner->email);
$mpdf->SetSubject(implode(", ", $contract->persons->pluck('full_name')->toArray()));
$mpdf->SetKeywords($id);
$mpdf->Output('/var/www/storage/app/' . $full_path);
Questioner
arderoma
Viewed
0
Finwe 2020-12-04 17:43:49

默认情况下,mPDF发行版中不包含Arial,而是DejavuSans。如果需要,你必须将mPDF实例指向字体文件。

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

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

$mpdf = new \Mpdf\Mpdf([
    'tempDir' => '/var/www/storage/temp',
    'format' => [198, 280],
    'fontDir' => array_merge($fontDirs, [
        __DIR__ . '/custom/font/directory',
    ]),
    'fontdata' => $fontData + [
        'arial' => [
            'R' => 'arial.ttf',
            'I' => 'arial-italic.ttf',
        ]
    ],
]);

参见https://mpdf.github.io/fonts-languages/fonts-in-mpdf-7-x.html