2012-06-27 47 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,您必須在Response中發送文件。 – shizik

+0

你可以給我一些示例代碼。 – Amulraj

+0

我在答案中給了你一個示例代碼。 – shizik

回答

0

在Web應用程序中,您需要在響應流中返回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

相關問題