2014-06-11 90 views
0

我試圖使用HTMLWorker使用下列內容:HTMLWorker iTextSharp的圖片src

public static string toWorks(string s) 
     { 

      string fontpath = System.Web.HttpContext.Current.Server.MapPath("~/Content/"); 
      BaseFont bf = BaseFont.CreateFont(fontpath + "ARIALUNI.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      var f = new Font(bf, 10, Font.NORMAL); 

      //  var p = new Paragraph { Alignment = Element.ALIGN_LEFT, Font = f }; 
      var styles = new StyleSheet(); 
      styles.LoadTagStyle(HtmlTags.SPAN, HtmlTags.FONTSIZE, "10"); 
      styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H); 

      using (var sr = new StringReader(s)) 
      { 
       List<IElement> list = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles); 
       // var elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles); 
       foreach (var e in list) 
       { 
        list.Add(e); 
       } 
       return list.ToString(); 
      } 
      return null; 

     } 

它轉換:

src="/Content/UserFiles/635380078478327671/Images/test.png 

要:

C:\Content\UserFiles\635380078478327671\Images\test.png 

任何建議。

回答

1

請比較下面兩個例子:

如果您使用的第一個例子來渲染圖像的HTML文件,你可能不會成功。第二個示例介紹ImageProvider實現。

ImageProvider接口的getImage()方法中,您將獲得有關圖像路徑的信息。這是由你來解釋這條道路。例如:如果路徑是/Content/UserFiles/635380078478327671/Images/test.png,則可以通過加載該路徑中的字節來創建一個Image對象,可能在對該路徑應用一些較小的更改後。

如果您未創建ImageProvider類,則iText將執行一次猜測來查找路徑。在你的情況下,這個猜測是錯誤的。

你可以在這裏找到這個例子的C#等價物:http://tinyurl.com/itextsharpIIA2C09

+0

再次感謝你布魯諾。 – hncl

+0

布魯諾,我檢查HtmlMovies2無法找到工具類(Utility.ResourcePosters)的參考,我可以在哪裏找到它。謝謝 – hncl

+0

這很容易:http://sourceforge.net/p/itextsharp/code/HEAD/tree/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Utility.cs –