DOMPDF 西里尔字母问题

发布于 2024-07-24 04:47:23 字数 460 浏览 7 评论 0原文

我正在使用 DOMPDF 库创建 PDF 格式的发票。 该文档可以是法语、俄语或英语,但我在打印俄语字符时遇到问题。

首先,我尝试使用UTF-8编码,并将meta标签放置在要转换的HTML页面的头部:

但这没有用。

然后我将这个 meta 标签插入到 BODY 标签中,它帮助解决了法语字符的问题。

但俄语字符仍然不起作用。 我也尝试过将俄语字符转换为 HTML 实体,但这也不起作用。

我使用 R&OS CPDF 类,而不是 PDFLib 作为后端。

有人可以帮忙吗?

I am using the DOMPDF library to create an invoice in PDF. This document can be in French, Russian or English, but I am having trouble printing Russian characters.

First, I tried to use UTF-8 encoding and placed the meta tag in the head of the HTML page to be converted:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

But that didn't work.

Then I inserted this meta tag inside the BODY tag, and it helped solve the problem with French characters.

But Russian characters still don't work. I have also tried to convert Russian characters into HTML entities, but that too does not work.

I use R&OS CPDF class, not PDFLib as a backend.

Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

蓦然回首 2024-07-31 04:47:23

如果您使用 DejaVu 字体,您可以看到西里尔字符

DejaVu TrueType 字体已预先安装,默认情况下可为 dompdf 提供适当的 Unicode 字符覆盖。 要使用 DejaVu 字体,请参考样式表中的字体,例如 body { font-family: DejaVu Sans; }(对于 DejaVu Sans)。

DOMPDF 默认包含 DejaVu 字体

    $html = "<html><head><style>body { font-family: DejaVu Sans }</style>".
        "<body>А вот и кириллица</body>".
        "</head></html>";

    $dompdf = new \DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    echo file_put_contents('cyrillic.pdf', $dompdf->output());

您还可以在 dompdf_config.inc.php 中设置默认字体的更改 def

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");

if you will use DejaVu font you can see cyrillic characters

The DejaVu TrueType fonts have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. body { font-family: DejaVu Sans; } (for DejaVu Sans).

DOMPDF include DejaVu font be default

    $html = "<html><head><style>body { font-family: DejaVu Sans }</style>".
        "<body>А вот и кириллица</body>".
        "</head></html>";

    $dompdf = new \DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    echo file_put_contents('cyrillic.pdf', $dompdf->output());

You can also set change def for font by default in dompdf_config.inc.php

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
讽刺将军 2024-07-31 04:47:23

问题在于 dompdf 默认使用的字体(即它不包含所有 unicode 字符,目前已超过 5000 个)。 通常 arialuni.ttf 就是您所需要的。 您可以在 http://chernev.ru/dompdf.rar {broken link} 下载本地化的俄语版本

更新的链接:https://code.google.com/p /ipwn/downloads/detail?name=arialuni.ttf

Problem is with fonts default dompdf uses (that is it doesn't have all unicode characters, whick are by now over 5000). Usually arialuni.ttf is what you need. You can download localized russian version at http://chernev.ru/dompdf.rar {broken link}

Updated link: https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf

帅冕 2024-07-31 04:47:23

在您的 html 中,使用以下样式:

<style type="text/css">
* {
  /*font-family: Helvetica, sans-serif;*/
  font-family: "DejaVu Sans", sans-serif;
}
</style>

In your html, use this style :

<style type="text/css">
* {
  /*font-family: Helvetica, sans-serif;*/
  font-family: "DejaVu Sans", sans-serif;
}
</style>
北斗星光 2024-07-31 04:47:23

下载 arialuni.ttf
在dompdf目录下运行php load_font.php 'Arial' arialuni.ttf,将字体设置为arial
有用 ;)

Download arialuni.ttf
Run php load_font.php 'Arial' arialuni.ttf in dompdf directory, set font to arial
It works ;)

蓝礼 2024-07-31 04:47:23

如果其他答案都没有帮助,
将 Dompdf 升级到版本 7.0.0 对我有帮助。
这是我要生成的代码:

// generate pdf.
$dompdf_options = apply_filters( 'yith_wcwl_dompdf_options', array() );
$dompdf         = new Dompdf\Dompdf( $options );
$dompdf->set_option('defaultFont', 'dejavu sans');
$dompdf->loadHtml( $template );
$dompdf->setPaper( 'A4', apply_filters( 'yith_wcwl_dompdf_orientation', 'portrait' ) );
$dompdf->render();
$dompdf->stream( $wishlist->get_formatted_name() );

If none of the other answers help,
upgrading Dompdf to version 7.0.0 helped me.
Here is my code to generate:

// generate pdf.
$dompdf_options = apply_filters( 'yith_wcwl_dompdf_options', array() );
$dompdf         = new Dompdf\Dompdf( $options );
$dompdf->set_option('defaultFont', 'dejavu sans');
$dompdf->loadHtml( $template );
$dompdf->setPaper( 'A4', apply_filters( 'yith_wcwl_dompdf_orientation', 'portrait' ) );
$dompdf->render();
$dompdf->stream( $wishlist->get_formatted_name() );
悍妇囚夫 2024-07-31 04:47:23

对我来说,上述 4 个步骤并没有解决问题。
除此之外,dompdf 将创建的 pdf 转换为 ANSI (ISO)
您需要在选项页面上禁用此功能
http://domain.com/admin/settings/print/pdf

勾选使用复选框dompdf 的 Unicode 模式。 这将强制以 UTF-8/Unicode 创建文件。

请注意,默认情况下,Web 设置会覆盖 dompdf_config.inc.php 中的设置。

For me the 4 steps above didn't resolve the issue.
Besides that, dompdf converts created pdf to ANSI (ISO)
You need to disable this on the options page
http://domain.com/admin/settings/print/pdf

Tick the checkbox Use dompdf's Unicode Mode. This will force to create files in UTF-8/Unicode.

Please note that web settings override settings in dompdf_config.inc.php by default.

森林迷了鹿 2024-07-31 04:47:23

注意到问题可能出在 css-reset 使用中,特别是
字体:继承;

Noted that problem could be in css-reset usage, particularly
font:inherit;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文