如何在 DomPDF 中正确嵌入 Google 字体?打印时中断
Posted
技术标签:
【中文标题】如何在 DomPDF 中正确嵌入 Google 字体?打印时中断【英文标题】:How to properly embed a Google Font in DomPDF? Breaks when printed 【发布时间】:2022-01-12 14:15:26 【问题描述】:我尝试使用以 Open Sans 作为字体的 DomPDF (v1.0.2) 生成 PDF。
我直接从 Google Fonts 加载 Open Sans(应该根据 DomPDF 文档工作),生成的 PDF 似乎没问题。
打印时出现问题,显然字体没有正确嵌入,打印时会破坏字体。
简化代码示例:
$pdf = new Dompdf(new Options([
'defaultPaperSize' => 'a4',
'defaultPaperOrientation' => 'portrait',
'isRemoteEnabled' => true,
'allowUrlFopen' => true,
'ishtml5ParserEnabled' => true
]));
$pdf->loadHtml('
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;1,400;1,600&display=swap" rel="stylesheet">
<style>
span
font-family: "Open Sans", sans-serif;
</style>
<body>
<span>This should be in Open Sans</span>
</body>
');
$pdf->render();
$pdf->stream();
在屏幕上:
印刷:
【问题讨论】:
【参考方案1】:想通了,问题是 DomPDF 没有正确检测到使用的字体样式,这导致它创建了一个不完整的子集。
将此添加到选项中解决了问题:
'isFontSubsettingEnabled' => false
【讨论】:
以上是关于如何在 DomPDF 中正确嵌入 Google 字体?打印时中断的主要内容,如果未能解决你的问题,请参考以下文章
Dompdf-Laravel Unicode 字符无法正确呈现