asp.net页面转换为pdf与css类设计

时间:2014-07-04 08:34:07

标签: asp.net

如何将带有css类设计的 .aspx 页面转换为包含 asp.net 控件的pdf格式。

我已经使用了一些代码,但它没有用正确的对齐和设计来隐藏页面。

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    a.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0.0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();

我已经使用过此代码..

你能帮帮我吗。

2 个答案:

答案 0 :(得分:0)

最简单的方法之一是使用wkhtmltopdf库/工具

运行如下命令:

  

wkhtmltopdf http://yoursite.com/yourpage.aspx yoursit-1970-01-01.pdf

将使用WebKit enginge创建您的网址的pdf渲染。最好在ASP.NET请求之外运行它。例如,存储要在数据库中呈现的URL,并且已安排的作业将所有这些URL转换为PDF。当然,如果你必须立即提供文件,这不是一个选择。

如果要在请求中执行此操作,使用C库可能是最佳解决方案。


编辑:

似乎已经为库编写了一个.NET包装器:https://github.com/gmanny/Pechkin

答案 1 :(得分:0)

您需要使用XMLWorkerHelper和CSSResolver应用正确的样式 你可以参考以下主题来解决这个问题。

CSS styles not being applied to PDF with iTextSharp

Cannot get CSS to work in iTextSharp (5.4.3) when making pdf

首先,您需要检查样式表是否正确应用。你可以通过删除所有样式来尝试这个,但保留一个css让我们说

p
{
   color:red;
}

iTextSharp从样式表中删除/覆盖某些样式。您可以为pdf创建单独的css文件并逐个应用样式。您不能使用iTextSharp库将aspx页面转换为pdf。