iho*_*rko 7 c# pdf asp.net pdf-generation itextsharp
我使用iTextPdf从html页面生成pdf文件,如:
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
TextReader reader = new StringReader(HTML);
hw.Parse(reader);
document.Close();
Run Code Online (Sandbox Code Playgroud)
但我的html页面很大,我需要在特定的地方添加页面制动器.
如何在pdf中添加这些分页符?
谢谢
T G*_*pta 12
因为,iTextSharp在理解一些HTML样式/标签方面确实存在局限性.
解决方案是一个小解决方法:
您需要创建一个扩展HTMLWorker该类的新类,并重写该StartElement方法,该方法为每个html元素的启动提供事件.
public class HTMLWorkerExtended : HTMLWorker
{
public HTMLWorkerExtended(IDocListener document): base(document)
{
}
public override void StartElement(string tag, IDictionary<string, string> str)
{
if (tag.Equals("newpage"))
document.Add(Chunk.NEXTPAGE);
else
base.StartElement(tag, str);
}
}
Run Code Online (Sandbox Code Playgroud)在您的html中,<newpage />在需要分页符的任何位置添加标记.
现在使用HTMLWorkerExtended类'对象来解析html.
using (TextReader htmlViewReader = new StringReader(htmlText))
{
using (var htmlWorker = new HTMLWorkerExtended(pdfDocument))
{
htmlWorker.Open();
htmlWorker.Parse(htmlViewReader);
}
}
Run Code Online (Sandbox Code Playgroud)尝试在HTML中添加以下内容:
<div style="page-break-before:always"> </div>
Run Code Online (Sandbox Code Playgroud)
有一个HTMLWorker.ParseToList. 你不能用那个吗?