2016-07-02 2 views
0

Я использую iTextSharp для создания таблицы и ее печати в формате pdf. Я пытаюсь изменить шрифт, но он имеет нулевой эффект, что когда-либо.Невозможно изменить шрифт в iTextsharp?

Font tablefont = new Font(); 
      tablefont=FontFactory.GetFont(FontFactory.HELVETICA, 8,BaseColor.RED) ;  

      table.AddCell("Name :"); 
      PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds") {Font=tablefont}); 

ответ

0

Если вы начинаете новый проект, я предложил бы использовать 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: в ответ на этот вопрос вы получите очень подробную информацию о том, как использовать любой шрифт, доступный на вашем компьютере.

+0

ITextSharp выглядит отлично, но я работаю над существующим проектом, который использует iTextSharp. Однако ваш ответ решил мою проблему. Пожалуйста, включите в свой ответ следующий код для полноты. 'BaseFont bfTimes = BaseFont.CreateFont (BaseFont.TIMES_ROMAN, BaseFont.CP1252, false); Font tablefont = new Font (bfTimes, 8, Font.NORMAL); ' – Arbaaz

+0

Нет необходимости создавать экземпляр' BaseFont', если вы используете стандартный шрифт Type 1, такой как Times-Roman. Кроме того: определение стиля (например, 'Font.NORMAL') не имеет смысла, если вы используете * font *, а не семейство * шрифтов *. Я знаю, что вы нашли этот фрагмент кода на докеттинке Майка, и хотя Майк отлично поработал над написанием примеров, некоторые советы, которые он дает, не всегда точны ;-) –

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