Инвертирование Строк на Справа налево (Двунаправленных) Языках в iTextSharp

Первое, что пришло на ум...

$artist = array("the roots","michael jackson","billy idol","more","and more","and_YET_MORE");
$count = array(5,3,9,1,1,3);
$highest = max($count);
for (int $x = 0; $x < count($artist); $x++)
{
    $normalized = $count[$x] / $highest;
    $heading = ceil($normalized * 6); // 6 heading types
    echo "<h".$heading.">".$artist[$x]."</h".$heading.">";
}
5
задан friedemann_bach 22 October 2015 в 17:48
поделиться

3 ответа

HTML отображает иврит / арабский язык в логическом режиме, а в PDF вам необходимо сохранить его в визуальном режиме. Что вам нужно сделать, так это преобразовать из логического в визуальный режим. Есть несколько библиотек, которые делают это (google для minibidi, который лицензирован BSD, IMHO, или fribidi, который является GPL или LGPL).

Моё реальное предложение - изменить направление. Напишите очень маленькое приложение на Qt4, которое принимает в качестве первого аргумента URL-адрес, а вторым - PDF-файл для записи. Поскольку Qt4 имеет поддержку HTML (через QtWebKit), есть возможность печати в PDF (также как post script и SVG), это должно быть проще, чем написание собственного решения HTML-> PDF.

0
ответ дан 13 December 2019 в 22:11
поделиться
  1. Поместите ваш код в систему контроля версий (я предпочитаю Subversion (svn)). Это упрощает синхронизацию сред DEV, TEST и PROD, вам не нужно отслеживать файлы, которые вы изменили. Когда вы довольны своими изменениями в DEV, вы фиксируете изменения в svn, а затем запускаете «svn update» в ТЕСТЕ и, в конечном итоге, после тестирования на сервере PROD. У большинства хостинг-провайдеров Linux установлен клиент svn, или вы можете установить его самостоятельно.

  2. Мне не нравится иметь разные версии конфигурационного файла для каждого сайта, потому что это требует ручного переименования одного файла и удаления двух других. Я предпочитаю иметь конфигурации DEV, TEST и PROD в одном файле конфигурации. В конфигурационном файле я определяю, на каком сервере выполняется код, проверяя либо имя хоста, либо URL-адрес запроса. Тогда я могу " Он устанавливается как драйвер принтера Windows, поэтому его можно использовать в любой программе Windows, имеющей функцию печати. ​​

    Вы можете рассматривать вводимые данные как простые текстовые строки для печати и, возможно, использовать print ] пункт меню Блокнот создаст правильный PDF-файл.

    Если вы хотите немного углубиться в печать справа налево C # , используйте StringFormatFlags.DirectionRightToLeft ] строковый формат с вызовами Graphics.DrawString () .

    Фрагмент из обработчика событий PrintPage :

    lineFmt = new StringFormat(StringFormatFlags.DirectionRightToLeft);
    e.Graphics.DrawString(textToPrint, font, Brushes.Black, startX, ypos, lineFmt);
    
1
ответ дан 13 December 2019 в 22:11
поделиться

Просто поместите строку в ячейку таблицы:

PdfPCell cell1 = new PdfPCell(new Phrase("מספר",font));
cell1.HorizontalAlignment = 2; //0=Left, 1=Centre, 2=Right
1
ответ дан 13 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: