怎么在PDF文档中内嵌入字体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在PDF文档中内嵌入字体相关的知识,希望对你有一定的参考价值。

参考技术A 在转换成pdf时,字体一项中可以设置,在此选项中入看到字体名前面带个锁状图标的,说明此字体有加密,无法嵌入

如何在 DomPDF 中正确嵌入 Google 字体?打印时中断

【中文标题】如何在 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

【讨论】:

以上是关于怎么在PDF文档中内嵌入字体的主要内容,如果未能解决你的问题,请参考以下文章

PDF文件怎么修改字体大小

使用PyPDF2检测由Google文档生成的PDF文件中的非嵌入式字体

Itext 在 PDF 中嵌入字体

PDF文档如何编辑,怎样设置PDF文本字体

请问如何查看pdf内嵌字体?

在 rmarkdown 文档的 ggplot2 图表中嵌入字体