Google DOMPDF 生成的 PDF 中的 Webfonts
Google Webfonts in PDF generated by DOMPDF
我在使用 dompdf 转换为 PDF 的页面中使用了两种网络字体。我在 header:
中有这个
<link href='http://fonts.googleapis.com/css?family=Signika:600|Roboto+Condensed' rel='stylesheet' type='text/css'>
然后我在 CSS 规则中使用它们,例如
body {
font-family: "Roboto Condensed", sans-serif;
[ ... ]
}
h1 {
font-family:'Signika', Arial, Helvetica, sans-serif;
[ ... ]
}
现在,当我生成 PDF 时,h1 显示为 "Signika" 字体,但 "Roboto Condensed" 被 Helvetica 或其他一些标准 sans-serif 字体取代。
如果我打开 "preview" 文件(即我随后包含在 PDF 生成脚本中的 php 页面),"Roboto Condensed" 会按预期显示,但不会把它变成PDF。但正如我所写,"Signika" 存在于 PDF 中,这对我来说有点奇怪。顺便说一句,我还尝试将 font-face 规则直接包含在 p
、div
、li
等的 CSS 规则中,但这不会改变任何内容。
有什么解决方法的建议吗?
EDIT/ADDITION:
仔细想想,这两种字体的不同之处在于,Roboto Condensed 的名称中有一个 space。我想知道这是否会导致问题(即 dompdf 无法处理这样的字体名称)?但只要我从 Google 服务器获取字体,我就无法更改它。
我自己找到了解决方案:
正如我在编辑中添加到我的问题中的那样,原因显然是字体系列名称 "Roboto Condensed" 包含一个 space,dompdf 似乎不喜欢它。
我下载了字体,使用 Fontsquirrel 上的字体生成器创建了三个版本,并将它们连同此样式表放在我的服务器上:
@font-face {
font-family: 'roboto_condensedregular';
src: url('robotocondensed-regular-webfont.woff2') format('woff2'),
url('robotocondensed-regular-webfont.woff') format('woff'),
url('RobotoCondensed-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
然后,在我的 CSS 规则中,我在 font-family: roboto_condensedregular, sans-serif;
中使用了新的字体名称 roboto_condensedregular
现在可以使用了,在 PDF 中也是如此。
您实际上不需要执行所有这些操作。只需使用 @import
选项即可将字体嵌入 html。使用 laravel-dompdf.
非常有效
screenshot
我在使用 dompdf 转换为 PDF 的页面中使用了两种网络字体。我在 header:
中有这个<link href='http://fonts.googleapis.com/css?family=Signika:600|Roboto+Condensed' rel='stylesheet' type='text/css'>
然后我在 CSS 规则中使用它们,例如
body {
font-family: "Roboto Condensed", sans-serif;
[ ... ]
}
h1 {
font-family:'Signika', Arial, Helvetica, sans-serif;
[ ... ]
}
现在,当我生成 PDF 时,h1 显示为 "Signika" 字体,但 "Roboto Condensed" 被 Helvetica 或其他一些标准 sans-serif 字体取代。
如果我打开 "preview" 文件(即我随后包含在 PDF 生成脚本中的 php 页面),"Roboto Condensed" 会按预期显示,但不会把它变成PDF。但正如我所写,"Signika" 存在于 PDF 中,这对我来说有点奇怪。顺便说一句,我还尝试将 font-face 规则直接包含在 p
、div
、li
等的 CSS 规则中,但这不会改变任何内容。
有什么解决方法的建议吗?
EDIT/ADDITION:
仔细想想,这两种字体的不同之处在于,Roboto Condensed 的名称中有一个 space。我想知道这是否会导致问题(即 dompdf 无法处理这样的字体名称)?但只要我从 Google 服务器获取字体,我就无法更改它。
我自己找到了解决方案:
正如我在编辑中添加到我的问题中的那样,原因显然是字体系列名称 "Roboto Condensed" 包含一个 space,dompdf 似乎不喜欢它。
我下载了字体,使用 Fontsquirrel 上的字体生成器创建了三个版本,并将它们连同此样式表放在我的服务器上:
@font-face {
font-family: 'roboto_condensedregular';
src: url('robotocondensed-regular-webfont.woff2') format('woff2'),
url('robotocondensed-regular-webfont.woff') format('woff'),
url('RobotoCondensed-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
然后,在我的 CSS 规则中,我在 font-family: roboto_condensedregular, sans-serif;
roboto_condensedregular
现在可以使用了,在 PDF 中也是如此。
您实际上不需要执行所有这些操作。只需使用 @import
选项即可将字体嵌入 html。使用 laravel-dompdf.
screenshot