Я не могу найти dompdf_config.inc.php или dompdf_config.custom.inc.php для установки DOMPDF_UNICODE_ENABLED true

Я использую dompdf для сохранения html-страницы в формате pdf с помощью php. Я использую персидские символы на своей html-странице (на самом деле php-странице), но когда я пытаюсь сохранить ее в формате pdf, экспорт выглядит как «?????» :( .Я обыскал всю сеть и нашел конфигурацию для символов Юникода https://github.com/dompdf/dompdf/wiki/UnicodeHowTo#configure-dompdf-for-unicode-support в "dompdf_config.inc.php" или < strong>"dompdf_config.custom.inc.php". но проблема в том, что я НЕ МОГУ НАЙТИ такой файл во всей моей папке dompdf и во всей моей файловой системе. Пожалуйста, скажите мне, где он или что я должен сделать. кое-что еще, что я должен использовать dompdf из-за его фантастической совместимости с CSS. Спасибо.

Это экспорт. http://i.stack.imgur.com/nYAzW.png

Это мой код.

require("dompdf/autoload.inc.php");
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHtml("<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">

<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/scorestyle.css\">

</head>
<body><div>
<div id=\"showscorediv\"><table><tbody><tr class=\"scoresubject\"><th colspan=\"2\">کارنامه ارزیابی</th></tr><tr class=\"scorecategory\"><th>شاخص ها</th><th>امیتاز ها</th></tr><tr><td><span class=\"level_0\">شاخص های کیفی</span></td><td class=\"scoretd\">62</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با تیم کاری</span></td><td class=\"scoretd\">10</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با محصول</span></td><td class=\"scoretd\">28</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با بازار</span></td><td class=\"scoretd\">24</td></tr><tr><td><span class=\"level_0\">شاخص های کمی</span></td><td class=\"scoretd\">60</td></tr><tr><td><span class=\"level_1\">شاخص های تولیدی</span></td><td class=\"scoretd\">20</td></tr><tr><td><span class=\"level_1\">شاخص های درآمدی</span></td><td class=\"scoretd\">14</td></tr><tr><td><span class=\"level_1\">شاخص های هزینه ای</span></td><td class=\"scoretd\">26</td></tr><tr class=\"scoresubject\"><th>امتیاز کل</th><th>122</th></tr></tbody></table>
</div>
</div></body></html>");
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream();

person HosSeinM    schedule 12.05.2016    source источник
comment
Возможно, вам нужно скачать их. Не знаю, просто догадываюсь по интуиции.   -  person Lajos Arpad    schedule 12.05.2016
comment
где я должен разместить его @LajosArpad после загрузки этих файлов? Я имею в виду какой адрес?   -  person HosSeinM    schedule 12.05.2016
comment
Кажется, вам нужно поместить пользовательский файл конфигурации в корневую папку: github.com/rposborne/gravityformspdf/blob/master/dompdf/   -  person Lajos Arpad    schedule 12.05.2016


Ответы (3)


Похоже, вы используете dompdf 0.7.0, который больше не использует файл конфигурации dompdf_config.inc.php. В этом выпуске всегда включена поддержка Unicode.

Чтобы отобразить символы, используемые в вашем примере кода, вам необходимо убедиться, что:

  1. Вы предоставляете шрифт, который поддерживает эти символы (этот похоже, это так).
  2. Этот dompdf имеет возможность чтения и записи во временный каталог, каталог шрифтов и каталог кеша шрифтов. Вы можете установить их с помощью $dompdf->set_option('option', 'value'); (где option будет tempDir, fontDir или fontCache).
  3. Шрифт доступен для dompdf и имеет формат TTF.
  4. Вы правильно оформляете свой контент, чтобы использовать свой шрифт. Трудно понять, не видя вашего CSS.

К вашему сведению, вы не можете просто поместить TTF/UFM в каталог шрифтов. dompdf должен записать информацию о шрифте, чтобы использовать его. Кроме того, файл метрик AFM в любом случае не будет работать в этом случае, потому что это указывает на кодировку Windows ANSI для шрифта. Кодировка Windows ANSI не поддерживает символы в вашем образце. Dompdf использует формат метрик UFM для поддержки Unicode.

Утилиты, которые были включены в предыдущие версии dompdf, больше не включены в 0.7.0. Пока вы соответствуете требованиям использования объявления @font-face, вам не нужны никакие внешние утилиты. Однако при необходимости вы можете найти совместимую версию сценария load_font.php в проекте dompdf-utils.

Поскольку вы используете версию 0.7.0 (которая была только что выпущена), много информации в Интернете может быть устаревшей, поэтому вы можете прочитать о том, как ее использовать:


Наконец, dompdf включает в себя шрифт (DejaVu), который может поддерживать ваши символы. Попробуйте добавить следующее в свою таблицу стилей, чтобы у вас был запасной вариант на случай, если ваш собственный шрифт не работает:

* { font-family: BZar_0, DejaVu Sans, sans-serif; }
person BrianS    schedule 12.05.2016

Я только что добавил файлы dompdf_config.inc.php и dompdf_config.custom.inc.php из версии dompdf 0.6.2, кроме того, включил директорию с autoload.inc.php и functions.inc.php в мой dompdf 0.8.*, и это работает.

person Alejandra Sandoval    schedule 15.04.2019

Чтобы установить любую опцию DOMPDF, вы должны определить именованную константу. Все доступные параметры можно найти здесь: http://pxd.me/dompdf/www/setup.php

Чтобы включить персидские символы, вам в основном нужно включить поддержку Unicode.

define("DOMPDF_UNICODE_ENABLED", true);

Вы также можете установить DOMPDF_FONT_DIR и DOMPDF_DEFAULT_FONT, просто чтобы убедиться, что используемый вами шрифт поддерживает символы Юникода.

person Yeti    schedule 12.05.2016
comment
где я должен поместить эту константу? Вы имеете в виду мой основной код? Я ничего не изменил. - person HosSeinM; 12.05.2016
comment
это мой код: ‹?php require(dompdf/autoload.inc.php); определить (DOMPDF_UNICODE_ENABLED, правда); используйте Домпдф\Домпдф; используйте Dompdf\Options; $dompdf = новый Dompdf(); $dompdf-›loadHtml(mb_convert_encoding(فارسی, 'HTML-ENTITIES', 'UTF-8')); $dompdf-›setPaper('A4', 'Книжная'); $dompdf-›render(); $dompdf-›поток(); - person HosSeinM; 12.05.2016
comment
вы хотите использовать этот учебник, чтобы добавить шрифт в DOMPDF, прежде чем использовать его stackoverflow.com/questions/8968627/ вы можете использовать более подробное руководство здесь: github.com/dompdf/dompdf/wiki/UnicodeHowTo - person Yeti; 12.05.2016
comment
Я добавляю свой шрифт с помощью шрифта css, потому что я нигде не могу найти load_font.php, а онлайн-инструмент для этого отключен. Что я должен делать?? - person HosSeinM; 12.05.2016
comment
Вы можете использовать любой инструмент, который позволяет конвертировать файлы *.ttf в файлы *.amf. Вот он-лайн: everythingfonts.com/ttf-to-afm - person Yeti; 12.05.2016
comment
Я преобразовал .ttf в .afm и поместил в dompdf\lib\fonts, и его имя BZar_0.afm. Также мой код для изменения шрифта =›› use Dompdf\Options; $options = новые опции(); $options-›set('DefaultFont', 'BZar_0'); $dompdf = новый Dompdf($options); //Ничего не изменилось :-( - person HosSeinM; 12.05.2016
comment
Содержит ли ваш html тег <meta />, похожий на этот: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>? - person Yeti; 12.05.2016
comment
да, вы можете видеть это в вопросе. Я думаю, это из-за dompdf_config.inc.php и dompdf_config.custom.inc.php. Он не был загружен, пока я клонирую его из git. я не знаю почему!!!!?? где его скачать и в какой каталог положить? большое спасибо. - person HosSeinM; 12.05.2016