2013-05-21 172 views
1

Freemarker的常见用途是生成PDF。Freemarker,PDF,页眉/页脚和分页符

Unfortunally我产生了很多的页面和“他们”要我把一个头的一些信息,如“2/60页”等有出头的落款PDF ...

搜索在网络上,我发现如何创建一个宏模板,但它只共享一些通用的标签(如CSS),但它不告诉freemarker如何管理多页PDF。

除此之外,有时我在ftl里有一个“page-break css class”,所以我无法确定何时何地创建新页面。

即时通讯使用Freemakrer 2.3上的Java

感谢您的任何帮助。

+0

,因为Smarty的PHP的。我会将POI用于PDF – 2013-05-21 13:06:43

+0

这不是我的选择。他们使用freemarker,所以我必须。 – MrMime

+0

你用Freemarker生成什么?一个HTML文档然后用另一个工具或直接PDF文档转换成PDF文件? – obourgain

回答

1

您可以使用CSS指定页眉和页脚(包括页码)。 如果用于将XHTML转换为PDF字节数组的工具支持分页的媒体指令,则这将起作用。

在CSS:

@page { 
    @top-center {content: element(header)}  /* Header */ 
    @bottom-center {content: element(footer)} /* Enpied */ 
} 
#header {position: running(header);} 
#footer {position: running(footer);} 
#pagenumber:before {content: counter(page);} 
#pagecount:before {content: counter(pages);} 

在HTML:我已经使用了Freemarker仅模板引擎

<div id="header">YOUR HEADER HERE</div> 
<div id="footer">Page <span id="pagenumber" />/<span id="pagecount" /></div> 
+0

有了这个解决方案,我在第一页上标题和在最后一页上的页脚上显示文本:“页码54/54”。 – MrMime

+0

XHTML函数仅为: 模板模板= freemarkerConfig.getTemplate(templateName +“.ftl.html”,Constants.DEFAULT_ENCODING); StringWriter writer = new StringWriter(); 模板。过程(mapFullOfThings,作家); return writer.toString(); 模板是一个freemarker类:​​package freemarker.template; – MrMime