Специальные символы dompdf

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

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

<?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-to-pdf, я возьму любые другие рекомендации!

Ответ 1

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

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

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

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

Ответ 2

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

Управление реквизитами сервера: Управление реквизитами сервера

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: файлы файлов doqnload для копирования папки 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 herehttp://limitsizbilgi.com/pdf/dompdf-chartest.pdf

Ответ 3

после попытки всех решений в сети. Я мог бы решить без изменения 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>

Ответ 4

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

В выпуске 0.6.0 лучше поддерживать "специальные" символы. Кодировка по умолчанию основана на Windows ANSI (одна из немногих, признанная спецификацией PDF 1.3). Вы можете включить улучшенную поддержку символов, загрузив шрифт на основе Unicode и включив Unicode в 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>

Ответ 5

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

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

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