2014-02-13 243 views
4

首先我不是C#是偉大的,它已經有一段時間,因爲我已經用它的工作C#iTextSharp的多字體..在單細胞

我正在給朋友的窗口形式提供軟件包。所以我想將他當前的紙質表格轉換爲PDF格式的iTextSharp。他仍然需要打印表單以獲取客戶簽名等。

我需要什麼: 我想表有一個小標題,「公司名稱」,例如,文本應該比從Windows窗體(richTextBox1)

文本輸入稍小目前我正在使用單元格,並想知道是否可以在同一個單元格中使用2種不同的字體大小?

我有什麼:

table.AddCell("Static headline" + Chunk.NEWLINE + richTextBox1.Text); 

我 「想」:

var normalFont = FontFactory.GetFont(FontFactory.HELVETICA, 9); 

var boldFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 12); 

table.AddCell("Static headline", boldFont + Chunk.NEWLINE + richTextBox1.Text, normalFont); 

回答

11

你傳遞一個StringFontAddCell()方法。這是行不通的。您需要採用AddCell()方法,該方法將Phrase對象或PdfPCell對象作爲參數。

A Phrase是由不同的Chunk組成的對象,不同的Chunk可以具有不同的字體大小。有關此對象的更多信息,請閱讀chapter 2 of my book

Phrase phrase = new Phrase(); 
phrase.Add(
    new Chunk("Some BOLD text", new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD)) 
); 
phrase.Add(new Chunk(", some normal text", new Font())); 
table.AddCell(phrase); 

PdfPCell一個目的是可以在其中添加不同的對象,如Phrase S,Paragraph S,Image S,...

PdfPCell cell = new PdfPCell(); 
cell.AddElement(new Paragraph("Hello")); 
cell.AddElement(list); 
cell.AddElement(image); 

在該片斷listList類型的,並且imageImage類型。

第一個片段使用文本模式;第二個片段使用複合模式。根據您使用的模式,單元格的行爲會非常不同。

這全部在documentation中解釋;你可以找到數百個C#示例here