2011-02-08 15 views
5

द्वारा Persian html फ़ाइल से पीडीएफ बनाएँ I html को पीडीएफ में कनवर्ट करने के लिए ITextSharp लाइब्रेरी का उपयोग करें। मेरे उपयोगकर्ता अपनी/एचटीएमएल फाइलों में फारसी भाषा वाक्य का उपयोग करते हैं, इसलिए यह लाइब्रेरी फारसी शब्द को परिवर्तित नहीं कर सकती है।ITextSharp

इस संकल्प और छोड़ दिया समस्या का अधिकार के लिए मैं bellow कोड का उपयोग करें:

 Document document = new Document(PageSize.A4, 80, 50, 30, 65); 
     PdfWriter.GetInstance(document, new FileStream(strPDFpath, FileMode.Create)); 
     document.Open(); 

     ArrayList objects; 
     document.NewPage(); 

     var stream = new StreamReader(strHTMLpath, Encoding.Default).ReadToEnd(); 
     objects = iTextSharp.text.html.simpleparser. 
     HTMLWorker.ParseToList(new StreamReader(strHTMLpath, Encoding.UTF8), styles);    

     BaseFont bf = BaseFont.CreateFont("c:\\windows\\fonts\\Tahoma.ttf", 
             BaseFont.IDENTITY_H, true); 
     for (int k = 0; k < objects.Count; k++) 
     { 
      PdfPTable table = new PdfPTable(1); 
      table.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 

      var els = (IElement)objects[k]; 
      foreach (Chunk el in els.Chunks) 
      { 
       #region set persian font 
       iTextSharp.text.Font f2 = new iTextSharp.text.Font(bf, el.Font.Size, 
               el.Font.Style, el.Font.Color); 
       el.Font = f2; 
       #endregion set persian font 

       #region Set right to left for persian words 
       PdfPCell cell = new PdfPCell(new Phrase(10, el.Content, el.Font)); 
       cell.BorderWidth = 0; 
       table.AddCell(cell); 
       #endregion Set right to left for persian words 
      } 
      //document.Add((IElement)objects[k]);     
      document.Add(table); 
     } 

     document.Close(); 
     Response.Write(strPDFpath); 
     Response.ClearContent(); 
     Response.ClearHeaders(); 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + strPDFpath); 
     Response.ContentType = "application/octet-stream"; 
     Response.WriteFile(strPDFpath); 
     Response.Flush(); 
     Response.Close(); 
     if (File.Exists(strPDFpath)) 
     { 
      File.Delete(strPDFpath); 
     } 

छोड़ दिया और फारसी शब्द कन्वर्ट करने के लिए मेरे सही हल किया गया था, लेकिन यह एक और समस्या है।

मेरा एल्गोरिदम HTML फ़ाइल में उपयोग किए जाने वाले तालिका टैग की सामग्री को पार्स और कन्वर्ट नहीं कर सकता है।

अब सवाल यह है कि: एचटीएमएल फ़ाइल का विश्लेषण कैसे करें जिसमें टेबल टैग, div और अनुच्छेद टैग पर्सियन भाषा वाक्य के साथ है, और इसे पीडीएफ में परिवर्तित करें?

+0

"मेरे एल्गोरिथ्म पार्स और टेबल टैग html फ़ाइल में उपयोग करता है की सामग्री को परिवर्तित नहीं कर सकते । " - मतलब है कि वस्तुओं में मूल HTML दस्तावेज़ की सारणी नहीं है या क्या? – Roman

+1

हैलो किआ _Salam aziz;) _ इस लिंक को देखें http://hasheminezhad.com/itextsharp – Shahin

उत्तर

1

इस http://code.google.com/p/wkhtmltopdf/

कि एप्लिकेशन का उपयोग करके एक html पृष्ठ में पढ़ता है और एक PDF के रूप में यह बचाता है। खोल स्क्रिप्ट का उपयोग करके उस चीज़ को सी # में चलाएं।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मैं इसे देखता हूं, लेकिन मैं iTextSharp लाइब्रेरी का उपयोग करना चाहता हूं। क्या आपके पास iTextSharp लाइब्रेरी का उपयोग करके समाधान है? –

+0

लिंक टूटा हुआ है .. = ( – oCcSking

3

iTextSharp भी तालिका टैग को पार्स करने में सक्षम है। लेकिन इसके RTL गुण निर्धारित नहीं करता है और आप इसे अपने आप को ठीक करने के लिए की जरूरत है:

  foreach (var htmlElement in parsedHtmlElements) 
      { 
       fixRunDirection(htmlElement); 
       pdfCell.AddElement(htmlElement); 
      } 

... 

     private static void fixRunDirection(IElement htmlElement) 
     { 
      if (!(htmlElement is PdfPTable)) return; 

      var table = (PdfPTable)htmlElement; 
      table.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 

      foreach (var row in table.Rows) 
      { 
       foreach (var cell in row.GetCells()) 
       { 
        cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 
        foreach (var element in cell.CompositeElements) 
        { 
         fixRunDirection(element); 
        } 
       } 
      } 
     } 

और जानकारी: (^)

+0

यहां अधिक जानकारी: http://www.dotnettips.info/post/1464 – VahidN