2012-10-28 23 views
5

मैं इस तरह एक iTextSharp पाद लेख टेम्पलेट विधि है:कैसे मैं iTextSharp स्ट्रिंग में HTML टैग का उपयोग करते हैं

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() इस तरह स्ट्रिंग हो रही है:

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

और मैं एक अन्य है विधि एचटीएमएल के लिए तार बनाता है। विधि है:

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

समस्या: मैं ऊपर कोड में CreateSimpleHtmlParagraph विधि का उपयोग करने का प्रबंधन नहीं किया। footer.ShowTextAligned(al, footerOneLine[0], widthoftext, v, 0); विधि का डेटा प्रकार footer.ShowTextAligned(int, string, float, float, float); क्या आप मेरी मदद कर सकते हैं मैं उपरोक्त कोड में CreateSimpleHtmlParagraph विधि का उपयोग कैसे कर सकता हूं? दयालु संबंध है।

+0

'v' और '0'' 'float' काम कास्टिंग करता है? (आईई। 'फूटर। शोटेक्स्टअलाइन (अल, पाद लेखऑनलाइन [0], चौड़ाईफ्लिक्स्ट, वी फ्लोट के रूप में, 0 फ्लोट के रूप में); ') – millimoose

+0

मैं ShowTextAligned विधि की सामग्री नहीं देख सकता। क्योंकि यह itextsharp.ddl में है। अंतर क्या है? आप कहां कहां कोई समस्या नहीं है। ShowTextAligned विधि को दूसरे तत्व में स्ट्रिंग की आवश्यकता होती है। लेकिन CreateSimpleHtml पैराग्राफ विधि अनुच्छेद देता है। मैंने इस कनवर्टिंग का प्रबंधन नहीं किया। –

+0

क्षमा करें, मुझे लगता है कि मैं आपके प्रश्न को सही ढंग से समझ नहीं पाया। – millimoose

उत्तर

0

मैं बिल्कुल पता नहीं कैसे आप PdfTemplate उपयोग कर रहे हैं, लेकिन आप इस तरह के एक Paragraph और ChunkShowText() जैसे कच्चे पीडीएफ आदेशों के साथ के रूप में iTextSharp के पाठ कपोल-कल्पना मिश्रण कर रहे हैं। अंतःक्रियाएं अंततः कच्चे आदेशों का उपयोग करती हैं लेकिन आसानी से आपको लाइन ब्रेक और वर्तमान निर्देशांक जैसे सोचने में मदद करती हैं जिन्हें आपको आमतौर पर मैन्युअल रूप से गणना करना होता है।

अच्छी खबर यह है कि ColumnText नामक एक अमूर्तता है जो PdfWriter.PdfContentByte ऑब्जेक्ट के साथ सीधे काम करती है जब तक कि आप यह स्वीकार करने के इच्छुक हैं कि आपके पास टेक्स्ट खींचने के लिए एक निश्चित आयताकार है।

//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

आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। लेकिन मैंने छह या सात महीने के लिए सी # सीखा है। तो मैं आपका नीचे कोड नहीं समझता। मेरी बुरी छात्रवृत्ति के लिए खेद है। मैं अपने पीडीएफ टेम्पलेट विधि पर दिए गए कोड को नीचे कैसे एकीकृत करूं जहां प्रश्न में स्थान। सधन्यवाद। –