Создать PDF без скачивания - PullRequest
0 голосов
/ 14 мая 2019

В моем контроллере я хочу создать PDF, сохранить его и знать только, если есть ошибки, я не хочу получать файл для загрузки

    public ActionResult CreatePdf(string IDUser, int IDCourse)
    {
                    try
                    {
                        string path = Server.MapPath("~/Public/Pdf/");
                        var fileName = Guid.NewGuid().ToString();
                        Document pdfDoc = new Document(PageSize.A4, 25, 25, 25, 15);
                        pdfDoc.SetPageSize(PageSize.A4.Rotate());
var pdfWriter =  PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

                        var fileStream = new FileStream(Path.Combine(path, fileName), FileMode.Create);
                        pdfWriter = PdfWriter.GetInstance(pdfDoc, fileStream);
                        pdfDoc.Open();
                        ...

                        pdfWriter.CloseStream = false;
                        pdfDoc.Close();
                        pdfWriter.Close();
                        fileStream.Close();
                        db.SaveChanges();
                        //Response.Buffer = true;
                        //Response.ContentType = "application/pdf";
                        //Response.AddHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");
                //Response.Cache.SetCacheability(HttpCacheability.NoCache);
                        //Response.Write(pdfDoc);
                        //Response.End();
                        //return File(Response.OutputStream, "application/pdf", fileName.ToString()); // if I want download
                        return Content("ok");
                    catch (Exception ex)
                    {
                        return Content("error");
                    }
}

Вначале я загрузил pdf, теперь я вызываю эту процедуру в цикле, чтобы создать больше pdf, поэтому я просто хочу знать, есть ли ошибки при создании.

С точки зрения я вызываю в AJAX (JQuery) этот контроллер

   public ActionResult Create(string listIDUser, int IDCourse)
    {
        string msg = string.Empty;
        try
        {
            var IDUser = listIDUser.Split(',');
            foreach (var item in IDUser)
            {
                var pdf= CreatePdf(item, IDCourse);
                if (pdf!= null)
                {
                    ...
                }
                else
                {
                    return new JsonResult() { Data = new { result = "err", msg = "..." + item } };
                }
            }
            return new JsonResult() { Data = new { result = "ok", msg = "Perfect!" } };
        }
        catch (Exception ex)
        {
            return new JsonResult() { Data = new { result = "err", msg = ex.Message } };
        }
    }

, который делает циклы и вызывает контроллер CreatePdf, но в браузере с firebug возвращается pdf-файл, а не ответ в json, как я ожидаю! Спасибо

...