我修改了原来的问题,因为我是新人,还无法回复自己的问题...但这是我重新编写的问题,包含更多编码:
我将其用作 NetSuite 的一部分,NetSuite 是我们公司使用的会计/订购/CRM 工具。我们可以使用他们的表单创建工具来定制我们自己的估算,该工具结合了 freemarker、html 和 xml 来创建我们的估算。
我设计了一个漂亮的估计,在这个估计中我可以从数据库中调用变量。基本上是运输/账单信息、估算中的项目,今天我可以添加页码(第 1 页,共 5 页或第 3 页,共 5 页),并使用页脚将它们放在底部。不过,我也想这样做,这样如果我的估计运行多个页面,我可以在顶部打印标题,这样您就可以看到“数量、描述、价格”,正如我所解释的那样。
现在...我不太确定宏的用途,这就是我编写页码并将它们放在页脚上的方式,我将稍后展示其代码。
我想做类似的事情,这样我就可以说“如果我们不看第 1 页,则打印此标题,但如果我们看第 1 页,请不要打印标题”,所以我想我可以这样做该页 = 页 + 1,因此它不断增加。这个想法适用于我的估计的其他部分(例如,列出的每个项目都在估计的单独行上,并且我实际上使用该方法打印行号,但稍后通过系统在其自己的例程中运行列表功能)....
因此,任何帮助使其适用于我的 HEADER 将不胜感激。我希望我可以做一些简单的事情,例如“page = PAGENUMBER”,但由于某种原因我无法利用内置的 pagenumber 变量,它不太能那样工作......这就是我所拥有的,简化的庄园:
<!--?xml version="1.0"?-->
<pdf>
<head>
<style type="text/css">
STYLES HERE
</style>
<macrolist>
<macro id="footer">
<hr></hr>
<table border="0" width="100%">
<tr>
<#setting time_zone="America/New_York">
<td align="left">${.now}</td>
<td align="right">Page <pagenumber/> of <totalpages/></td>
</tr>
</table>
<hr></hr>
</macro>
</macrolist>
</head>
<body footer="footer" footer-height="12mm">
REGULAR HTML HERE FOR OUR COMPANY
<#if (record.item?size > 0)>
<table class="border" width="100%" cellpadding="2">
<#assign line = 0>
<#list record.item as item>
<#if item_index==0>
<tr>
<td width="5%" class="border4" valign="center"><b>Ln #</b></td>
<td width="5%" class="border4" valign="center"><b>Qty</b></td>
<td width="66%" class="border4" valign="center"><b>Description</b></td>
<td width="12%" class="border4" valign="center" align="right"><b>Unit Price</b></td>
<td width="12%" class="border5" valign="center" align="right"><b>Ext. Price</b></td>
</tr>
</table>
<table width="100%" cellpadding="7">
</#if>
<tr>
<#assign line = line + 1>
<td width="5%" valign="top">${line}</td>
<td width="5%" valign="top">${item.quantity}</td>
<td width="71%" valign="top">${item.description?html}<br /><i>Manuf. Part #: ${item.item.text}</i></td>
<td width="12%" valign="top" align="right">$${item.rate}</td>
<td width="12%" valign="top" align="right">$${item.amount}</td>
</#if>
</tr>
</#list>
</table>
</#if>
MORE HTML FOR OUR COMPANY HERE
</body>
</pdf>
综上所述,对于如何利用“LN #、数量、描述、单价、附加价格”作为第 2 页及以后的页眉,有什么想法吗? (第 1 页顶部有我们的信头和我们公司的一些其他 html 编码)
最佳答案
正如 Yvan 所指出的,这不是一个 freemaker 问题,而实际上是一个 bfo问题。正如 Shaun 所指出的,您可以使用 #pagen 的 CSS id 选择器来设置给定页面的页眉/页脚。这样做的问题是,我见过的所有现有文档都表明,如果您使用 #pagen CSS 选择器,那么您还必须为每个其他页面定义 CSS。例如...
/* If */
#page1 {
header: empty-header;
header-height: 0px;
}
/* Then */
#page2, #page3, #page4, ... #pagen {
header: default-header;
header-height: 10mm;
}
您基本上必须猜测最大页面大小是多少,并为每个页面添加一个 CSS 选择器。增加到 10 页左右可能就足够安全了,因为说实话,谁会订购 11 页的订单,对吧?
好吧,如果这不适合您,或者您只是不喜欢这样的硬编码限制,那么我相信我有一个替代方案。如果在 <body>
上定义默认 header 标签。然后为您需要的页面(即您的情况下的页面 1)定义 #pagen CSS 选择器,但使用 !important
CSS 属性你会得到想要的结果。例如,这应该可以解决问题......
<!--?xml version="1.0"?-->
<pdf>
<head>
<style type="text/css">
#page1 {
header: empty-header !important;
header-height: 0px !important;
}
</style>
<macrolist>
<macro id="empty-header">
<!-- Nothing to look at here -->
</macro>
<macro id="default-header">
<!-- Header HTML for all but first page -->
</macro>
</macrolist>
</head>
<body header="default-header" header-height="12mm">
<!-- Page body HTML -->
</body>
</pdf>
关于freemarker - 如何在 freemarker 中打印除第一页以外的所有页面上的表格标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240502/