2013-05-21 213 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