我对希腊语的显示文本有问题。
"$text = '111πορτοκαλί111';“只输出111,而不输出文本。
当我使用字体“符号”时,它是"ok“。但怎么把它混在一起?有时是希腊语,有时是法语等等.
有什么暗示吗?
$pdf = PDF_new();
pdf_set_parameter($pdf, "licensefile", "/etc/licensekeys.txt");
pdf_set_parameter($pdf, "compatibility", "1.6");
pdf_set_parameter($pdf, "textformat", "utf8");
PDF_begin_document($pdf, "", "");
$fontUnicode = PDF_load_font($pdf, "Helvetica", "unicode", NULL);
PDF_begin_page_ext($pdf, 0, 0, "width=200 height=200");
pdf_setcolor($pdf, "both","cmyk",0.53,0.43,0.43,0.28);
PDF_setfont($pdf, $fontUnicode, 8);
$text = '111 πορτοκαλί 111';
PDF_show_xy($pdf, $text, 100, 100);
PDF_end_page_ext($pdf, '');
PDF_end_document($pdf, '');
$buf = pdf_get_buffer($pdf);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=test.pdf");
print $buf;
PDF_delete($pdf);发布于 2022-11-04 10:31:46
这里的问题是,使用的PDF Helvetica包含很少的字形,例如希腊语的符号。
为了使PDF正确显示文本,必须使用包含适当字符的字体。不是每种字体都包含一个字形vor每个字符。因此,在选择字体时,必须同时考虑外观(即是否喜欢字体外观)和字体是否包含要使用的字符。
例如,当前的PDFlib包包括NotoSerif-正则字体,其中包含许多象形文字,包括希腊语。这可能是个好办法。例如,在提供的starter_basic.php示例中显示了这一点,该示例也包含在PDFlib烹饪簿中。
此示例展示了如何应用字符串的各种方法:
/* Plain ASCII text */
$p->fit_textline("en: Hello!", 50, 700, $optlist);
/* Unicode code points */
$p->fit_textline("gr: \u{0393}\u{03B5}\u{03B9}\u{03AC}!", 50, 650, $optlist);
/* UTF-8 text */
$p->fit_textline("ru: Привет!", 50, 600, $optlist);
/* PDFlib character reference */
$p->fit_textline("es: ¡Hola!", 50, 550, $optlist . " charref=true");您可以在输出中看到希腊符号:

我只能建议您从提供的示例开始,然后在PDFlib库克中查找更多的示例代码。这通常会在您的应用程序中产生更好的代码,因为这段代码随后也将与您使用的PDFlib版本相匹配。您可能在某个地方发现的过时代码在更新时可能会造成问题。
另一项建议:
在本例中,代码使用不推荐的函数式PDFlib API (PDF_)。这在PDFlib 10 (当前版本)中不再可用,因此不推荐用于新项目。(https://www.pdflib.com/products/pdflib-family/deprecated-api-methods-and-options/)
如果您是从头开始,我建议您从最新的PDFlib 10开始。
https://stackoverflow.com/questions/74277490
复制相似问题