【问题标题】:PHP DOMPDF html to PDF converter font rendering issue in v.0.6.1v.0.6.1 中的 PHP DOMPDF html 到 PDF 转换器字体渲染问题
【发布时间】:2014-06-26 21:08:22
【问题描述】:

我正在使用从github 下载的 DOMPDF v.0.6.1 将 HTML 转换为 PDF 文件。在配置中添加自定义字体时,我面临字体显示问题。 dompdf_font_family_cache.dist.php

我使用http://eclecticgeek.com/dompdf/load_font.php 生成 Unicode TAMIL 字体(latha by microsoft font)。我已将字体复制到相应的文件夹中。

但我看到字体没有按原样打印。

我的代码:

<p style="font-family: tamil-latha, verdana, sans-serif;" >தமிழ்</p>

但PDF打印的是:

两个值都不相同。字体附近有一些框,最后一个字符上的点丢失了..

注意:我还将新创建的字体添加到 dompdf_font_family_cache.dist.php

    'tamil-latha' => 
  array (
    'normal' => DOMPDF_FONT_DIR . 'latha',
    'bold' => DOMPDF_FONT_DIR . 'latha',
    'italic' => DOMPDF_FONT_DIR . 'latha',
    'bold_italic' => DOMPDF_FONT_DIR . 'latha',
  ),

我在 github 上提出了同样的问题:https://github.com/dompdf/dompdf/issues/838

建议的解决方案是: 使用 dompdf v.0.6.2 但是这里没有这样的版本:https://github.com/dompdf/dompdf 如果您能够获得 v.0.6.2,请帮助我

【问题讨论】:

  • 我也看不到 0.6.2 标签。你试过 Dev 分支吗? github.com/dompdf/dompdf/tree/develop
  • @DaryllDoyle :是的,我已经尝试过但没有用...您是否建议任何其他适用于所有字体的 PDF 生成 API..

标签: php unicode fonts dompdf


【解决方案1】:

Dompdf 似乎存在 UTF-8 编码问题。我使用 dompdf 尝试了您的示例,但遇到了与您相同的问题。但是,我也尝试使用tcpdf(也是免费的)它似乎运行良好。

这是您的示例代码,以及完整的源代码can be downloaded here

<?php

header('Content-type: text/html; charset=UTF-8') ;//chrome
require_once('tcpdf.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->setFontSubsetting(true);

$pdf->SetFont('freeserif', '', 12);

$pdf->AddPage();

$utf8text = '
<html><head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>
<p>தமிழ்</p>
</body></html>';

$pdf->writeHTML($utf8text, true, 0, true, true);

$pdf->Output('example_008.pdf', 'I');

?>

【讨论】:

  • 非常感谢乔希。非常感谢 :) 我会在我的电脑上尝试让你。它需要任何安装吗?或者只是复制粘贴文件会起作用吗?同时让我知道它是否适用于英语和泰米尔语字体显示的组合。 (目前没有电脑测试。请告诉我)
  • @logan 您只需将文件复制到您的网络服务器目录中。我不需要使用泰米尔语字体——默认字体工作得很好(所以是的,英语和泰米尔语应该一起工作)。要记住的关键是编码必须是 UTF-8(并且您需要一个 pdf 库来支持它)。
  • @logan 对,tcpdf 支持的文件。我放了一个链接,指向我的完整代码的压缩包,包括库。试试看,让我知道结果如何。
  • @logan 很高兴它成功了! :) 我期待收到赏金。
  • @logan 我从未使用过 mpdf,但它看起来很有前途;我没有看到任何缺点。
【解决方案2】:

我按照 josh 的建议尝试了 tcpdf。 现在前一个单词可以正常显示,但新单词显示不正确。

$utf8text = '
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>     <body><p>தமிழ்      முந்திரி </p></body>        </html>';

PDF 中的实际答案是:

【讨论】:

  • 不是母语,所以请原谅这个问题,是一个字符还是两个字符组合成一个字母?现在我怀疑有很多基于 PHP 的库可以处理复合字母。我在 dompdf 中看到了同样的问题。无论是那个还是您使用的字体都没有适合所讨论字符的字形。
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2020-09-19
  • 2015-12-19
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多