2013-03-14 56 views
0

我正在尝试使用Apache-FOP生成发票。 使用<fo:retrieve-marker/><fo:marker/>我可以为每个页面创建小计。使用<fo:retrieve-marker />检索Apache-FOP-howto格式编号

我想正确地格式化这个数字:

  <fo:block text-align="right"> 
      <fo:retrieve-marker retrieve-class-name="invoice-subtotal" retrieve-boundary="page" retrieve-position="last-starting-within-page"/> 
      </fo:block> 

只是给了我平淡总和(如12045),要我想有是120,45。这可能只是Apache-FOP 1.1?检索这个数字是在XSLT处理器之后完成的,所以我不能使用XSLT格式化函数。

感谢您的帮助。

+1

您是否在使用XSLT创建XSL-FO?如果是这样,你在创建'fo:marker'时不能使用'format-number()'?如果你需要格式化和非格式化,你可以创建2'fo:marker's。 – 2013-03-14 19:10:28

+0

请参阅下面的答案。我确实使用XSLT来创建XSL-FO,但我也是在计算XSLT中的数字。 – bjoernhaeuser 2013-03-15 10:11:20

回答

1

好的。我所问的似乎不可能。我所做之前计算中间和使用XSLT:

<fo:marker marker-class-name="invoice-subtotal"><xsl:value-of select="itemTax/grossPriceRaw + sum(preceding::itemTax/grossPriceRaw)"/></fo:marker> 

我所做的要解决的问题是,在我的发票每一个位置现在持有的中间和值。所以计算和格式化取决于编程语言(在这种情况下是java)。

我的标记定义现在看起来是这样的:

<fo:marker marker-class-name="invoice-subtotal"><xsl:value-of select="intSum"/></fo:marker> 

所以现在的一切工作正常。

感谢您的帮助。