php 在将iconv与FPDF一起使用时,希伯来语字符看起来像除法符号

ldioqlga  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(125)

当我使用iconv将编码从UTF-8转换为windows-1255时,所有希伯来字母都正确显示,除了ק,它显示为除法符号:÷

$pdf->AddFont('Arial', '', 'arial.php');
$pdf->setFont('Arial', '', 15);
$value = iconv('UTF-8', 'windows-1255', 'ק');
$pdf->Write(1, $value);

我使用PHP包创建PDF文件。所以它在PDF文件中显示为÷,但是当我将该符号从PDF文件复制到Google搜索时,它再次显示为ק
我如何解决这个问题,并在PDF文件中将其显示为ק
我甚至按照fdpf网站上关于如何使用正确编码创建字体的教程(创建font.zfont.php文件)
更新:我注意到,对于cp1255的Map文件,Map到希伯来字母ק的行与具有除法符号扩展ASCII代码的行相同:
cp1255.map

!F7 U+05E7 afii57687

下面是错误的图像:

vom3gejh

vom3gejh1#

我复制了你的错误,我得到了同样的错误,原因是使用了不正确的字体家族和编码。请在下面找到问题的解决方案

更新备注:

在进一步的讨论和调试中,发现旧版本中的MakeFont脚本i.FPDF 1之前的版本。85是有缺陷的,并抛出错误,但文件被创建,所以很难注意到。
因此,如果有人在版本1之前使用希伯来语的FPDF。85要么更新MakeFont脚本,要么使用FPDF 1版本。85或更高版本。php和.z文件的字体。

  • step - 1* 在pdf中使用makefont函数创建字体文件,使用“font-family”。ttf“你的选择。它将创建2个文件font-family-name。php和font-family-name。z....将这两个文件放在fpdf目录下的fonts文件夹中。

请注意,你必须使用希伯来语编码cp 1255。
MakeFont('Noto_Sans_Hebrew/noto-sans-hebrew.ttf','cp1255',);
或者,您也可以在此处在线创建-〉makefont - fpdf

***step -2***要使用它,您需要为文档添加字体和设置字体。请看下面的代码。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
require('fpdf/fpdf.php');

//for hebrew encoding is cp12555. 
$str = 'ק מה שלומך';
$string =iconv('UTF-8', 'cp1255', $str); 
$pdf = new FPDF();

$pdf->AddPage();
$pdf->AddFont('noto-sans-hebrew','','noto-sans-hebrew.php');
$pdf->SetFont('noto-sans-hebrew','',16);
$pdf->Cell(40,10,$string);
$pdf->Output();
?>

生成的PDF图像:

有用链接:

我不懂希伯来语。但请让我知道在评论的问题。

qxgroojn

qxgroojn2#

在我的例子中,我使用了支持的正确字体(希伯来文字体),但我有错误。
然后我发现我的旧版本中的MakeFont脚本有很多bug并且会抛出错误,但是文件是创建的,所以很难注意到。
所以当我使用最新的MakeFont脚本时,它修复了它

相关问题