gpt4 book ai didi

c# - iTextPdf 如何分页

转载 作者:太空狗 更新时间:2023-10-29 19:53:06 27 4
gpt4 key购买 nike

我使用 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 中添加这些分页符?

谢谢

最佳答案

因为 iTextSharp 在理解少数 HTML 样式/标签方面确实存在局限性。

这个问题的解决方案是一些变通办法:

  • 您需要创建一个新类来扩展 HTMLWorker类(class) 并覆盖 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类的对象来解析 html。

    using (TextReader htmlViewReader = new StringReader(htmlText))
    {
    using (var htmlWorker = new HTMLWorkerExtended(pdfDocument))
    {
    htmlWorker.Open();
    htmlWorker.Parse(htmlViewReader);
    }
    }

关于c# - iTextPdf 如何分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com