C#iTextSharp单个单元格中的多种字体

时间:2014-02-13 09:50:31

标签: c# itextsharp

首先,我对C#并不是那么好,自从我使用它以来已经有一段时间了......

我正在为一位提供套餐的朋友制作一个Windows窗体。因此,我想将他当前的论文表格转换为带有iTextSharp库的.pdf。他仍然需要打印表格以获得客户签名等等。

我需要什么: 我希望表格有一个标题,“公司名称”,例如,文本应该比从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);

1 个答案:

答案 0 :(得分:12)

您正在将StringFont传递给AddCell()方法。那不行。您需要AddCell()方法,该方法将Phrase个对象或PdfPCell对象作为参数。

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);

在此代码段中,list的类型为List,而image的类型为Image

第一个代码段使用文字模式;第二个代码段使用复合模式。根据您使用的模式,单元格的行为会有很大不同。

documentation中解释了这一点;你可以找到数百个C#例子here