开发者

error in generating pdf using iTextSharp

this is my controlle开发者_如何转开发r class:-

 public class PlantHeadController : Controller
    {
        private WOMSEntities2 db = new WOMSEntities2();
        //
        // GET: /PlantHead/
        Document doc = new Document();
        static String[] tt=new String[20];



        public ActionResult Index()
        {
            ViewBag.productCode = new SelectList(db.Product, "ID","code");


            return View();
        }

        public void Convert()
        {



            PdfWriter.GetInstance(doc, new
            FileStream((Request.PhysicalApplicationPath + "\\Receipt3.pdf"),
            FileMode.Create));
            doc.Open();
            PdfPTable table = new PdfPTable(2);
            doc.AddCreationDate();
            PdfPCell cell = new PdfPCell(new Phrase("Receipt"));
            cell.Colspan = 3;
            cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
            table.AddCell(cell);

            table.AddCell("ahym");
            table.AddCell("ram";
            table.AddCell("good");
            table.AddCell("morning");

            String rawGroup = "";
            foreach (String lll in raw)
                rawGroup = rawGroup + lll+"    ";


            table.AddCell("" + rawGroup);




            doc.Add(table);


            doc.Close();
            Response.Redirect("~/Receipt3.pdf");


            }


}

whenever i press submit button to make pdf file then this error window is opened:-

error in generating pdf using iTextSharp

means pdf is not generated successfully. in some cases old pdf is shown. please suggest me what should i do?


Everything looks good for the most part above (except a missing parenthesis on table.AddCell("ram"; which I assume is just a typo and you could also do with some using statements). I don't know why you would get an error but the reason that you're getting the same PDF is almost definitely because of browser caching. You could append a random querystring to the file but I'd recommend instead skipping the file completely and writing the binary stream directly. This way you can control the caching and you don't have to work about browser redirection. The below code should work for you (its targeting 5.1.1.0 depending on your version you may or may not be able to use some of the using statements).

EDIT

I donwgraded my code to not use the IDisposable interfaces found in newer versions, this should work for you now. (I don't have access to a C# compiler so I didn't test it so hopefully this works.)

    using (MemoryStream ms = new MemoryStream())
    {

        Document doc = new Document());

        PdfWriter writer = PdfWriter.GetInstance(doc, ms));

        doc.Open();

        doc.AddCreationDate();

        PdfPTable table = new PdfPTable(2);
        PdfPCell cell = new PdfPCell(new Phrase("Receipt"));
        cell.Colspan = 3;
        cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
        table.AddCell(cell);

        table.AddCell("ahym");
        table.AddCell("ram");
        table.AddCell("good");
        table.AddCell("morning");

        String rawGroup = "";
        foreach (String lll in raw)
        {
            rawGroup = rawGroup + lll + "    ";
        }

        table.AddCell("" + rawGroup);

        doc.Add(table);
        doc.Close();



        Response.Clear();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=Receipt3.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.BinaryWrite(ms.ToArray());
        System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜