Avatar billede MartinLauritsen Nybegynder
22. januar 2016 - 08:56 Der er 6 kommentarer

Problemer med min Image handler, den siger stien fra mit billede ikke er en ylid virtuel sti

den siger stien fra mit billede ikke er en gyldig virtuel sti.

Har prøvet at sætte den til Local host.

Jeg bruger Handler til at indsætte, billede til PDF med Itext og C# via af en Ck editor, og den kan godt finde billedet hvis jeg jeg sætter den statisk men når jeg kører den dynamisk, får jeg denne fejl.

System.Web.HttpException: 'http:/localhost:/Media/South Africa/ZA-wp5.jpg' er ikke en gyldig virtuel sti


Her er min Handler
public class ImageHander : IImageProvider
    {
        public string BaseUri;
        public iTextSharp.text.Image GetImage(string src,
            // iTextSharp 5.0.6 or higher
            IDictionary<string, string> h,
            // iTextSharp 5.0.0 to 5.0.5
            // Dictionary<string, string> h,
            ChainedProperties cprops,
            IDocListener doc)
        {
           
            return iTextSharp.text.Image.GetInstance(
              // file-system pathMedia/Australia/
              HttpContext.Current.Server.MapPath("http://localhost:/" + src)
             
           
            );
        }
    }

Og min funktion hvor jeg hiver billedet ind
var interfaceProps = new Dictionary<string, Object>();
     
        var ih = new ImageHander();
       
        interfaceProps.Add(HTMLWorker.IMG_PROVIDER, ih);
        foreach (IElement element in HTMLWorker.ParseToList(
            new StringReader(HTMLCode.ToString()), null, interfaceProps))
        {
            doc.Add(element);
        }
Avatar billede jakobdo Ekspert
22. januar 2016 - 09:23 #1
Du har jo:
HttpContext.Current.Server.MapPath("http://localhost:/" + src)
Skal det ikke i første omgang være:

HttpContext.Current.Server.MapPath("http://localhost/" + src)
Altså uden : efter localhost ?

Og måske du skal lave:

HttpContext.Current.Server.MapPath("http:////localhost:/" + src)
Avatar billede MartinLauritsen Nybegynder
22. januar 2016 - 09:41 #2
det virkede ikke, og prøvede også at sætte port nr på. Får fejlen

er ikke en gyldig virtuel sti.
Avatar billede MartinLauritsen Nybegynder
22. januar 2016 - 11:18 #3
Har fået det løst ;)
Avatar billede jakobdo Ekspert
22. januar 2016 - 14:16 #4
Hvad var fejlen/løsningen ?
Avatar billede MartinLauritsen Nybegynder
22. januar 2016 - 21:18 #5
public class ImageThing : IImageProvider
    {
     
        private Document MainDoc;
       
        public ImageThing(Document doc)
        {
            this.MainDoc = doc;
        }
        Image IImageProvider.GetImage(string src, IDictionary<string, string> attrs, ChainedProperties chain, IDocListener doc)
        {


            string path = HttpContext.Current.Server.MapPath("/");

         
            src = path + src;
         
            Image img = Image.GetInstance(src);
           
            if (img == null) return null;
           
            float usableW = this.MainDoc.PageSize.Width - (this.MainDoc.LeftMargin + this.MainDoc.RightMargin);
            float usableH = this.MainDoc.PageSize.Height - (this.MainDoc.TopMargin + this.MainDoc.BottomMargin);
           
            if (img.Width > usableW || img.Height > usableH)
            {
             
                img.ScaleToFit(200, 100);
               
            }

            return img;
        }
    }
Avatar billede MartinLauritsen Nybegynder
22. januar 2016 - 21:19 #6
så fandt aldrig ud af hvorfor, men tror det havde noget med base Uri at gøre, den blev ved med at forlange en Virtuel path, så fandt hjælp på Google og lavede Class om. Og det virkede i først hug ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester