如何使用webservice创建pdf

时间:2012-03-28 06:40:31

标签: asp.net web-services c#-4.0 jquery itextsharp

我正在使用jquery ajax从webservice调用函数。

在该功能中,我使用itextsharp工具创建pdf文件。 我希望我的pdf文件在返回时应该在浏览器中打开。

任何人都可以帮助我应该是我的返回类型

以下是我在webservice中使用的代码

 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);
}

任何人都可以告诉我我做错了什么

1 个答案:

答案 0 :(得分:0)

简短的回答是,"不要为此使用AJAX,你正在创造不必要的复杂功能。相反,只需通过浏览器发出正常的GET / POST请求即可。如果需要,您仍然可以使用JavaScript,但重要的是您让浏览器发出请求以便它可以接收响应。

答案很长......

Web服务器响应来自Web浏览器的请求,事情就像您期望的那样(通常)发生。 Web浏览器具有他们知道的内容类型列表,并且使用此列表有时会解析服务器的响应,有时会将其移交给第三方应用程序。一旦你开始搞乱AJAX和其他类似的技术,你就打破了这个模型并且说你想要处理处理而不是浏览器。浏览器将代理您的请求和服务器的响应,但除非您告知,否则它将无法执行任何操作。这适用于类似字符串的事情,但在处理二进制数据时会变得更加复杂。