使用Flying Saucer,如何在页脚的每个页面上生成包含页码和页面总数的pdf?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Flying Saucer,如何在页脚的每个页面上生成包含页码和页面总数的pdf?相关的知识,希望对你有一定的参考价值。

我花了更多的研究比我自己想要的更多,所以我将在这里发布一个全面的答案。似乎这样做的信息分散在许多不同的网站上,我想把它放在一个地方。 This answer可能是同一个东西,但我的眼睛茫然,因为它在Java字符串而不是在html模板中。这是问题:

我正在渲染PDF,我想在页面底部写一个页脚,上面写着“Page n of m”,其中“n”是您所在的页码,“m”是文档中的总页数。我怎么做?

答案

在你的html中,你需要把它放在body标签的某个地方:

<div id="footer">
    page <span id="pagenumber"></span> of <span id="pagecount"></span>
</div>

这应该是你的CSS /风格:

    #footer {
        position: running(footer);
        text-align: right;
    }

    @page {
        @bottom-right {
            content: element(footer);
        }
    }

    #pagenumber:before {
        content: counter(page);
    }

    #pagecount:before {
        content: counter(pages);
    }

你可以了解更多关于@bottom-right选项here的信息。

另一答案

您还可以尝试稍微简洁的方法:

@page {
  @bottom-right {
    content: "Page " counter(page) " of " counter(pages);
  }
}

您需要将其放在css / style中,并且不需要添加额外的页脚HTML元素。

另一答案

@John Mark的解决方案对我有用。在我的应用程序中,我需要在HTML中嵌入样式信息,所以我将它包装在<style>标签中并将其放在<head>之前的<title>中。也许这些信息对其他人有用。

另一答案

重要错误和解决方案!

对于Starters,使用下面的John Mark的解决方案是使其正常工作的正确方法:

@page {
  @bottom-right {
    content: "Page " counter(page) " of " counter(pages);
  }
}

但是,许多人可能遇到了以下问题:PDF已停止生成!

这可以通过更新你的飞行SAUCER版本来解决。

由于@page和@右下角的css代码,当我的PDF停止生成时,我正在运行9.1.4。

这是飞碟中的一个小故障,已在9.1.5版本中修复!

确保更新到9.1.5并使用John Mark的答案。

以上是关于使用Flying Saucer,如何在页脚的每个页面上生成包含页码和页面总数的pdf?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Excel中设置页眉和页脚

如何访问数据表页脚的第二行

使用页脚的 UITableView 底部不需要的水平线

页脚与网站内容重叠

word中如何改变页码(页脚)的数字?

在现有的 Word 文档页脚表格中编辑和添加内容