Если вы начинаете новый проект, я предложил бы использовать IText 7 для iTextSharp, потому что мы ввели наследование шрифта в этой версии; см Chapter 1: Introducing the PdfFont class
Если вы настаиваете на использовании iTextSharp 5.5.9, вы должны читать старые учебники, и создать свой Phrase
так:
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
Font tablefont = new Font(bfTimes, 8);
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont));
Или так:
Font tablefont = new Font(FontFamily.TIMES_ROMAN, 8);
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont));
Или как это:
Font tablefont = FontFactory.GetFont("Times-Roman", 8);
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont));
Вы найдете много старого шрифта exa mples в chapter 11: Choosing the right font из iText в книге действий. Примеры, представленные на этой странице, представлены на Java, но если вы прокрутите вниз, вы найдете ссылки на все соответствующие файлы .cs
.
Существует также обширный FAQ section about fonts, состоящий из ответов на вопросы, которые были отправлены на StackOverflow в прошлом.
Хотя не точный дубликат, я закрыл вопрос, ссылаясь на How to use System Font in iTextSharp with VB.net
Вы используете C#, но следующая строка очень похожа на то, что вам нужно:
document.Add(New Paragraph("Hello World, Arial.", font))
Paragraph
class является подклассом класса Phrase
, который вы используете. Как и в случае с Paragraph
, вам необходимо передать font
(в вашем случае tablefont
) в качестве второго параметра конструктора.
Существует вторая причина, почему я ссылаюсь на How to use System Font in iTextSharp with VB.net: в ответ на этот вопрос вы получите очень подробную информацию о том, как использовать любой шрифт, доступный на вашем компьютере.
ITextSharp выглядит отлично, но я работаю над существующим проектом, который использует iTextSharp. Однако ваш ответ решил мою проблему. Пожалуйста, включите в свой ответ следующий код для полноты. 'BaseFont bfTimes = BaseFont.CreateFont (BaseFont.TIMES_ROMAN, BaseFont.CP1252, false); Font tablefont = new Font (bfTimes, 8, Font.NORMAL); ' – Arbaaz
Нет необходимости создавать экземпляр' BaseFont', если вы используете стандартный шрифт Type 1, такой как Times-Roman. Кроме того: определение стиля (например, 'Font.NORMAL') не имеет смысла, если вы используете * font *, а не семейство * шрифтов *. Я знаю, что вы нашли этот фрагмент кода на докеттинке Майка, и хотя Майк отлично поработал над написанием примеров, некоторые советы, которые он дает, не всегда точны ;-) –