2015-12-04 37 views
0

每當我使用iTextSharp.text.html.HtmlUtilities.DecodeColor時,我都會收到驗證警告,說明HtmlUtilities is obsolete。但是,通過https://github.com/itext/itextsharp的代碼搜索,我發現他們仍然在很多地方使用它。替換過時的iTextSharp HtmlUtilities?

所以,我假設這個班級沒有替代品。是否有計劃讓任何人知道或有任何其他信息我應該知道?在the code

+0

靜態方法通常可以安全地繼續使用,但如果您擔心未來的兼容性問題,則可以將這些方法帶入代碼。我相信'過時'的用法是要和Java版本棄用整個'itextpdf.text.html'軟件包相提並論,我認爲這個軟件包可以讓用戶遠離HTMLWorker。該具體方法實際上可以通過[Color.FromName](https://msdn.microsoft.com/en-us/library/system.drawing.color.fromname(v = vs.110).aspx )。 –

+0

謝謝@ChrisHaas。不幸的是,'System.Drawing.Color.FromName'只適用於指定的顏色(比如''SlateBlue'''),而'iTextSharp.text.html.HtmlUtilities.DecodeColor'解碼兩種指定的顏色以及html樣式'「#AARRGGBB」數字。 –

回答

1

尋找iTextSharp.text.html.HtmlUtilities.DecodeColor

public static BaseColor DecodeColor(String s) { 
    if (s == null) 
     return null; 
    s = s.ToLowerInvariant().Trim(); 
    try { 
     return WebColors.GetRGBColor(s); 
    } 
    catch { 
     return null; 
    } 
} 

你可以看到,它基本上是換到WebColors.GetRGBColor一個電話,which is not標記爲過時。

因此,一個不錯的選擇是直接撥打WebColors.GetRGBColor以避免警告。或者,你可以用你來DecodeColor中的呼叫編譯聲明:

private static BaseColor GetBaseColor(string value) 
{ 
#pragma warning disable 612, 618 
    return iTextSharp.text.html.HtmlUtilities.DecodeColor(value); 
#pragma warning restore 612, 618 
} 

此外,WebColors.GetRGBColor解碼命名的顏色以及HTML格式的顏色值(例如#AARRGGBB)。如果您只需要指定顏色,您可以按照評論中指出的那樣使用System.Drawing.Color.FromName