如何在使用 FPDF 的 pdf 中添加表情符号?

问题描述 投票:0回答:1

我想将心形表情符号、礼物表情符号和笑脸表情符号添加到 pdf 文件中。这里我使用了FPDF库。

$pdf->AddFont('NotoEmoji', '', 'NotoEmoji-Regular.ttf');
 $pdf->SetFont('NotoEmoji', '', 12);

// insert emojis
 $pdf->MultiCell(10, '❤️ ', 0, 'L'); // Heart emoji
 $pdf->MultiCell(10, '😊', 0, 'L'); // smily emoji

但是上面的方法不起作用。谁能帮我解决这个问题吗?

php pdf fpdf
1个回答
0
投票

PDF 组件不支持嵌入超过 2 种颜色的字体

  • 内部(填充)和
  • 外部(轮廓)

因此需要一种解决方法来支持 HTML 或 SVG 彩色字体。

此类字体通常与底层操作系统相关,因此我们可以有 Android、Apple 或 Windows 变体。

对于 NotoColorEmoji

“NotoColorEmoji 使用 CBDT/CBLC 颜色字体格式,Android 和 Chrome/Chromium 操作系统均支持该格式。Windows 从 Chrome 和 Edge 中的 Windows 10 周年更新开始支持它。在 macOS 上,只有 Chrome 支持它,”

HTML 浏览器编辑器所做的就是编写单色符号并使用 PNG 图像导入进行覆盖(PDF 也不使用原始 PNG,而是使用修改后的 RGB 和灰色覆盖图像对)

因此,在 PDF 中我们将找到 2 声调符号和 2 个其他对象。

此页面上的

❤️被视为“Arial”?因为这是底层的默认符号,但实际上,自从在 Windows 上的 Edge 中生成以来,PDF 包含

Segoe UI Emoji

17 0 obj
<</CapHeight 1434/Flags 4/FontFamily(Segoe UI Emoji)/FontName/FAAAAA+SegoeUIEmoji/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 109/Type/FontDescriptor/XHeight 1024>>
endobj

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.