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

Dan*_*lan 25 css java pdf flying-saucer xhtmlrenderer

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

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

Dan*_*lan 33

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

<div id="footer">
    page <span id="pagenumber"></span> of <span id="pagecount"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

这应该是你的CSS /风格:

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

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

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

    #pagecount:before {
        content: counter(pages);
    }
Run Code Online (Sandbox Code Playgroud)

您可以在此处详细了解该@bottom-right选项.

  • 这个解决方案对我不起作用。它只出现在最后一页。 (2认同)
  • @PauloOliveira 当 &lt;div id="footer"&gt; 在 &lt;body&gt; 中太靠下时,它仅显示在最后一页。将其放置在较高的位置,以便在第一页结束之前打印。但约翰·马克的回答更好。 (2认同)

Joh*_*ark 25

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

@page {
  @bottom-right {
    content: "Page " counter(page) " of " counter(pages);
  }
}
Run Code Online (Sandbox Code Playgroud)

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