2012-03-28 89 views
0

我正在使用jquery ajax从webservice调用函数。如何使用webservice创建pdf

在这个函数中,我使用itextsharp工具创建一个pdf文件。 我希望我创建的PDF文件在返回时应该在浏览器中打开。

谁能帮助我应该是什么我对于

下面的返回类型是我使用的Web服务代码

public void GeneratePDf(string ID) { 
      string attachment = "attachment; filename=" + ID + ".pdf"; 
      HttpContext.Current.Response.ClearContent(); 
      HttpContext.Current.Response.AddHeader("content-disposition", attachment); 
      HttpContext.Current.Response.ContentType = "application/pdf"; 
      StringWriter stw = new StringWriter(); 
      HtmlTextWriter htextw = new HtmlTextWriter(stw); 
      htextw.AddStyleAttribute("font-size", "12px"); 
      htextw.AddStyleAttribute("color", "Black"); 
      Page pg = new Page(); 
      HtmlForm frm = new HtmlForm(); 
      pg.EnableEventValidation = false; 

      pg.RenderControl(htextw); 
      Document document = new Document(); 

      document = new Document(PageSize.A4, 10, 10, 0, 0); 
      PdfWriter.GetInstance(document, HttpContext.Current.Response.OutputStream); 
      document.Open(); 
      Font verdana = FontFactory.GetFont("Verdana", 10, Font.BOLD, new CMYKColor(75, 68, 67, 90)); 
      PdfPCell blank1 = new PdfPCell(new Phrase("Hello ", verdana)); 
      document.Add(blank1); 
      //document.Add(tablegrid); 
      StringReader str = new StringReader(stw.ToString()); 
      HTMLWorker htmlworker = new HTMLWorker(document); 
      htmlworker.Parse(str); 

      document.Close(); 
      HttpContext.Current.Response.Write(document); 
} 

谁能告诉我什么,我做错了

回答

0

的简短的回答是,“不要为此使用AJAX”,你正在创造不必要的复杂性。相反,只需通过浏览器进行正常的GET/POST请求即可。如果你愿意,你仍然可以使用JavaScript,但重要的部分是你有浏览器发出请求,以便它可以收到响应。

长的答案是...

Web服务器响应请求从Web浏览器和事情发生,就像你希望他们(通常)。 Web浏览器有一个他们知道的内容类型列表,并使用这个列表来有时解析服务器的响应,有时将它交给第三方应用程序。一旦你开始搞乱AJAX和其他类似的技术,你打破了这种模式,并说你想处理处理而不是浏览器。浏览器会代理你的请求和服务器的响应,否则它不会做任何事情,除非你告诉它。这对于类似字符串的事情非常适用,但在处理二进制数据时会变得复杂得多。