2016-07-02 16 views
0

Ich benutze iTextSharp, um eine Tabelle zu generieren und es in einer PDF-Datei zu drucken. Ich versuche, die Schriftart zu ändern, aber es hat keinen Effekt was auch immer.Kann Schriftart in iTextsharp nicht ändern?

Font tablefont = new Font(); 
      tablefont=FontFactory.GetFont(FontFactory.HELVETICA, 8,BaseColor.RED) ;  

      table.AddCell("Name :"); 
      PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds") {Font=tablefont}); 

Antwort

0

Wenn Sie ein neues Projekt beginnen, würde ich mit iText 7 für iTextSharp vorschlagen, weil wir Schrift Erbe in dieser Version eingeführt haben; siehe Chapter 1: Introducing the PdfFont class

Wenn Sie darauf bestehen, mit iTextSharp 5.5.9, sollten Sie die alten Tutorials lesen, und erstellen Sie Ihre Phrase wie folgt aus:

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false); 
Font tablefont = new Font(bfTimes, 8); 
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont)); 

Oder wie folgt aus:

Font tablefont = new Font(FontFamily.TIMES_ROMAN, 8); 
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont)); 

Oder wie dies:

Font tablefont = FontFactory.GetFont("Times-Roman", 8); 
PdfPCell cell = new PdfPCell(new Phrase("Star Diamonds", tablefont)); 

Sie finden viele alte Schriftart exa in chapter 11: Choosing the right font des iText in Action Buch. Die Beispiele auf dieser Seite sind in Java, aber wenn Sie nach unten scrollen, finden Sie Links zu allen entsprechenden .cs Dateien.

Es gibt auch eine umfangreiche FAQ section about fonts, bestehend aus Antworten auf Fragen, die auf StackOverflow in der Vergangenheit geschrieben wurden.

Obwohl kein genaue duplizieren, schloss ich die Frage zu How to use System Font in iTextSharp with VB.net Bezug

Sie sind mit C#, aber die folgende Zeile ist sehr ähnlich zu dem, was Sie brauchen:

document.Add(New Paragraph("Hello World, Arial.", font)) 

Die Paragraph Klasse ist eine Unterklasse der Klasse Phrase, die Sie verwenden. Genau wie bei Paragraph müssen Sie die font (in Ihrem Fall tablefont) als zweiten Parameter des Konstruktors übergeben.

Es gibt einen zweiten Grund, warum ich mich auf How to use System Font in iTextSharp with VB.net beziehen: In der Antwort auf diese Frage erhalten Sie sehr detaillierte Informationen darüber, wie Sie eine Schriftart verwenden, die auf Ihrem Computer verfügbar ist.

+0

ITextSharp sieht gut aus, aber ich arbeite an einem bestehenden Projekt, das iTextSharp verwendet. Deine Antwort hat mein Problem gelöst. Bitte fügen Sie der Vollständigkeit halber den folgenden Code in Ihre Antwort ein. 'BaseFont bfTimes = BaseFont.CreateFont (BaseFont.TIMES_ROMAN, BaseFont.CP1252, false); Schriftart tablefont = new Schriftart (bfTimes, 8, Font.NORMAL); ' – Arbaaz

+0

Es ist wirklich nicht notwendig, eine 'BaseFont'-Instanz zu erstellen, wenn Sie eine Standardschriftart wie Times-Roman verwenden. Außerdem: Einen Stil zu definieren (wie zB 'Font.NORMAL') macht keinen Sinn, wenn Sie die * Schriftart * anstelle der * Schriftfamilie * verwenden. Ich weiß, dass Sie dieses Code-Snippet auf Mikes Dotnetting gefunden haben, und obwohl Mike großartige Arbeit geleistet hat, um Beispiele zu schreiben, sind einige der Ratschläge, die er gibt, nicht immer genau ;-) –