2013-08-23 2 views
0

iTextSharp를 사용하여 PDF 파일을 만듭니다 (C# 사용). 파일이 잘 작성되었습니다. 그러나 폴더에 저장됩니다. 링크 버튼 클릭에 대한 응답으로 파일이 생성되고 폴더에 파일을 저장하는 대신 열기/저장 대화 상자를 표시하려고합니다. 다음을 사용합니다.iTextSharp : PDF 파일을 만들 때 "열기/저장"대화 상자 표시

using(MemoryStream ms = new MemoryStream()) 
{ 
    Document doc1 = new Document(); 
    PdfWriter pdfw = PdfWriter.GetInstance(doc1, ms); 
    doc1.open(); 
    string sPath = Server.MapPath("PDF/"); 
    string sFileName = "Something.PDF"; 

    // create the PDF content 

    doc1.Close(); 
    byte[] content = ms.ToArray(); 
    using (FileStream fs = FileStream.Create(sPath + sFileName)) 
    { 
     fs.Write(content, 0, (int)content.Length); 
    } 
} 

내가 잘못 했습니까? 파일을 생성하고 "blahblah/PDF"폴더에 저장하지만 열기/저장 대화 상자는 표시되지 않습니다.

+0

이 ASP.Net에 태그를 지정하지 않았으므로 데스크톱 응용 프로그램에서 작업하고 있습니까? –

+0

이것은 웹 응용 프로그램입니다 (.Net 3.5, C# 2.0) – NoBullMan

답변

1

이미 파일이있는 경우 Response.TransmitFile 메서드를 사용하여 사용자 브라우저에서 플러시하십시오.

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=buylist.pdf"); 
Response.TransmitFile(Server.MapPath("~/myfile.pdf")); 
+0

Thanks Vahid. 파일을 폴더에 먼저 저장하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 데이터를 생성하기 위해 다른 기준을 사용하여 100 명의 사용자가 PDF 파일을 만들 때 링크를 클릭하면 어떻게 될지 궁금합니다. – NoBullMan

+1

'Response.TransmitFile()'대신에'Response.BinaryWrite()'를 사용하고 바이트 배열을 직접 전달할 수 있습니다. –

+0

우수! 그것으로 해결되었습니다. 먼저 폴더에 파일을 쓸 필요없이 열기/저장을 표시합니다. Vahid의 제안은 올바른 방향으로 나를 가리켰다. – NoBullMan