web-dev-qa-db-fra.com

iTextSharp - Est-il possible de définir une couleur de police différente pour la même cellule et la même ligne?

J'utilise le fichier iTextSharp.dll avec le code suivant:

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

Pouvons-nous définir différentes couleurs de police pour le titre et la description, mais en n'utilisant qu'une seule cellule (c'est-à-dire sans créer un nouveau tableau)?

Toute aide en la matière serait grandement appréciée.

13
Nick K

Ce que vous voulez faire, c'est créer 2 objets Chunk, puis les combiner en 1 Phrase que vous ajouterez à la cellule.

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

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

19
TimS

Essayez comme ceci de définir une couleur de premier plan différente dans une cellule 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);
4
Nalan Madheswaran

Pour VB.Net Utilisez la fonction suivante

 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)
0
Johnbosco Adam

L'astuce consiste à créer des phrases (PAS des morceaux) avec des polices différentes et à les ajouter à une phrase parent. Autant que je sache, si vous créez des fragments avec des polices différentes et les ajoutez à une phrase, tout le texte de la phrase finale s'affiche avec la même police. 

Voici un exemple qui fonctionne pour moi:

// 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);
0
Andy Brown