как применить свойства шрифта к <span>при передаче html в pdf, используя itextsharp - PullRequest
1 голос
/ 09 ноября 2011

Я конвертирую HTML в PDF, используя itextsharp, и я хочу установить размер шрифта для тегов.Как я могу это сделать?

В настоящее время я использую:

Таблица стилей

styles = new StyleSheet();
styles.LoadTagStyle(HtmlTags.SPAN, HtmlTags.FONTSIZE, "9f");
string contents = File.ReadAllText(Server.MapPath("~/PDF TEMPLATES/DeliveryNote.html"));

Список

parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), styles);

Но это не сработало.

1 Ответ

4 голосов
/ 09 ноября 2011

Константы, перечисленные в HtmlTags, на самом деле являются мешаниной тегов HTML, свойств и значений HTML и CSS, и иногда бывает сложно определить, что использовать.

В вашем случае попробуйте HtmlTags.SIZE вместо HtmlTags.FONTSIZE, и вы получите то, что хотите.

EDIT

Я никогда не видел хорошего учебника о том, что и для чего делают свойства, обычно я просто иду прямо к исходному коду. Например, в классе ElementFactory есть метод с именем GetFont(), который показывает, как анализируется информация о шрифте. В частности, в строке 130 (редакции 229) вы увидите, где используется HtmlTags.SIZE. Однако фактическое значение для размера анализируется в ChainedProperties в методе, называемом AdjustFontSize(). Если вы посмотрите на него, то увидите, что сначала он ищет значение, которое заканчивается на pt, например 12pt. Если он обнаруживает это, он сбрасывает pt и анализирует число буквально. Если он не заканчивается на pt, он переходит к HtmlUtilities к методу, называемому GetIndexedFontSize(). Этот метод ожидает либо значения, такие как +1 и -1 для относительных размеров, либо просто целые числа, такие как 2 для индексированных размеров. Согласно спецификации HTML пользовательские агенты должны принимать значения от 1 до 7 для размера шрифта и отображать их в постепенно увеличивающемся списке размеров шрифта. Это означает, что ваше значение 9f на самом деле не является допустимым значением для передачи, вам, вероятно, вместо этого следует передать 9pt.

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

...