GdiCharSet & iTextSharp - PullRequest
       0

GdiCharSet & iTextSharp

0 голосов
/ 24 декабря 2010

Есть ли способ создать шрифт iTextSharp, используя дополнительную информацию (например, gdiCharSet и т. Д.) Из объекта System.Drawing.Font?

1 Ответ

0 голосов
/ 27 декабря 2010

Краткий ответ: Да.

Длинный ответ: каждый атрибут немного отличается, но вся эта информация может быть выражена в PDF в целом и в iText [Sharp] в частности.

Вы можете указать кодировку шрифта при его создании, но вы должны делать это так, как понимает iText. В частности, значения кодирования являются строками внутри iText [Sharp]. BaseFont имеет ряд открытых статических строковых членов, которые перечисляют многие из доступных кодировок, включая несколько кодовых страниц, которые будут красиво отображаться в некоторых значениях GdiCharSet. Другие, не так много.

Я обычно предлагаю использовать «Identity-H» и поднабор ваших шрифтов (что происходит автоматически с Identity-H, вы не можете избежать этого, что хорошо), если только вам не нужно поддерживать минимальный размер файла , Существует несколько однобайтовых кодировок, наиболее распространенным из которых является «WinAnsiEncoding», BaseFont.WINANSI (по умолчанию IIRC). Строка также может быть именем CMap (например, Identity-H).

Обычно CMaps зависят от языка и кодировки. UTF & Japanese, или Big5 (китайская кодировка, насколько я помню), или что там у вас. Identity-H (и Identity-V) вместо этого шрифт специфичны. Они просто отображают значения в потоке контента на индексы глифов в шрифте (которые могут сильно отличаться от одного шрифта к другому или между версиями данного шрифта: именно поэтому вам необходимо встроить подмножества шрифтов Identity- *).

В PDF (и, следовательно, iText [Sharp]), «жирный» и «курсив» являются частью идентификатора шрифта, а не свойством. "Arial-Bold", "Arial-Italic" и др.

Вычеркивание и подчеркивание - это украшения, добавленные после факта (хотя я полагаю, что iText позволит вам установить флаг на уровне шрифта для таких вещей в конструкторе com.itextpdf.text.Font).

iText не даст вам прямого доступа к высоте, хотя «дескриптор» шрифта позволит вам определить его.

Размер точки также не является свойством, вы устанавливаете его и шрифт (и цвет, по умолчанию черный), прежде чем рисовать какой-либо текст.

...