Здесь происходит несколько вещей.Прежде всего, анализатор HTML / CSS в iText и iTextSharp далек от завершения.Они определенно очень мощные, но у них еще есть пути.Каждая версия становится лучше, поэтому всегда проверяйте, используете ли вы последнюю версию.
Во-вторых, я видел больше HTML / CSS-активности в дополнении для iText / iTextSharp под названием XMLWorker, которое вы, возможно, захотитепосмотри на.Вы больше не «загружаете стили», вы просто передаете необработанный HTML / CSS, и он многое вычисляет.Вы можете увидеть примеры здесь , список поддерживаемых атрибутов CSS здесь , скачать здесь (и получить два отсутствующих файла здесь и здесь ).
В-третьих, LoadTagStyle
предназначен для загрузки атрибутов стиля для тегов HTML, а не идентификаторов CSS или классов.Вы хотите использовать LoadStyle
для загрузки по классу:
styles.LoadStyle("<classname>", "<attribute>", "<value>");
К сожалению, этот метод все еще не делает то, что вы хотите, чтобы он делал всегда.Например, чтобы изменить размер шрифта, вы бы сказали:
styles.LoadStyle("headerdiv", "font-size", "60ptx);
Но чтобы заставить его работать, вы можете использовать только относительные размеры шрифта HTML (1,2, -1 и т. Д.)или размеры PT, и вы должны использовать свойство size
:
styles.LoadStyle("headerdiv", "size", "60pt");
//or
styles.LoadStyle("headerdiv", "size", "2");
Честно говоря, LoadStyle
выглядит как запоздалая мысль, которая была только частично завершена, и я рекомендую не использовать ее на самом деле.Вместо этого я рекомендую писать атрибуты стиля непосредственно в строке, если вы можете:
string html = "<div id=\"personal\" class=\"headerdiv\" style=\"padding-left:50px;font-size:60pt;font-family:Cambria;font-weight:700;\">Personal Data</div>";
Очевидно, что это побеждает точки CSS и еще раз, поэтому они работают над новым XMLWorker выше.
Наконец, чтобы использовать шрифты по именам, вы должны сначала зарегистрировать их в iTextSharp, они не будут искать их:
iTextSharp.text.FontFactory.Register(@"c:\windows\fonts\cambria.ttc", "Cambria");