iTextSharp – 是否可以为同一个单元格和行设置不同的字体颜色?

我使用iTextSharp.dll与以下代码:

var Title = "This is title"; var Description = "This is description"; Innertable.AddCell(new PdfPCell(new Phrase(string.Format("{0} {1}", Title, Description.Trim()), listTextFont)) { BackgroundColor = new BaseColor(233, 244, 249), BorderWidth = 0, PaddingTop = 4, PaddingLeft = -240, PaddingBottom = 5, HorizontalAlignment = Element.ALIGN_LEFT }); 

我们可以为标题和描述设置不同的字体颜色,但只使用单个单元格(即不创建新表格)?

任何有关此事的帮助将不胜感激。

你想要做的是创建2个Chunk对象,然后将它们组合成1个Phrase ,你将添加到单元格中。

 var blackListTextFont = FontFactory.GetFont("Arial", 28, Color.BLACK); var redListTextFont = FontFactory.GetFont("Arial", 28, Color.RED); var titleChunk = new Chunk("Title", blackListTextFont); var descriptionChunk = new Chunk("Description", redListTextFont); var phrase = new Phrase(titleChunk); phrase.Add(descriptionChunk); table.AddCell(new PdfPCell(phrase)); 

看看http://www.mikesdotnetting.com/Article/82/iTextSharp-Adding-Text-with-Chunks-Phrases-and-Paragraphs

尝试这样在pdf单元格中设置不同的前景色:

 var FontColour = new BaseColor(35, 31, 32); var Calibri8 = FontFactory.GetFont("Calibri", 8, FontColour); PdfPCell R3C2 = new PdfPCell(new Paragraph("Hello", Calibri8)); R3C2.BorderWidth = 0f; R3C2.HorizontalAlignment = PdfPCell.ALIGN_RIGHT; table.AddCell(R3C2); 

对于VB.net使用以下函数

  Public Function CreateFont(size As Integer, Optional style As Integer = iTextSharp.text.Font.BOLD) As iTextSharp.text.Font Dim FontColour = New BaseColor(193, 36, 67) 'Color code Return New iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, size, style, FontColour) End Function Dim p As New Paragraph p.Add(New Paragraph("Your Sentence Here", CreateFont(12, iTextSharp.text.Font.BOLDITALIC))) pdfDoc.Add(p) 

诀窍是用不同的字体创建短语(不是块)并将它们添加到父短语。 据我所知,如果您创建具有不同字体的块并将其添加到短语中,则最终短语中的所有文本都将显示相同的字体。

这是一个适合我的例子:

 // create the font we'll use var fNormal = FontFactory.GetFont("Helvetica", 10f); fNormal.SetColor(0, 0, 0); // add phrase containing link var pFooter = new Phrase(); // add phrase to this containing text only var footerStart = new Phrase("Visit "); footerStart.Font = fNormal; pFooter.Add(footerStart); // now create anchor and add with different font string wolSiteUrl = "http://www.whateveryoulike.com"; Anchor wolWebSiteLink = new Anchor(wolSiteUrl, fNormal); wolWebSiteLink.Reference = wolSiteUrl; wolWebSiteLink.Font = fNormal; wolWebSiteLink.Font.SetColor(242, 132, 0); pFooter.Add(wolWebSiteLink); // add text to go after this link var footerEnd = new Phrase(" to view these results online."); footerEnd.Font = fNormal; pFooter.Add(footerEnd); var paraFooter = new Paragraph(pFooter); // add the phrase we've built up containing lots of little phrases to document // (assume you have one of these ...) doc.Add(paraFooter);