当前位置: 首页 > 面试题库 >

Dompdf并设置不同的字体系列

禄光霁
2023-03-14
问题内容

生成PDF时,它完全忽略了font-family应用于CSS的属性。而不是说 Verdana ,而是使用 Times New
Roman。
所以我的CSS看起来像:

.sub-header {
    font-size: 1.4rem;
    text-transform: uppercase;
    font-family: NeutraText-Book !important;
    padding-bottom: 1.5rem;
}

PDF生成如下:

$pdf = PDF::loadHTML($view);
return $pdf->stream();

如何设置想要的字体?


问题答案:

PDF文档内部支持以下字体:Helvetica,Times-Roman,Courier,Zapf-Dingbats和Symbol(均使用Windows
ANSI编码)。dompdf将在PDF中嵌入任何引用的字体,只要该字体已经预加载或dompdf可访问并在CSS @font- face规则中引用即可。为了产生用于类型设置的字体规格,加载过程是必需的。

dompdf支持与基础R&OS PDF类相同的字体:类型1(.pfb)和TrueType(.ttf),只要可用的字体指标(.afm /
.ufm)。捆绑的基于PHP的php-font-lib提供了对加载和子设置字体的支持。

加载字体的过程取决于您的需求和服务器访问权限。可以通过三种方式加载字体:

  1. 使用CSS @ font-face规则在运行时加载字体。
  2. 从命令行使用dompdf / load_font.php。
  3. 在随附的管理站点中浏览到dompdf / www / fonts.php。

使用CSS @ font-face规则在运行时加载字体

无需命令行访问。只要您要加载的字体在线可用,您就可以通过CSS轻松加载它。

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: normal;
  src: url(http://themes.googleusercontent.com/static/fonts/opensans/v8/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format('truetype');
}

从命令行使用dompdf / load_font.php

如果您可以访问命令行,则加载字体非常简单:

[php] load_font.php "NeutraText-Book" /path/to/neutratext.ttf

运行不带任何参数的命令以查看帮助文本。很快,这些参数是:字体名称,普通字体文件,粗体字体文件,斜体字体文件,粗体斜体字体文件

在随附的管理站点中浏览到dompdf / www / fonts.php

不言自明(样本)。您唯一需要做的就是确保您已修改管理员用户名/密码组合

注意:从dompdf 0.7.0开始,默认情况下将不包括load_font.php和管理站点。

改编自dompdf Wiki(Unicode How-To,关于字体和字符编码和其他来源。



 类似资料:
  • 生成PDF时,它完全忽略应用于CSS的我的属性。它使用的不是Verdana,而是Times New Roman。所以我的CSS看起来像: PDF是这样生成的: 如何设置我想要的字体?

  • 使用DOM PDF创建一些报告,但是我唯一遇到的问题是设置无衬线字体。 我尝试了几乎所有的方法来设置CSS中可能的字体,但它总是以衬线字体呈现。 我并没有试图呈现一个自定义字体,只是一些简单的东西,比如helvetica或arial。 有没有其他人有过这个问题,或者知道为什么它可能会默认为衬线? 注意:应用程序在CodeIgnitor上运行。

  • 我需要扩展对基于拉丁语的字体的支持,所以我想使用默认字体“dejavu sans”,但是文本是完全白色的,并且忽略了css规则。有什么想法吗? 谢谢 我使用的是laravel 4,代码如下: php css }

  • 问题内容: 我有这样的CSS声明: 这里的font1是嵌入式的eot / ttf字体,但问题是该字体比其他字体要小,所以我想为此字体(font1)使用不同的字体大小(1.8em)。所有其他字体(font2,font3)保持不变。 问题是,我无法验证用户的浏览器是使用font1,font2还是font3。是否有任何CSS声明允许不同家族使用不同的字体大小? 谢谢。 问题答案: 这里 是 一个办法做到

  • 问题内容: 我有一个ListView,它显示TextViews的列表。我希望每个TextView以适当的字体显示。作为字体String []数组的一部分出现在ListView中的字体名称的拼写与创建字体时的拼写相同。 和XML: 为什么我不能在ListView中获得每个TextView正确的字体? 问题答案:

  • 我想在Java中创建一个文本编辑器。这是我到目前为止写的: 我的问题是为设置字体。当我在实际程序上单击按钮时,什么也没发生。我该怎么办?