NLV*_*NLV 10 .net css c# itext
我iTextSharp
用来转换HTML
页面PDF
.我正在使用这里给出的辅助类,我也尝试使用StyleSheet.LoadTagStyle()
CSS来应用CSS.但似乎没有任何效果.任何见解?
编辑
我可以添加这样的样式 -
.mystyle
{
color: red;
width: 400px;
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码 -
StyleSheet css = new StyleSheet();
css.LoadStyle("mystyle", "color", "red");
css.LoadStyle("mystyle", "width", "400px");
Run Code Online (Sandbox Code Playgroud)
但是当我有这样复杂的风格时会发生什么?
div .myclass
{
/*some styles*/
}
td a.hover
{
/*some styles*/
}
td .myclass2
{
/*some styles*/
}
.myclass .myinnerclass
{
/*some styles*/
}
Run Code Online (Sandbox Code Playgroud)
如何使用iTextSharp添加它?
kuu*_*nbo 14
使用StyleSheet.LoadTagStyle(),你在正确的轨道上.
基本上这是一个四步过程:
这是一个简单的HTTP处理程序:
<%@ 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, HtmlTags.FONTSIZE, "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; }
}
}
Run Code Online (Sandbox Code Playgroud)
你需要5.0.6版来运行上面的代码.解析HTML的支持已经大大改进.