2012-06-27 3 views
2

iTextSharp를 사용하여 PDF 파일을 만들면 시스템 바탕 화면에 저장되고 내 로컬 시스템에서 성공적으로 열립니다. 이제 동일한 코드를 서버에 업로드하면 오류가 발생하지 않고 PDF 파일이 만들어지지 않습니다. 이것은 PDF를 만들고 여는 내 일부 코드입니다.itextsharp pdf 만들기가 서버가 아닌 로컬에서 실행됩니다.

PdfWriter.GetInstance(doc, new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Out.pdf", FileMode.Create)); 

doc.Open(); 
DataView DView = (DataView)Session["data_value"]; 
dtData = DView.ToTable(); 
dr = dtData.Select("fldemp_no='" + Session["EmployeeID"].ToString() + "'"); 
doc.NewPage(); 
iTextSharp.text.Image ObjImg = iTextSharp.text.Image.GetInstance(Server.MapPath("~/Bin/Head.png")); 
ObjImg.Alignment = iTextSharp.text.Image.ALIGN_CENTER; 
ObjImg.ScaleToFit(220f, 150f); 
ObjImg.SpacingBefore = 13f; 
ObjImg.SpacingAfter = 1f; 
doc.Add(ObjImg); 

maintable = new PdfPTable(1); 
cell = new PdfPCell(new Phrase("Pay Slip for the month of " + dr[0]["fldmonth"].ToString(), fnt1)); 
cell.HorizontalAlignment = Element.ALIGN_CENTER; 
cell.Border = 0; 
maintable.AddCell(cell); 
doc.Add(maintable); 

maintable = new PdfPTable(2); 
empdetright = new PdfPTable(2); 

empdetleft = new PdfPTable(2); 
cell = new PdfPCell(new Phrase("Emp No", fnt1)); 
cell.Border = 0; 
empdetright.AddCell(cell); 

cell = new PdfPCell(new Phrase(": " + dr[0]["fldemp_no"].ToString(), fnt1)); 
cell.Border = 0; 
empdetright.AddCell(cell); 

cell = new PdfPCell(new Phrase("Emp Name", fnt1)); 
cell.Border = 0; 
empdetright.AddCell(cell); 
cell = new PdfPCell(new Phrase(": " + dr[0]["fldempname"].ToString(), fnt1)); 
cell.Border = 0; 
empdetright.AddCell(cell); 

doc.Close(); 
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/out.pdf"); 
+0

Process.Start를 사용하여 서버 측에서 PDF를 열 수 없으면 응답에서 파일을 보내야합니다. – shizik

+0

몇 가지 샘플 코드를 제공 할 수 있습니까? – Amulraj

+0

답변에서 샘플 코드를 제공했습니다. – shizik

답변

0

웹 응용 프로그램에서 PDF 문서를 응답 스트림으로 반환해야합니다. 다음은 간단한 예입니다.

var response = HttpContext.Current.Response; 
response.Clear(); 
response.ContentType = "application/pdf"; 

MemoryStream mem = new MemoryStream(); // PDF data will be written here 
PdfWriter writer = PdfWriter.GetInstance(doc, mem); // tie a PdfWriter instance to the stream 

doc.Open(); 

// ... Doing the pdf generation 

doc.Close(); 

// write the document data to response stream 
writer.Flush(); 
response.OutputStream.Write(mem.GetBuffer(), 0, mem.GetBuffer().Length); 
response.OutputStream.Flush(); 
response.OutputStream.Close(); 
response.End(); 
+0

MemoryStream에서 문서 데이터를 어떻게 가져 옵니까? – user1509

관련 문제