我正在尝试编写一个应用程序,它将触发我在ASP.NET中构建的一系列Web报表。所以我有一个Web应用程序,其中页面存在,但我真的不想使用该网站查看页面,我想创建我可以提供给我的客户的PDF。
我正在尝试编写的应用程序是一个控制台应用程序,在c#中用Visual Studio 2010编写并使用iTextSharp v5.5.2和.NET 4.5。它目前只是一个框架,因为我尚未完成“解雇PDF”部分。我正在从网上访问一个页面并试图将其保存为PDF,但我找不到任何有关我得到的编译错误的信息。我在应用程序中有以下Using指令:
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();
//以下几行表明我需要一个Using指令或一个Reference // XmlWorkerHelper和XmlWorker声明。需要什么参考?
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 ");
}
}
}
我的问题:
1.我需要什么参考或Using指令来解决XmlWorkerHelper和XmlWorker声明中的编译错误?
2.是否还有其他我错过的导致编译错误的东西?
我的报告主要由图形元素组成。 iTextSharp是否能够在没有大量操作的情况下生成PDF?
...谢谢
答案 0 :(得分:5)
XMLWorker
包含在您需要引用的单独库中,您可以pick up the latest here。XMLWorker
的前四个字母需要大写。一旦你这样做(并添加上面的参考),你应该能够右键单击并让VS自动为你找出using
指令。如果没有,您正在寻找using iTextSharp.tool.xml;
wkhtmltopdf
。 iTextSharp的XMLWorker发光,因为它将HTML和CSS解析为iTextSharp对象,您可以在写入PDF之前选择对其进行操作。并非所有HTML / CSS范例/规则都可以通过这种方式轻松表达,而且XMLWorker不支持这些。 wkhtmltopdf可以制作看起来很棒的PDF,但在转换过程中你无法真正调整任何内容。