После генерации pdf с использованием Itext Sharp при нажатии кнопки, другое нажатие кнопки на той же странице не сработает - PullRequest
1 голос
/ 19 ноября 2011

Я использую Itext Sharp для создания PDF-файлов для существующего заказа на моем сайте одним нажатием кнопки.Он был добавлен в качестве веб-части на сайте Sharepoint.

На этой же странице есть еще одна веб-часть со множеством серверных элементов управления.Но когда я нажимаю на любую из кнопок, событие нажатия кнопки не запускается.Только когда я обновляю страницу, событие запускается.

Я не могу одновременно создать PDF-файл и сразу же нажать другую кнопку без обновления страницы.Я не понимаю, что я делаю не так.

Ниже мой код.

  protected void PdfGenerate_OnClick(object sender, EventArgs e)
  {
      Font Arial = FontFactory.GetFont("Arial", 12, BaseColor.BLACK);
      string imagename = "AAlogo.gif";
      string imagepath = Page.Server.MapPath("/_layouts/Images/ImagesFolder/Image1.gif" ) ;

      using (var ms = new MemoryStream())
      {
          using (var document = new Document(PageSize.A4,50,50,15,15))
          {
              PdfWriter.GetInstance(document, ms); 
              document.Open();
              Paragraph img = new Paragraph();
              Image aaImg = iTextSharp.text.Image.GetInstance(imagepath);
              img.Add(aaImg);
              img.IndentationRight = 5f;
              //code to add all the elements here  
              PdfPTable table = new PdfPTable(3);
              PdfPCell col1 = new PdfPCell(new Phrase("oRDER Number"));
              table.AddCell(col1);
              //  code for the table...
                  document.Add(table);
              }
             document.Close();
          }
          Response.Clear();
          Response.ContentType = "application/octet-stream";
          Response.AddHeader("content-disposition", "attachment;filename= Order Number" + .pdf");
          Response.Buffer = true; 
          Response.Clear();
          var bytes = ms.ToArray();
          Response.OutputStream.Write(bytes, 0, bytes.Length);
          Response.OutputStream.Flush();
      } 

  }

1 Ответ

2 голосов
/ 19 ноября 2011

Когда вы очищаете и очищаете ответ, вы прерываете / прерываете жизненный цикл страницы asp.net.Этот раздел загрузки лучше поместить в другой файл (Page_Load отдельного файла) и вызывать его с текущей страницы.больше информации: + и +

...