2014-10-16 4 views
2

Я хочу использовать Verdana в качестве шрифта при тиснении файла PDF с помощью iText PDF. В исходном файле используется Verdana, что не является вариантом в классе Basefont.Как использовать шрифт Verdana в Stamper (iText PDF)

Вот функция, чтобы создать свой шрифт прямо сейчас:

def standardStampFont() { 
    return BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false) 
} 

Я хотел бы изменить, что в Verdana Шрифт, а просто замены части BaseFont.HELVETICA с "Verdana" не работает.

Любая идея? Заранее спасибо!

ответ

4

Как указано, iText поддерживает стандартные шрифты Type 1, поскольку iText поставляется с файлом AFM (файлы Adobe Font Metrics). iText не имеет представления о метриках шрифтов других шрифтов (Verdana не является шрифтом Standard Type 1). Вам необходимо указать путь к файлу шрифтов Verdana.

BaseFont.createFont("c:/windows/fonts/verdana.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED) 

Обратите внимание, что я изменить false к BaseFont.EMBEDDED потому что та же проблема, у вас есть на вашей стороне, также будет происходить на стороне человека, который смотрит на файл: его PDF зритель может сделать стандартный тип 1 шрифтов, но возможно, не смогут отображать другие шрифты, такие как Verdana.

Предостережение: Твердый закодированный путь "c:/windows/fonts/verdana.ttf" работает для меня на моей локальной машине, потому что файл шрифта можно найти, используя этот путь на моей локальной машине. Этот код не будет работать на сервере, где я размещаю сайт iText, хотя (это сервер Linux, у которого даже нет каталога c:/windows/fonts). Я использую этот жесткий кодированный путь в качестве примера. Вы должны убедиться, что шрифт присутствует и доступен при развертывании приложения.

+0

Спасибо за ответ и отзыв о встроенной части. Я должен действительно изменить путь, но это не должно быть проблемой. –

0

Добавление этой линии убеждается FontFactory фактически регистрирует шрифты в операционных системах шрифтов по умолчанию директории:

FontFactory.RegisterDirectories(); 

После этого все установленные шрифты можно найти, используя что-то вроде

var myfont = FontFactory.GetFont("Verdana", 10f, iTextSharp.text.Font.NORMAL); 

Я понимаю, что этот пост старый, но он по-прежнему актуальен, я думаю.

Смежные вопросы