2014-07-25 3 views
0

J'essaye d'écrire une application qui lancera une série de rapports Web que j'ai construits dans ASP.NET. J'ai donc une application web où les pages sont en ligne, mais je ne veux pas vraiment utiliser le site pour voir les pages, je veux créer des fichiers PDF que je peux livrer à mes clients.Erreurs de compilateur ASP.NET avec iTextSharp xmlworkerhelper

L'application que j'essaye d'écrire est une application de console, écrite dans Visual Studio 2010 en C# et en utilisant iTextSharp v5.5.2 et .NET 4.5. C'est actuellement juste un cadre car je ne suis pas encore arrivé à la partie "tirer sur les fichiers PDF". J'accède à une page sur le Web et j'essaie de la sauvegarder au format PDF, mais je ne trouve aucune information sur les erreurs de compilation que je reçois. Je les ai suivantes à l'aide des directives dans l'application:

using iTextSharp; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using iTextSharp.text.html; 
using iTextSharp.text.xml; 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Text; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Xml; 
using iTextSharp.text.io; 
using iTextSharp.text.xml.simpleparser; 
using iTextSharp.text.html.simpleparser; 

namespace ConsoleApplication1 
{ 
    public partial class BuildReports : System.Web.UI.Page 
    { 
     static void Main(string[] args) 
     { 
      WebRequest wReq = WebRequest.Create("http://www.somesite.com/"); 
      WebResponse wRsp = null; 

      try 
      { 
       wRsp = wReq.GetResponse(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("{0} exception caught.", e); 
      } 

      Console.WriteLine(((HttpWebResponse)wRsp).StatusDescription); 
      Stream sRsp = wRsp.GetResponseStream(); 
      StreamReader sRdr = new StreamReader(sRsp); 
      string sHtml = string.Empty; 
      sHtml = sRdr.ReadToEnd(); 
      Console.WriteLine(sHtml); 
      StringReader sr = new StringReader(sHtml); 
      Document doc = new Document(); 

// Les lignes suivantes indiquent que je besoin d'une directive d'utilisation ou une référence sur les // XmlWorkerHelper et déclarations de XmlWorker. Quelles références sont nécessaires ??

  XmlWorkerHelper.GetInstance(doc, new FileStream("test.pdf", FileMode.Create)); 
      XmlWorker obj = new XmlWorker(doc); 

// ----------------------------------------- ----------------------------------------------

  doc.Open(); 
      obj..Parse(sr); 
      doc.Close(); 
      sRdr.Close(); 
      sRsp.Close(); 
     } 
    } 
    public class CustomHTTPModule : IHttpModule 
    { 
     public CustomHTTPModule() 
     { 
      // Class constructor. 
     } 

     // Classes that inherit IHttpModule 
     // must implement the Init and Dispose methods. 
     public void Init(HttpApplication app) 
     { 

      app.AcquireRequestState += new EventHandler(app_AcquireRequestState); 
      app.PostAcquireRequestState += new EventHandler(app_PostAcquireRequestState); 
     } 

     public void Dispose() 
     { 
      // Add code to clean up the 
      // instance variables of a module. 
     } 

     // Define a custom AcquireRequestState event handler. 
     public void app_AcquireRequestState(object o, EventArgs ea) 
     { 
      HttpApplication httpApp = (HttpApplication)o; 
      HttpContext ctx = HttpContext.Current; 
      ctx.Response.Write(" Executing AcquireRequestState "); 
     } 

     // Define a custom PostAcquireRequestState event handler. 
     public void app_PostAcquireRequestState(object o, EventArgs ea) 
     { 
      HttpApplication httpApp = (HttpApplication)o; 
      HttpContext ctx = HttpContext.Current; 
      ctx.Response.Write(" Executing PostAcquireRequestState "); 
     } 

    } 
} 

Mes questions:
1. De quelle référence ou instruction ai-je besoin pour résoudre les erreurs de compilation sur les déclarations XmlWorkerHelper et XmlWorker?
2. Y at-il autre chose qui me manque et qui provoque les erreurs de compilation?
3. Mes rapports sont principalement composés d'éléments graphiques. ITextSharp sera-t-il capable de produire les PDF sans beaucoup de manipulations?

... Merci

Répondre

5
  1. XMLWorker est contenu dans une bibliothèque séparée que vous devez faire référence, vous pouvez pick up the latest here.
  2. Le boîtier est important, les quatre premières lettres de XMLWorker doivent être en majuscules. Une fois que vous faites cela (et ajoutez la référence ci-dessus), vous devriez pouvoir cliquer avec le bouton droit de la souris et demander à VS de trouver automatiquement la directive using pour vous. Si non, vous cherchez using iTextSharp.tool.xml;
  3. Vous aurez juste à l'essayer et à voir. Si votre objectif est de créer un fichier PDF qui ressemble exactement à un site Web existant et/ou que vous avez du code HTML et CSS assez compliqué, il serait peut-être préférable d'essayer le code wkhtmltopdf. XMLWorker de iTextSharp brille parce qu'il analyse HTML et CSS en objets iTextSharp que vous pouvez éventuellement manipuler avant d'écrire en PDF. Tous les paradigmes/règles HTML/CSS ne peuvent pas être facilement exprimés de cette façon et XMLWorker ne les supporte pas. wkhtmltopdf peut faire de très beaux fichiers PDF, mais vous ne pouvez rien modifier pendant le processus de conversion.
+0

Ajout de iTextSharp.XMLWorker aux références. Cela a résolu le problème XMLWorker ... Merci! Pourquoi cette DLL supplémentaire n'est-elle pas incluse dans le téléchargement de distribution? – karmaBarn

+0

'en utilisant iTextSharp.tool.xml;' a fait la magie! Merci @Chris Haas –