2013-11-13 2 views
8

Я использую DomPDF и PHP для создания PDF-файлов. Когда текст английские все в порядке, но когда я хочу, чтобы преобразовать персидский текст, выход сломанаВыход DomPDF прерывается, когда я использую персидский текст

это пример файл, который содержит персидский и английский текст:

<html><head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<style type="text/css"> 
    body { 
     font-family: 'dejavu sans'; 
direction;rtl; 
    } 
    p { 
     font-size: 2em; 
     background: #eee; 
     padding: 1em; 
    } 

    h2 { 
     color: #999; 
    } 
</style> 
<style type="text/css"></style></head> 
<body marginwidth="0" marginheight="0"> 
<div style="text-align:right"> 
<h2>Give You Glory</h2> 
<br/> 
Hadi 
</div> 
<br/> 
هادی 
</body></html> 

это выходной файл PDF: http://i.stack.imgur.com/HOyMO.png

как я могу это исправить?

+0

«Выход не работает». Вы говорите о сломанном выходе RTL? – sofl

+4

В настоящий момент domdpf не поддерживает RTL. Вы можете взломать библиотеку, чтобы получить псевдоподдержку ([см. Здесь] (https://github.com/dompdf/dompdf/issues/426)). Вы также можете попробовать либо [TCPDF] (http://www.tcpdf.org), либо [mPDF] (http://www.mpdf1.com), оба из которых, по-видимому, имеют хотя бы некоторый уровень поддержки RTL. – BrianS

+0

- это то, что вы ищете? http://i.imgur.com/UBdkNDx.png Если да, я могу дать вам ваше решение, я думаю ... – frymaster

ответ

1

хорошо, я думаю, у меня есть решение вашей проблемы. Я могу сделать PDF, который выглядит так, как я думаю, вы ищете. вот скриншот этого

http://i.imgur.com/UBdkNDx.png

, чтобы сделать это, вы должны использовать другой способ создания PDF-файлов, чем DOMPDF: wkhtmltox-PHP.

wkhtmltox-php - это специальная команда php, скомпилированная из источника, которая использует libwkhtmltox для создания PDF-файлов. установка требует немного усилий, но это сделает ваш персидский текст выше, и будет намного быстрее, чем dompdf.

Эти инструкции предполагают линукс или подобно тому, как ваш зева:

первый: установка wkhtmltopdf. есть предварительно скомпилированные двоичные файлы для большинства операционных систем здесь:

http://wkhtmltopdf.org/downloads.html

второй: получить и скомпилировать и установить PHP-wkhtmltox.

cd /tmp/ 
wget https://github.com/mreiferson/php-wkhtmltox/archive/master.zip 
unzip master.zip 
cd php-wkhtmltox-master/ 
phpize 
./configure 
sudo make install 

примечание: если у вас на компьютере нет phpize, вам необходимо установить ваши пакеты php dev. Примечания:. Если вы получаете ошибки на настройках или сделать установки вам потребуется установить с компиляцией инструменты, как «сделать» и «ССЗ»

читая выход make install вы будете знать, в каком каталоге модуль находится в обычно это:

/usr/lib64/php/modules/ 

третий: набор PHP, чтобы знать об этом модуле в файле php.ini, добавьте следующую строку в разделе заголовком «Dynamic Extensions»

extension=phpwkhtmltox.so 

четвёртая: бег л dconfig

$ ldconfig 

пятый: перезапуск Apache (или любой другой HTTPD вы используете)

наконец: использовать его как так: для моего примера здесь, я просто используя страницу открытия шахматы из википедии, так как я не имеют URL-адреса для вашего образца html.

<?php 

    /** 
    * the config_array has lots of options but the two most important are: 
    * "out" this is the full path to where you want your pdf made 
    * "imageQuality" basically the same as jpg image quality. lower quality is slower, higher quality is a bigger file 
    */ 
    $config_array = array( "out" => "/tmp/pdfdocument.pdf", 
          "imageQuality" => 95); 

    /** 
    * the array of urls that are the input html for making your pdf. note that these are not files, but urls 
    * also note that this is an array of arrays keyed by "page" 
    */ 
    $htmls_array = array(array("page"=>"http://en.wikipedia.org/wiki/Queen's_Gambit_Declined")); 

    /** 
    * run the conver like so and your pdf file should be on disk 
    */ 
    wkhtmltox_convert('pdf', $config_array, $htmls_array); 

?> 

Если вы посмотрите на скриншот, который я опубликовал выше, похоже, что phpwkhtmltox делает работу правильно.

Смежные вопросы