当前位置: 首页 > 知识库问答 >
问题:

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

百里文景
2023-03-14

我尝试使用DomPDF(v1.0.2)以Open Sans作为字体生成PDF。

我直接从Google Fonts(这应该根据DomPDF文档工作)加载Open Sans,生成的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个答案

周阳波
2023-03-14

弄清楚了,问题是DomPDF没有正确检测使用的字体样式,这导致它创建了一个不完整的子集。

将此添加到选项中解决了问题:

'isFontSubsettingEnabled' => false
 类似资料:
  • 问题内容: 我想使用某些字体,并且希望它能在客户端计算机上没有该字体的情况下工作。我已经做到了,但是没有用: 问题答案: 以下几行用于在CSS中定义字体 以下几行定义/使用CSS中的字体

  • 问题内容: 我试图找到一个体面的解决方案(尤其是从SEO方面),用于在网页中嵌入字体。第二种解决方案仅适用于标题。是否有针对全文的解决方案?我已经厌倦了网页的标准字体。 谢谢! 问题答案: *自从最初提出并回答这个问题以来,*情况已经发生了变化。对于使用@font-face嵌入来使正文文本起作用的跨浏览器字体嵌入,已经进行了大量工作。 基本上,这可以不破坏任何内容的方式提供OTF,EOT,SVG和

  • 我有一个只在Chrome中呈现的页面,带有一系列自定义字体: 浏览器完美地呈现了一切。然而,当我试图将此打印到PDF时,有两个问题: > 无论我做什么,我都无法生成嵌入字体的PDF。我尝试过Chrome的“保存到PDF”,它会生成Adobe Acrobat无法打开的PDF。各种PDF打印机(如Adobe的)不会产生嵌入这些字体的PDF,即使用标准的网络字体替换@font-faces确实会产生嵌入字

  • 我正在使用FOP 0.94,我也许可以升级到FOP 0.95。是否可以嵌入Bas14字体?如果可以,如何? 我试过把这个放在fop.xconf里: 那行不通。 最好的问候,莫滕

  • 问题内容: 我有一个自定义字体,我想在Java程序中炫耀它,用户无需安装就可以查看它。有谁知道这是怎么做到的吗? 工作解决方案 我已经实现了以下内容: 问题答案: 我从未做过,但似乎您想要的方法是 导入字体 或者 该参数是或,而或参数包含字体的二进制数据。 导入后使用字体: 要使Font对Font构造函数可用,必须通过调用在中注册返回的Font 。

  • 我可以使用上面的简单代码将PDF文件嵌入到网页中。但是当我去打印网页(使用CTRL P)时,只有一半的PDF出现在打印预览上,因为它已经偏离中心。同样的情况也发生在这个网页上:http://pdfobject.com/examples/simplest-full-window.html. 以下是一个“打印版本”网页的例子,其中嵌入的PDF在打印时居中(CTRL P):http://www.bbc.