Первое, что пришло на ум...
$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.">";
}
HTML отображает иврит / арабский язык в логическом режиме, а в PDF вам необходимо сохранить его в визуальном режиме. Что вам нужно сделать, так это преобразовать из логического в визуальный режим. Есть несколько библиотек, которые делают это (google для minibidi, который лицензирован BSD, IMHO, или fribidi, который является GPL или LGPL).
Моё реальное предложение - изменить направление. Напишите очень маленькое приложение на Qt4, которое принимает в качестве первого аргумента URL-адрес, а вторым - PDF-файл для записи. Поскольку Qt4 имеет поддержку HTML (через QtWebKit), есть возможность печати в PDF (также как post script и SVG), это должно быть проще, чем написание собственного решения HTML-> PDF.
Поместите ваш код в систему контроля версий (я предпочитаю Subversion (svn)). Это упрощает синхронизацию сред DEV, TEST и PROD, вам не нужно отслеживать файлы, которые вы изменили. Когда вы довольны своими изменениями в DEV, вы фиксируете изменения в svn, а затем запускаете «svn update» в ТЕСТЕ и, в конечном итоге, после тестирования на сервере PROD. У большинства хостинг-провайдеров Linux установлен клиент svn, или вы можете установить его самостоятельно.
Мне не нравится иметь разные версии конфигурационного файла для каждого сайта, потому что это требует ручного переименования одного файла и удаления двух других. Я предпочитаю иметь конфигурации 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);
Просто поместите строку в ячейку таблицы:
PdfPCell cell1 = new PdfPCell(new Phrase("מספר",font));
cell1.HorizontalAlignment = 2; //0=Left, 1=Centre, 2=Right