如何将带有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();
我已经使用过此代码..
你能帮帮我吗。
答案 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。