iTextSharp代码有什么问题

时间:2014-02-22 08:35:02

标签: asp.net pdf itextsharp

我想将我的网格视图导出为PDF但我遇到了麻烦。我尝试了两种不同的方法,但都有错误。在第一个中,VS将无法识别以下代码:

Image PNG= Image.GetInstance(imagepath + "/test.PNG");
doc.Add(PNG);

我应该提一下,我的PDF包含一些图片。

// #1
protected void Button1_Click(object sender, EventArgs e)
{
    string pdfpath = Server.MapPath("PDFs");
    string imagepath = Server.MapPath("Images");
    Document doc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);

    try
    {
        PdfWriter.GetInstance(doc, new FileStream(pdfpath + "Certificates/Dormaj-Certificates.pdf", FileMode.Create));
        doc.Open();
        doc.Add(new Paragraph("GIF"));

        Image gif = Image.GetInstance(imagepath + "/mikesdotnetting.gif");
        doc.Add(gif);
    }
    catch (Exception ex)
    {
        //Log error;
    }
    finally
    {
        doc.Close();
    }
}

然后我尝试了这个代码,它给了我关于图像的错误, 它说无法找到图像路径。

// #2
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);

StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
pnlPerson.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());

Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
var appDataPath = Server.MapPath("~/Certificates/");
if (!Directory.Exists(appDataPath))
{
    //Directory.Create(appDataPath);
}
var filePath = Path.Combine(appDataPath, Path.GetRandomFileName() + ".pdf");
using (var output = File.Create(filePath))
{
    // Do stuff here
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

1 个答案:

答案 0 :(得分:0)

我发现了问题!我已经纠正了第一种方式! 这完全是因为我的图像地址!因为我在网格视图中使用了图像,所以发生了这个问题!解决这个问题所需的唯一工作就是直接解决我们的图像问题。例如〜/ image / test.jpg应改为http..yoursite / image / test.jpg。 就是这样!