返回

DomPDF 中扩展拉丁字符显示错误的正确处理方法

php

DomPDF 中扩展拉丁字符的正确显示

问题:

在使用 DomPDF 生成 PDF 时,你可能会遇到显示扩展拉丁字符(如 "ążćłóńę")的 500 错误。这可能是由于未正确配置字体。

解决方案:

1. 安装 DejaVu 字体

确保你的系统上已安装 DejaVu 字体,因为它支持扩展拉丁字符。

2. 添加字体到 DomPDF 配置

在 PHP 代码中,使用 getFontMetrics() 方法将 DejaVu 字体添加到 DomPDF 配置中:

$fontMetrics = $dompdf->getFontMetrics();
$fontMetrics->registerFont('DejaVu Sans', 'DejaVuSans');

3. 使用字体名称

在 HTML/CSS 代码中,使用 "DejaVu Sans" 的字体名称,而不是实际的字体文件路径:

<style>
    * {
        font-family: "DejaVu Sans", sans-serif;
    }
</style>

其他提示:

  • 使用 DomPDF 的最新版本。
  • 检查 PHP 配置以确保允许远程文件包含(allow_url_include)。
  • 尝试不同的字体,如 "Helvetica" 或 "Arial"。

代码示例:

require 'vendor/autoload.php';

use Dompdf\Dompdf;
use Dompdf\Options;

$options = new Options();
$options->set('isRemoteEnabled', true);

$dompdf = new Dompdf($options);

$fontMetrics = $dompdf->getFontMetrics();
$fontMetrics->registerFont('DejaVu Sans', 'DejaVuSans');

$php = file_get_contents("inputPdfData.php");

$dompdf->setPaper('A4', 'portrait');
$dompdf->loadHtml($php);

$dompdf->render();
$dompdf->stream();

总结:

通过这些步骤,你可以在 DomPDF 中正确显示扩展拉丁字符,生成准确且美观的 PDF。

常见问题解答:

  1. 为什么需要注册字体?

    注册字体可以让 DomPDF 知道如何使用它,从而确保字符正确显示。

  2. 为什么需要安装 DejaVu 字体?

    DejaVu 字体是专门设计用于支持扩展拉丁字符的字体。

  3. 是否可以在没有互联网连接的情况下使用 DomPDF?

    在启用远程文件包含后,可以在没有互联网连接的情况下使用 DomPDF。

  4. 是否可以使用其他字体?

    可以,但确保字体支持扩展拉丁字符。

  5. 如果仍然遇到问题怎么办?

    请检查字体安装、DomPDF 配置和 HTML/CSS 代码,并尝试联系 DomPDF 社区寻求帮助。