如何在PHP FPDI库中设置编码

Ada*_*ski 12 php pdf fpdf fpdi

如何在名为FPDI的php库中设置UTF-8编码?这是图书馆:https://www.setasign.com/products/fpdi/manual/

代码:

$pdf = new Fpdi();
$pdf->AddPage();
$pdf->setSourceFile('PdfDocument.pdf');
$tplIdx = $pdf->importPage(1);

$pdf->useTemplate($tplIdx, 10, 10, 100);

$pdf->SetFont('Helvetica');
$pdf->SetTextColor(255, 0, 0);
$pdf->SetXY(30, 30);
$pdf->Write(0, 'Za?ó?ci? g??l? ja??');

$pdf->Output();
Run Code Online (Sandbox Code Playgroud)

[解]

首先:我必须添加适当字母的新字体

$pdf->AddFont('DejaVu','','DejaVuSansCondensed.php');
$pdf->SetFont('DejaVu', '', 10, '', false);
Run Code Online (Sandbox Code Playgroud)

SECOND:关于FPDI用户的FPDF库:有可能的编码:

cp1250 (Central Europe)
cp1251 (Cyrillic)
cp1252 (Western Europe)
cp1253 (Greek)
cp1254 (Turkish)
cp1255 (Hebrew)
cp1257 (Baltic)
cp1258 (Vietnamese)
cp874 (Thai)
ISO-8859-1 (Western Europe)
ISO-8859-2 (Central Europe)
ISO-8859-4 (Baltic)
ISO-8859-5 (Cyrillic)
ISO-8859-7 (Greek)
ISO-8859-9 (Turkish)
ISO-8859-11 (Thai)
ISO-8859-15 (Western Europe)
ISO-8859-16 (Central Europe)
KOI8-R (Russian)
KOI8-U (Ukrainian)
Run Code Online (Sandbox Code Playgroud)

我发送到pdf的字符串是UTF-8(我通过mb_detect_encoding函数检查 ),需要在cp1250上进行转换.

$str = iconv('UTF-8', 'cp1250', 'zazó?ci? g??l? ja??');
Run Code Online (Sandbox Code Playgroud)

Ale*_*shy 1

您可以添加带有适当字母的新字体

\n
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.php');\n$pdf->SetFont('DejaVu', '', 10, '', false);\n
Run Code Online (Sandbox Code Playgroud)\n

然后关于FPDF使用的库FPDI

\n

可能的编码有:

\n
cp1250 (Central Europe)\ncp1251 (Cyrillic)\ncp1252 (Western Europe)\ncp1253 (Greek)\ncp1254 (Turkish)\ncp1255 (Hebrew)\ncp1257 (Baltic)\ncp1258 (Vietnamese)\ncp874 (Thai)\nISO-8859-1 (Western Europe)\nISO-8859-2 (Central Europe)\nISO-8859-4 (Baltic)\nISO-8859-5 (Cyrillic)\nISO-8859-7 (Greek)\nISO-8859-9 (Turkish)\nISO-8859-11 (Thai)\nISO-8859-15 (Western Europe)\nISO-8859-16 (Central Europe)\nKOI8-R (Russian)\nKOI8-U (Ukrainian)\n
Run Code Online (Sandbox Code Playgroud)\n

发送到pdf的字符串是UTF-8(通过函数检查 mb_detect_encoding),需要用cp1250对其进行转换。

\n
$str = iconv('UTF-8', 'cp1250', 'zaz\xc3\xb3\xc5\x82ci\xc4\x87 g\xc4\x99\xc5\x9bl\xc4\x85 ja\xc5\xba\xc5\x84');\n
Run Code Online (Sandbox Code Playgroud)\n

另一种解决方案是尝试使用:

\n
$pdf->SetFont('freeserif', '', 14, '', true);\n
Run Code Online (Sandbox Code Playgroud)\n

更新专业提示:

\n

如果出现字体问题 - 首先检查您的 Linux 服务器上是否安装了该字体。

\n