我正在使用iTextSharp.dll将我的页面打印为pdf。我遇到的唯一问题是pdf显示我在页面上的CSS和JavaScript。有没有办法可以将iTextSharp设置为 NOT 显示CSS / JS?
是的,我将我的CSS / JS直接输入到.aspx页面 - 因为这是一个小项目。当然,对于一个大型项目,我会把它分开。
修改
这是我当前写入页面的语法
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
this.Page.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(iTextSharp.text.PageSize.A4.Rotate(), 10, 10, 10, 10);
pdfDoc.SetPageSize(iTextSharp.text.PageSize.A4);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
答案 0 :(得分:0)
有一个类似的打印问题,并通过使用string删除样式解决.Replace方法查看可能有助于您解决问题的代码
Regex regSimple = new Regex(@"(?i)<img\b[^>]*?style\s*=(['""]?)(?<style>[^'""]+)\1[^>]*?>");
if (regSimple.IsMatch(html))
{
html = html.Replace(Convert.ToString(regSimple.Match(html)), Convert.ToString(regSimple.Match(html)).Replace("style=\"", "").Replace("height:", "height=\"").Replace("\"width:", "width=\""));
}