hncl
hncl

Reputation: 2295

HTMLWorker itextSharp image src

I am trying to use HTMLWorker using the following:

  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;

        }

It converts:

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

To:

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

Any suggestion.

Upvotes: 0

Views: 2434

Answers (1)

Bruno Lowagie
Bruno Lowagie

Reputation: 77528

Please compare the following two examples:

If you use the first example to render an HTML file with images, you probably won't succeed. The second example introduces an ImageProvider implementation.

In the getImage() method of the ImageProvider interface, you get information about the path to an image. It is up to you to interpret this path. For instance: if the path is /Content/UserFiles/635380078478327671/Images/test.png, you can create an Image object by loading the bytes from that path, possibly after applying some minor changes to the path.

If you don't create an ImageProvider class, iText will do a single guess to find the path. In your case, that guess is wrong.

You can find the C# equivalent of the examples here: http://tinyurl.com/itextsharpIIA2C09

Upvotes: 1

Related Questions