2013-03-25 2 views
0

이미 itextsharp를 사용하여 pdf를 생성하고 로컬 서버에 저장합니다. 나는이 버튼을 다른 버튼 클릭으로 다운로드하고 싶다. properly.Downloading를 작동하고 PDF를 생성하기위한 코드가 발생하지만 일부 오류를 열려고 ocuured. "그 중 하나가 아닌 지원 파일 형식, 또는 파일 ITextSharp를 사용하면 PDF가 성공적으로 생성되지만 다운로드 된 PDF를 열지 못합니다.

protected void createpdf_Click(object sender, EventArgs e) 
{ 
    fs = new FileStream(Server.MapPath("pdf") + "\\" + "First PDF document.pdf",  FileMode.Create); 

    document = new Document(PageSize.A4, 25, 25, 30, 30); 

    writer = PdfWriter.GetInstance(document, fs); 


    document.Open(); 

    document.Add(new Paragraph("Pdf Geneartion!")); 


    document.Close(); 

    writer.Close(); 

    fs.Close(); 
} 

코드 다운로드 PDF에 대한

손상 되었기 때문에

protected void download_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     fs = new FileStream(Server.MapPath("pdf") + "\\" + "FirstPDFdocument1.pdf", FileMode.Create); 

     document = new Document(PageSize.A4, 25, 25, 30, 30); 

     writer = PdfWriter.GetInstance(document, fs); 



     using (MemoryStream ms = new MemoryStream()) 
     { 
      document.Open(); 
      Response.Clear(); 

      Response.ContentType = "pdf/application"; 
      Response.AddHeader("content-disposition", "attachment;filename=PDFdocument1.pdf"); 

      Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
     } 
     writer.Close(); 
     fs.Close(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.ToString()); 
    } 

} 
+1

'ms'에 아무 것도 쓰지 않는 것처럼 보입니다. 당신은 다른 끝에서 0 바이트 파일을 얻고 있습니까? –

답변

0

다 더 많거나 적은을 정정 ContentType 제외 보이는 그것은 application/pdf 대신 pdf/application해야한다 또한, @lc가 지적한 바와 같이, MemoryStream가 기록되고처럼 보이지 않는 대신이 같은 것을 시도해보십시오...

using (MemoryStream ms = new MemoryStream()) 
     { 
      PdfWriter.GetInstance(document, ms); // added 
      document.Open(); 
      Response.Clear(); 

      Response.ContentType = "application/pdf"; // changed 
      Response.AddHeader("content-disposition", "attachment;filename=PDFdocument1.pdf"); 

      Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
     } 
관련 문제