2012-06-27 46 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

相关问题