DOMPDF 不起作用,尝试使用“DejaVu Sans”时返回 500

问题描述 投票:0回答:1

我无法让我的 pdf 生成器工作。我正在使用 dompdf/dompdf 库,但在生成我想要的 PDF 时遇到很多麻烦。我的问题是:每次我尝试使用使用 family-font 样式的文件生成 PDF:DejaVu Sans 时,我都会收到 500 错误并且没有任何反应。

当我删除包含“DejaVu Sans”的行时,一切正常,但我需要 PDF 文件来处理扩展的拉丁字符,如“ążćłóńę”。有什么方法可以实现这一点,或者有其他方法可以在 DomPdf 中使用扩展拉丁语吗?

PHP 生成:

<?php
require 'vendor/autoload.php';

use Dompdf\Dompdf;
use Dompdf\Options;

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

$dompdf = new Dompdf($options);

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

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

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

“输入PdfData.php”

<html lang="pl">
<head>
    <title>PDF GENERATOR</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta charset="UTF-8" content="text/html">
<style>
    * {
        font-family: "DejaVu Sans", sans-serif;
    }
</style>
</head>
<body>
    ążćęłóńź
    ĄŻĘĆŹŁÓŃ
</body>
</html>

“composer.json”

{
    "require": {
        "dompdf/dompdf": "^2.0"
    }
}

我得到的错误:

php pdf-generation dompdf
1个回答
0
投票

通常在安装 DOMPDF 后,DejaVu TrueType 字体已被预安装,默认情况下为 dompdf 提供适当的 Unicode 字符覆盖。

在 DomPdf 中使用扩展拉丁语的另一种方法(或渲染波兰字体等),您可以使用

Poltawski Nowy
字体代替。诀窍是使用谷歌字体,例如

<link href="https://fonts.googleapis.com/css2?family=Poltawski+Nowy:ital,wght@0,400..700;1,400..700&display=swap" rel="stylesheet">

所以请在下面找到完整的工作代码:

PHP

<?php
require 'vendor/autoload.php';

use Dompdf\Dompdf;
use Dompdf\Options;

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

$dompdf = new Dompdf($options);

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

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

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

输入PdfData.php

<html lang="pl">
<link href="https://fonts.googleapis.com/css2?family=Poltawski+Nowy:ital,wght@0,400..700;1,400..700&display=swap" rel="stylesheet">

<head>
    <title>PDF GENERATOR</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta charset="UTF-8" content="text/html">
<style>
    * {
        font-family: "Poltawski Nowy", sans-serif;
    }
</style>
</head>
<body>

ążćęłóńź <br>
ĄŻĘĆŹŁÓŃ <br>

Stack Overflow is good 

</body>
</html>

结果见下文

© www.soinside.com 2019 - 2024. All rights reserved.