我试图使用FPDF和TCPDF php库导出到PDF。我发现像❤️这样的表情符号没有转换。只有️️一些矩形框在那里生成的pdf。我也尝试了tfpdf。
$text = "There is my text , and emojis ❤️ ";
require('tfpdf/tfpdf.php');
$pdf = new tFPDF();
$pdf->AddPage();
//Add a Unicode font (uses UTF-8)
$pdf->AddFont('Segoe UI Symbol','','seguisym.ttf',true); // DejaVuSans.ttf
$pdf->SetFont('Segoe UI Symbol','',12);
$pdf->Write(8,$text);
$pdf->Output();
我也尝试过不同的字体。但对我不起作用。有人能在这方面帮助我吗?
发布于 2022-11-27 13:53:11
遗憾的是,fPDF、TCPDF或tFPDF无法打印这些字符。问题是,这些字符不是BMP的一部分,它们用代理项对表示,这意味着它们的行为就像UTF-16中的多个字符(因为一个表情符号被打印为2个矩形框,而不是一个),而且它们的代码点在65535以上。然而,所有提到的PDF库都依赖于<= 65535的码点索引以及读取TTF文件的TFontFile类。
您还需要添加具有完整Unicode字符集集或至少是表情符号集的TTF文件。大多数字体都没有。这给PDF库带来了另一个问题,它可能需要支持回退字体,当主字体中找不到代码点时(例如,您希望在Gotham中打印文本,但由于不包括表情符号,请为它们使用其他字体)。顺便说一下,例如,表情符号字体"Noto Color Emoji“有23 MB的TTF文件。所以它很容易变大。
无论如何,上面的所有内容都可以添加到PDF库中,但这需要付出一定的努力。我计划有时也为了我的需要去做。我想大概需要一天的时间。
另外,您可能会尝试一些更健壮的东西,比如mPDF,但是这个库非常庞大,速度慢,需要完全重写您的fPDF代码。也不能保证它也能打印表情。
https://stackoverflow.com/questions/73928113
复制相似问题