2012-10-28 10 views
5

Ich habe eine iTextSharp Footer Template-Methode wie folgt aus:Wie verwende ich HTML-Tags in iTextSharp String

footerOneLine.Add("<b>All this line is bold, and <u>this is bold and underlined</u></b>"); 

Und ich habe eine andere:

public PdfTemplate footerTemplate(){ 
    PdfTemplate footer = cb.CreateTemplate(500, 50); 
    footer.BeginText(); 
    BaseFont bf2 = BaseFont.CreateFont(BaseFont.TIMES_ITALIC, "windows-1254", BaseFont.NOT_EMBEDDED); 
    footer.SetFontAndSize(bf2, 11); 
    footer.SetColorStroke(BaseColor.DARK_GRAY); 
    footer.SetColorFill(BaseColor.GRAY); 
    int al = -200; 
    int v = 45 - 15; 
     float widthoftext = 500.0f - bf2.GetWidthPoint(footerOneLine[0], 11); 
     footer.ShowTextAligned(al, footerOneLine[0], widthoftext, v, 0); 
    footer.EndText(); 
    return footer; 
} 

FooterTemplate() wird Zeichenfolge wie folgt bekommen Methode macht Strings zu HTML. Die Methode ist:

private Paragraph CreateSimpleHtmlParagraph(String text) { 
    //Our return object 
    Paragraph p = new Paragraph(); 

    //ParseToList requires a StreamReader instead of just text 
    using (StringReader sr = new StringReader(text)) { 
     //Parse and get a collection of elements 
     List<IElement> elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null); 
     foreach (IElement e in elements) { 
      //Add those elements to the paragraph 
      p.Add(e); 
     } 
    } 
    //Return the paragraph 
    return p; 
} 

Das Problem: Ich kann nicht CreateSimpleHtmlParagraph Verfahren in dem oben genannten Codes zu verwenden, kam an. footer.ShowTextAligned(al, footerOneLine[0], widthoftext, v, 0); Methoden Datentypen sind footer.ShowTextAligned(int, string, float, float, float); Können Sie mir helfen, wie kann ich CreateSimpleHtmlParagraph Methode in den obigen Codes verwenden? Mit freundlichen Grüßen.

+0

Wirken Casting 'v' und die' 0' auf 'float'? (Z. B. 'footer.ShowTextAligned (al, footerOneLine [0], widthoftext, v als float, 0 als float);') – millimoose

+0

Ich kann den Inhalt der ShowTextAligned-Methode nicht sehen. Weil es in iutxsharp.ddl ist. Was ist der Unterschied? Es gibt kein Problem, wo du sagst. ShowTextAligned-Methode erfordert Zeichenfolge im zweiten Element. Die Methode CreateSimpleHtmlParagraph gibt den Absatz zurück. Ich habe diese Konvertierung nicht geschafft. –

+0

Sorry, ich habe deine Frage nicht richtig verstanden. – millimoose

Antwort

0

ich nicht genau wissen, wie Sie PdfTemplate verwenden, aber sie iTextSharp Text Abstraktionen wie ein Paragraph und Chunk mit rohen PDF Befehle wie ShowText() abmischen. Die Abstraktionen verwenden letztlich die rohen Befehle, helfen Ihnen aber bei Gedanken wie Zeilenumbrüchen und aktuellen Koordinaten, die Sie normalerweise manuell berechnen müssten.

Die gute Nachricht ist, dass es eine Abstraktion namens ColumnText gibt, die direkt mit einem PdfWriter.PdfContentByte Objekt funktioniert, solange Sie bereit sind zu akzeptieren, dass Sie ein festes Rechteck zum Zeichnen von Text haben.

//Create a ColumnText from the current writer 
var ct = new ColumnText(writer.DirectContent); 
//Set the dimensions of the ColumnText 
ct.SetSimpleColumn(0, 0, 500, 0 + 20); 
//Create two fonts 
var helv_n = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); 
var helv_b = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); 
//Create a paragraph 
var p = new Paragraph(); 
//Add two chunks to the paragraph with different fonts 
p.Add(new Chunk("Hello ", new iTextSharp.text.Font(helv_n, 12))); 
p.Add(new Chunk("World", new iTextSharp.text.Font(helv_b, 12))); 
//Add the paragraph to the ColumnText 
ct.AddElement(p); 
//Tell the ColumnText to draw itself 
ct.Go(); 
+0

Vielen Dank für Ihre Antwort. Aber ich habe C# für sechs oder sieben Monate gelernt. Also ich verstehe deinen unteren Code nicht. Entschuldigung für meine schlechte Schülerschaft. Wie integriere ich unterhalb des angegebenen Codes in meine PdfTemplate-Methode, wo sich die Frage befindet. Mit freundlichen Grüßen. –