我想将我的网格视图导出为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();
}
答案 0 :(得分:0)
我发现了问题!我已经纠正了第一种方式! 这完全是因为我的图像地址!因为我在网格视图中使用了图像,所以发生了这个问题!解决这个问题所需的唯一工作就是直接解决我们的图像问题。例如〜/ image / test.jpg应改为http..yoursite / image / test.jpg。 就是这样!