asp.net iTextPdf如何分页

xuo3flqw  于 2023-01-14  发布在  .NET
关注(0)|答案(5)|浏览(234)

我使用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();

但是我的html页面很大,我需要在特定的地方添加页面刹车。
如何在pdf中添加这些分页符?
谢谢

rjee0c15

rjee0c151#

因此,iTextSharp在理解少数HTML样式/标记方面确实存在限制。
此问题的解决方案是一个小的变通方案:

  • 你需要创建一个新的类来扩展HTMLWorker类并覆盖StartElement方法,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);
}
}
  • 在html中,在需要分页的地方添加<newpage />标签。
  • 现在使用HTMLWorkerExtended class'对象来解析html。
using (TextReader htmlViewReader = new StringReader(htmlText))
 {
    using (var htmlWorker = new HTMLWorkerExtended(pdfDocument))
      {
         htmlWorker.Open();
         htmlWorker.Parse(htmlViewReader);
      }
 }
hrysbysz

hrysbysz2#

尝试在HTML中添加以下内容:

<div style="page-break-before:always">&nbsp;</div>
r1zk6ea1

r1zk6ea13#

有一个HTMLWorker.ParseToList。你不能用它吗?
1.从ParseToList中获取n个元素
1.将前x个元素添加到PDF
1.调用PDF上的NewPage
1.将剩余元素添加到PDF

x0fgdtte

x0fgdtte4#

如果要插入分页符,请使用以下代码:
文档.NewPage();

wd2eg0qa

wd2eg0qa5#

请使用以下内容:
我试过了,效果很好:

<div style="page-break-after:always">&nbsp;</div>

相关问题