2012-03-28 23 views
0

Ich benutze jquery ajax, um funktion von webservice aufzurufen.Wie erstelle ich ein pdf mit webservice

In dieser Funktion erstelle ich eine PDF-Datei mit iutxtsharp Werkzeug. Ich möchte, dass meine PDF-Datei erstellt im Browser bei der Rückkehr geöffnet werden soll.

kann mir jemand helfen, was mein Rückgabetyp für den unterhalb

sein soll, ist der Code, den ich in webservice bin mit

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

Kann mir jemand sagen, was ich falsch

Antwort

0

Das tue Die kurze Antwort lautet: "Benutze AJAX nicht dafür", du erschaffst unnötige Komplikationen. Machen Sie stattdessen eine normale GET/POST-Anfrage über Ihren Browser. Sie können immer noch JavaScript verwenden, wenn Sie möchten, aber der wichtige Teil ist, dass Sie den Browser veranlassen, die Anfrage zu stellen, damit er die Antwort erhalten kann.

Die lange Antwort ist ...

Web-Server auf Anfragen von Webbrowsern reagieren und Dinge passieren, wie Sie sie zu (in der Regel) erwarten. Webbrowser verfügen über eine Liste der ihnen bekannten Inhaltstypen und verwenden diese Liste, um die Antwort des Servers zu analysieren und sie manchmal an eine Anwendung eines Drittanbieters zu übergeben. Sobald Sie anfangen, mit AJAX und anderen ähnlichen Technologien herumzuspielen, brechen Sie dieses Modell und sagen, dass Sie die Verarbeitung anstatt des Browsers handhaben möchten. Der Browser wird Ihre Anfrage und die Antwort des Servers vermitteln, aber sonst wird es nichts tun, wenn Sie es nicht sagen. Dies funktioniert hervorragend für String-ähnliche Dinge, wird aber viel komplizierter, wenn Sie mit binären Daten umgehen.

Verwandte Themen