dompdf специальные символы - PullRequest
12 голосов
/ 28 февраля 2011

У меня успешные преобразования html-в-pdf, но не со специальными символами.

Ниже приведен только специальный символ, который я пытаюсь отобразить, который отображается в браузерах на моем Mac, когда я помещаю его просто в HTML-документ. (но не на моем окне Windows)

<?php
require_once("../dompdf_config.inc.php");
$html = '&#8364;';
$dompdf = new DOMPDF(); $html = iconv('UTF-8','Windows-1250',$html);
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("contract.pdf");
exit(0);
?>

Я продолжаю получать "?" (вопросительный знак), когда рендеринг PDF. Я знаю, что было много проблем, задокументированных в отношении специальных символов, но я решил попробовать это с кодом, который я на самом деле использую.

Если DomPdf не является рекомендуемым инструментом преобразования HTML в PDF, я приму любые другие рекомендации!

Ответы [ 5 ]

16 голосов
/ 11 октября 2012

У меня возникли проблемы с DOMPDF при преобразовании HTML-страницы UTF-8. Я просто решил проблему, добавив

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

Между тегом . Может быть, это может быть альтернативой, если вы установите его с вашим типом кодировки.

ВАЖНОЕ ПРИМЕЧАНИЕ из комментариев ниже: не используйте stream () и output () методы для одного экземпляра PDF Если вы сделаете это, не сработает.

6 голосов
/ 04 июля 2013

DOMPDF Латинская Турецкая (Türkçe) проблема с символами, мое решение% 100 Работа.

Управление требованиями к серверу: Server requirenment control

Char 'dejavu sans mono' (турецкая поддержка) ИЛИ:

Шаг 1: dompdf_config.inc.php изменить на

mb_internal_encoding('UTF-8');
def("DOMPDF_UNICODE_ENABLED", true);

Шаг 2: lib / fonts / dompdf_font_family_cache.dist.php изменить, чтобы добавить код:

'futural' => 
  array (
    'normal' => DOMPDF_FONT_DIR . 'FUTURAL',
    'bold' => DOMPDF_FONT_DIR . 'FUTURAL',
    'italic' => DOMPDF_FONT_DIR . 'FUTURAL',
    'bold_italic' => DOMPDF_FONT_DIR . 'FUTURAL',
  ),

Шаг 3: загрузите файлы шрифтов для копирования папки lib / fonts. Скачать файлы шрифтов Ссылка http://www.2shared.com/file/k6hdky_b/fonts.html

Шаг 4: Ваш код Редактировать пример:

require_once("dompdf_config.inc.php");
$html='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
    html{padding:-30px;}
    body { font-family: futural; }
</style>
</head><body>';
$html.='ı İ Ş ş ç Ç ö Ö ü Ü ğ Ğ ÿ þ ð ê ß ã Ù Ñ È »  ¿ İsa Şahintürk';
$html.='</body></html>';
if ( isset( $html ) ) {
    if ( get_magic_quotes_gpc() )
    $html = stripslashes($html);
    $old_limit = ini_set("memory_limit", "16M");
    $dompdf = new DOMPDF();
    $dompdf->load_html($html,'UTF-8');
    $dompdf->set_paper('a4', 'portrait');// or landscape
    $dompdf->render();
    $dompdf->stream("limitless.pdf");
exit(0);
}

Конец Готово PDF> пример enter image description here http://limitsizbilgi.com/pdf/dompdf-chartest.pdf

5 голосов
/ 08 апреля 2015

после попытки всех решений в сети.Я мог бы решить без изменения dompdf.проблема была в содержании html.Мне просто нужно было добавить правильную и подходящую структуру HTML и установить шрифт.Протестировано на v0.6.0 и v0.6.1.здесь я оставляю код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <meta http-equiv="Content-Type" content="charset=utf-8" />
  <style type="text/css">
    * {
      font-family: "DejaVu Sans Mono", monospace;
    }
  </style>
</head>

<body>your content ćčžšđ...</body>

</html>
3 голосов
/ 01 марта 2011

Что-либо до 0.6.x имеет ограниченную поддержку символов вне кодировки iso-8859-1.Euro поддерживается в 0.5.x с помощью соответствующего кода символа Windows ANSI (&#0128;), но в противном случае вам придется перепрыгивать через некоторые циклы кодирования PDF.

В версии 0.6.0 улучшена поддержка "специальные символы.Кодировка по умолчанию основана на Windows ANSI (одна из немногих, распознаваемых спецификацией PDF 1.3).Вы можете включить лучшую поддержку символов, загрузив шрифт на основе Юникода и включив Юникод в dompdf и указав эту кодировку в своем документе.

В dompdf 0.6.0 или выше должно работать следующее:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
  <p>€</p>
</body>
</html>

(или, чтобы быть ленивым, просто используйте в своем тесте сущность евро &euro;)

Есть документ с описанием шагов, необходимых для включить поддержку Юникода в DOMPDF .Кроме того, прочитайте этот ответ для обзора загрузки шрифтов .

1 голос
/ 18 сентября 2016

Вы должны использовать другой набор символов.Например, дежавю без моно.Добавьте свой код

<style>
*{
    font-family:"DeJaVu Sans Mono",monospace;
}
</style>

Я также упоминал об этом в этом видео.

...