OutputStream er ikke tilgængelig, når en brugerdefineret TextWriter bruges

dette er min funktion, der konverterer pdf til png-billede, det er at smide en fejl på
denne linje–> stream.WriteTo(Svar.OutputStream); Er der nogle ting forkert??

protected void CreatePngFromPdf() 
        {

            try
            {

                string PDFLocation = string.Format(@"\\XXXX\{0}\{1}\{2}.pdf", Yr, Loc.Substring(0, 4), Loc.Substring(4, 4));
                Utilities.WebPDF.PDF WebPDF = new DocuvaultMVC.Utilities.WebPDF.PDF();

                WebPDF.Credentials = new NetworkCredential(@"xyz", "xyz");
                byte[] png = WebPDF.StreamPdfPageAsPngResize(PDFLocation,PageNumber, 612, 792);

                MemoryStream ms = new MemoryStream(png);
                MemoryStream stream = new MemoryStream();
                int newWidth = 612;
                int newHeight = 792;
                System.Drawing.Image newImg = System.Drawing.Image.FromStream(ms);

                Bitmap temp = new Bitmap(newWidth, newHeight, newImg.PixelFormat);
                Graphics newImage = Graphics.FromImage(temp);
                newImage.DrawImage(newImg, 0, 0, newWidth, newHeight);
                newImg.Dispose();

                temp.Save(stream, ImageFormat.Png);
                stream.WriteTo(Response.OutputStream);
                temp.Dispose();
                stream.Dispose();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());
            }
        }
Oh my, det kommer til at lække håndtag hvis det er en undtagelse er smidt 🙂 Du bør virkelig overveje at bruge using, når du arbejder med den disponible ressourcer såsom vandløb og GDI+ objekter.
Pinu, kan nogle detaljer om Undtagelse ville hjælpe. Også den kontekst, hvor dette er kaldet. (ASPX eller ASHX, som begivenhed?) Koden i sig selv er dybest set OK, undtagen for kommentaren @Darin gør.
Jeg dint får du , kan du give mig et eksempel på, hvordan jeg kan bruge det med hjælp?
hvad præcis undtagelse er, at du får? Hvad er DocuvaultMVC.Utilities.WebPDF?
Det er en reference til en webservice, at jeg bruger

OriginalForfatteren Pinu | 2010-05-05

2 svar

  1. 46

    Dette er ikke direkte relevante for dit problem, men jeg fik den samme undtagelse, når du gør noget andet, så jeg tænkte jeg ville sætte svaret her for eftertiden…

    Jeg fik denne undtagelse kun, når hjemmesiden var rendering, snarere end når man går til den relevante controller action.

    Meget hoved-skrabe ensues, indtil jeg indser, at jeg har brugt Html.Action (som løber handling og udsender HTML inline) snarere end Url.Action (som genererer en URL).

    +1. Havde samme fejl. Dette rettede det for mig.
    Ja! tak – for alle, der gerne vil holde med @Html – hjælper- du kan også bruge @Html.ActionLink(xxx)

    OriginalForfatteren Roger Lipscombe

  2. 1

    I mit tilfælde årsagen var forkert argument i Controlleren.Fil metode.

    Controller.Fil metode med tredje parameter som null vil gengive billedet i browser-vinduet:

    public ActionResult GenerateImage(...)
    {
        ...
        return File(fileResult.Buffer, fileResult.ContentType, null);
    }

    Controller.Fil metode med tredje parameter som filnavn vil udløse hentning af billedet i browseren:

    public ActionResult GenerateImage(...)
    {
        ...
        return File(fileResult.Buffer, fileResult.ContentType, "image.jpg");
    }

    Controller.Fil metode med tredje parameter som udvidelse vil forårsage fejl: OutputStream er ikke tilgængelig, når en brugerdefineret TextWriter bruges

    public ActionResult GenerateImage(...)
    {
        ...
        return File(fileResult.Buffer, fileResult.ContentType, ".jpg");
    }

    OriginalForfatteren Tomas Kubes

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *