我在视图中有一个HTML表.我正在使用ITextSharp将HTML转换为PDF.我想为每个页面使用外部CSS和重复表头.如何使用CSS和页眉在每个页面上显示标题?
这是为了显示我的页面标题
str.Append("<table class='text-center'>");
str.Append("<tr class='h4'><td> " + companyName + " </ td ></ tr >");
str.Append("</table>");
Run Code Online (Sandbox Code Playgroud)
这将显示我的HTML
TextReader xmlString = new StringReader(str.Append(html).ToString());
Run Code Online (Sandbox Code Playgroud)
这是为了附加我的CSS
ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
cssResolver.AddCssFile(HttpContext.Current.Server.MapPath(@"~/Content/Print.css"), true);
IPipeline pipeline = new CssResolverPipeline(cssResolver,
new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));
var worker = new XMLWorker(pipeline, true);
var xmlParse = new XMLParser(true, worker);
xmlParse.Parse(xmlString);
xmlParse.Flush();
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,但我使用1表显示数据,表头不重复每页.如果我使用此代码重复表的标头,CSS不起作用.如何使用CSS和重复标头来解决此问题.
using (TextReader sr = new StringReader(html))
{
List<IElement> elements =
iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null);
foreach (IElement el in elements)
{
if (el is PdfPTable)
{
((PdfPTable)el).HeaderRows = 2;
}
document.Add(el);
xmlParse.Parse(sr);
}
}
Run Code Online (Sandbox Code Playgroud)
rhe*_*ens 14
XML Worker允许您通过专有的CSS属性配置重复的表头和页脚:repeat-header和repeat-footer.这些不是CSS规范的一部分.它们仅供XML Worker用于此特定目的.
您可以使用<thead>和指定页眉和页脚行<tfoot>.
<table style="repeat-header: yes; repeat-footer: yes;">
<tfoot>
<tr>
<td>Footer 1</td>
</tr>
</tfoot>
<thead>
<tr>
<td>Header 1</td>
</tr>
<tr>
<td>Header 2</td>
</tr>
</thead>
<tbody>
<!-- ... -->
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
在您的上一个代码示例中,您使用HTMLWorker.你不应该.它被弃用了XMLWorker.
因此,只需使用基于的代码,XMLWorker并XMLParser使用CSS属性,repeat-header如上面的HTML示例所示.