2014-09-11 3 views
0

Я начинаю с itextsharp и задаюсь вопросом, есть ли причина, почему, если я устанавливаю шрифт фразы после построения, она не работает. Есть ли причина, я что-то пропущу?Почему я не могу установить шрифт фразы (или абзаца)?

iTextSharp.text.Font f = PdfFontFactory.GetComic(); 
f.SetStyle(PdfFontStyle.BOLD); 
Color c = Color.DarkRed; 
f.SetColor(c.R,c.G,c.B); 
f.Size = 20; 
Document document = new Document(); 
try 
{ 
    PdfWriter.GetInstance(document, new System.IO.FileStream("PhraseTest.pdf", FileMode.Create)); 
    document.SetPageSize(PageSize.A4); 
    document.Open(); 
    Phrase titreFormules = new Phrase("Nos formules",f); //THIS WORKS 
    // titreFormules.Font = f; // THIS DOESN'T WORK! 
    document.Add(titreFormules); 
    document.Close(); 

ответ

1

Это задокументировано в моей книге.

  • Chunk является атомарной частью текста, в том смысле, что весь текст в Chunk имеет то же семейство шрифтов, размер шрифта, цвет шрифта, ...
  • Phrase представляет собой совокупность объектов Chunk и поэтому Phrase может содержать разные «атомы» текста с использованием разных шрифтов.

В вашем примере "Nos formules" будет написано на Helvetica. Вы меняли шрифт после Helvetica Chunk с текстом "Nos formules" был добавлен в Phrase. Поскольку вы ничего не добавили, titreFormules, шрифт «Comic» никогда не используется.

Это также то, что я имел в виду, когда я ответил на вопрос iText - PdfPTable doesn't show Cyrillic(Russian) symbols:

При использовании setFont(), вы измените шрифт Phrase для всего контента, который добавляется после шрифт был установлен.

+0

Вопросы, которые так часто возникают, возможно, указывают на то, что люди хотят, чтобы функциональность меняла шрифты, уже используемые во фразе, вместо того, чтобы думать о правильном использовании шрифтов заранее. (И, по общему признанию, свойство или атрибут класса «Фраза», называемый «Font' *, чувствует *), как и работа с существующим контентом.) – mkl

+0

Я лучше понимаю, как он работает. Но поскольку mkl сказал, что свойство подталкивает меня к пониманию, поскольку есть конструктор для фразы и абзаца без параметра шрифта (даже шрифт по умолчанию), я думал, что давайте получим фразу или абзац с таким текстом и установим теперь его свойство. Во всяком случае, он работает так, поэтому никаких проблем для меня. Спасибо за ваш четкий ответ –