当前位置: 首页 > 知识库问答 >
问题:

ITextSharp-包括每个页面的页脚,但第一个和最后一个

杜焕
2023-03-14

目前正在用C#中的ITextSharp构建一个PDF。PDF由三个“部分”组成,一个封面,一个可以跨越多个页面的表格,以及一个最终页面。拥有该表的页面需要在第一页包含页眉,并在所有包含页眉的页面上包含页脚,但封面和最后一页不需要。

我使用XMLWorker构建页面,但这并不重要。构建页面的代码如下:

    var htmlContext = new HtmlPipelineContext(null);
    htmlContext.SetTagFactory(iTextSharp.tool.xml.html.Tags.GetHtmlTagProcessorFactory());
    var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
    /* cssResolver.AddCssFile(@"style.css", true); */
    cssResolver.AddCssFile(@"style.css", true);
    var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));
    XMLWorker worker = new XMLWorker(pipeline, true);
    XMLParser p = new XMLParser(worker);

    /* write out cover page */
    p.Parse(coverpage);

    /* write out table */
    document.NewPage();
    writer.PageEvent = new PDFFooter();
    p.Parse(header); 
    p.Parse(ContentTable); 

    /* write out end page */
    document.NewPage();
    p.Parse(endPage);

我遇到的麻烦是确定一种方法来防止页脚出现在结束页上。我正在重写OnEndPage以创建页脚。是否有一种方法来检测文档的最后一页(不知道具体是多少页),并告诉它不要使用重写,这样就不会打印出页脚?

共有1个答案

段弘和
2023-03-14

onendpage()被触发时,无法知道您是否在最后一页,因此必须使用一个技巧。在pdffooter类中添加一个布尔成员变量,并在默认情况下将其设置为false。只有当此成员变量true时才添加页脚。

要确保需要页脚的页有页脚,请在添加coverpage后将member-variable设置为true,并在添加endpage前将其设置为false。

 类似资料:
  • 我试过以下方法。它似乎使每个页面后面的空白页的方向和大小是源PDF页面的方向和大小,但源PDF页面的方向和大小似乎是前一个空白页的方向和大小:

  • 我只想在第一页和最后一页打印页脚。我怎样才能做到这一点?

  • 我正在用ApachePDFBox编写一个简单的Java应用程序。我有几个PDF,其中最后一页是前几页内容的索引。 我需要的索引(最后一页)成为PDF文件的第一页。 可能吗? 我还发现了http://itextpdf.com/这个库听起来比ApachePDFBox更好,但在这种情况下,我也不知道我是否能做我需要的事情 或者我可以用这个:http://saaspose.com/docs/display

  • 本文向大家介绍学做Bootstrap的第一个页面,包括了学做Bootstrap的第一个页面的使用技巧和注意事项,需要的朋友参考一下 本文实例分享了第一个Bootstrap页面的实现代码,供大家参考,具体内容如下 效果图: 实现代码: 相信大家一定还没过瘾吧,下面再为大家分享几篇文章: 《值得分享和收藏的Bootstrap学习教程》 《Bootstrap学习教程》 以上就是本文的全部内容,希望对大家

  • 添加“下一页继续...”Jasper报表中除最后一页外的每页页脚中的文本。所以基本上,我想让用户知道报告的下一页有更多内容可以查看。我知道y东西的第x页,这也让我们知道如果有更多的页面可以看到,但我想使它更友好的用户。 > 创建了一个自定义变量,如下所示: 在页脚中创建了TextField,如下所示: 现在,当我运行总共有3页的报告时,TextField内容在每一页中显示如下文本:

  • 我有一个PDF文档,通常,每一页都有一个页脚,页脚上有一个页码,前面有该页应该所在的章节或节的名称。但是,偶尔,我会得到一些跨越多个页面的大表结果。 我跳过为文档添加页眉和页脚信息,因为我有一个封面。因为不同的部分是不同的信息,所以我根据不同的领域将它们分解为章节和小节。此外,用户可以选择打印出一次从数据库信息生成的多个PDF。在每一章的开头,我使用以下命令设置页脚文本: 或者至少我在努力。当谈到