我在一个页面中使用两个webfonts,我使用dompdf转换为PDF.我在标题中有这个:
<link href='http://fonts.googleapis.com/css?family=Signika:600|Roboto+Condensed' rel='stylesheet' type='text/css'>
Run Code Online (Sandbox Code Playgroud)
然后我在CSS规则中使用它们
body {
font-family: "Roboto Condensed", sans-serif;
[ ... ]
}
h1 {
font-family:'Signika', Arial, Helvetica, sans-serif;
[ ... ]
}
Run Code Online (Sandbox Code Playgroud)
现在,当我生成PDF时,h1显示为"Signika"字体,但"Roboto Condensed"被Helvetica或其他一些标准的sans-serif字体替换.
如果我打开"预览"文件(即我在PDF生成脚本中包含的php页面),"Roboto Condensed"会按预期显示,但它不会进入PDF.但正如我写的那样,"Signika"就在PDF中,这对我来说有点奇怪.顺便说一句,我也试过直接包括字体-face规则为CSS规则p,div,li等但不会改变任何事情.
有什么建议我可以解决这个问题吗?
编辑/添加:
考虑到这一点,两种字体之间的区别在于Roboto Condensed在其名称中有一个空格.我想知道这是否会导致问题(即dompdf无法处理这样的字体名称)?但只要我从Google服务器获取字体,我就无法改变它.
我正在使用 mPDF 7.x 版并尝试遵循此文档:https ://mpdf.github.io/fonts-languages/fonts-in-mpdf-7-x.html
我只是无法让它工作。没有错误,但字体仍然是默认的 mPDF 字体。我还尝试以另一种方式使用以下答案:
如何使用 mPDF 生成 PDF 并向其添加自定义 Google 字体?
但我想它们不起作用,因为它们可能只适用于比 7.X 旧的版本......所以这是我尝试使用 7.x 文档的信息的最新尝试。
这是我的 php 文件:
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__ . '/upload'],
['fontdata' => $fontData + [
'BentonSans' => [
'R' => 'BentonSans.ttf',
'I' => 'BentonSans-Bold.ttf',
]
],
'default_font' => 'BentonSans'
]);
$url = rawurldecode($_REQUEST['url']);
$html = file_get_contents($url); …Run Code Online (Sandbox Code Playgroud) 我通过zip文件(不是作曲家)安装了mPDF 6.0,将一个字体放入ttfonts文件夹,并在config_fonts.php中添加了这样的文件,如下所示:
"eurostyle" => array( /* Custom */
'R' => "eurostyle-normal.ttf"
)
Run Code Online (Sandbox Code Playgroud)
现在我尝试将字体添加到我的mPDF对象中,如下所示:
$mpdf = new mPDF('c', 'A4-L');
$mpdf -> SetFont('eurostyle');
Run Code Online (Sandbox Code Playgroud)
但没有变化.没有错误消息,输出PDF简洁保持不变.
有人知道为什么吗?