itextsharp – CSS不适用 – C#.NET

前端之家收集整理的这篇文章主要介绍了itextsharp – CSS不适用 – C#.NET前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用iTextSharp将 HTML页面转换为PDF.我正在使用给予 here的助手类,我也试图使用StyleSheet.LoadTagStyle()来应用CSS.但似乎没有什么工作.任何见解?

编辑

我可以添加这样的样式 –

.mystyle
{
   color: red;
   width: 400px;
}

使用以下代码

StyleSheet css = new StyleSheet();
css.LoadStyle("mystyle","color","red");
css.LoadStyle("mystyle","width","400px");

但是当我有这样的复杂风格时会发生什么?

div .myclass
{
    /*some styles*/
}

td a.hover
{
    /*some styles*/
}

td .myclass2
{
    /*some styles*/
}    
.myclass .myinnerclass
{
    /*some styles*/
}

如何使用iTextSharp添加

解决方法

您使用 StyleSheet.LoadTagStyle()正确的轨道.

基本上这是一个四步的过程:

>获取字符串中的HTML
>实例化一个StyleSheet对象,并为每个您想要的样式调用StyleSheet.LoadTagStyle().
>打HTMLWorker.ParseToList()
>添加从上述调用返回的文档对象的IElement.

这是一个简单的HTTP handler

<%@ WebHandler Language='C#' Class='styles' %>
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text;  
using iTextSharp.text.pdf;  

public class styles : IHttpHandler {
  public void ProcessRequest (HttpContext context) {
    HttpResponse Response = context.Response;
    Response.ContentType = "application/pdf";
    string Html = @"
<h1>h1</h1>
<p>A paragraph</p>    
<ul> 
<li>one</li>   
<li>two</li>   
<li>three</li>   
</ul>";
    StyleSheet styles = new StyleSheet();
    styles.LoadTagStyle(HtmlTags.H1,HtmlTags.FONTSIZE,"16");
    styles.LoadTagStyle(HtmlTags.P,"10");
    styles.LoadTagStyle(HtmlTags.P,HtmlTags.COLOR,"#ff0000");
    styles.LoadTagStyle(HtmlTags.UL,HtmlTags.INDENT,"10");
    styles.LoadTagStyle(HtmlTags.LI,HtmlTags.LEADING,"16");
    using (Document document = new Document()) {
      PdfWriter.GetInstance(document,Response.OutputStream);
      document.Open();
      List<IElement> objects = HTMLWorker.ParseToList(
        new StringReader(Html),styles
      );
      foreach (IElement element in objects) {
        document.Add(element);
      }
    }
 }
  public bool IsReusable {
      get { return false; }
  }
}

您需要5.0.6版本才能运行上面的代码.解析HTML的支持已经大大提高.

如果您想查看当前版本支持哪些标签,请参阅SVN for the HtmlTags class.

猜你在找的CSS相关文章