2012-03-28 20 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や他の同様のテクノロジーを使いこなすと、このモデルが破られ、ブラウザではなく処理を処理したいと言っています。ブラウザはリクエストとサーバーの応答をブローカしますが、それ以外の場合は指示がない限り何もしません。これは文字列のようなものにはうってつけですが、バイナリデータを処理するとはるかに複雑になります。