如何在C#(NFop)中使用带有XSL-FO的浮点数?

时间:2011-01-07 09:29:12

标签: c# xsl-fo nfop

问题: NFop是否支持浮动?

背景:我需要生成可打印的报告,其中包含页码,公司徽标和数据表。该报告适用于基于Web的项目,最初我考虑使用CSS打印样式表在纯HTML中进行,但页面数量和表格单元格的拆分似乎是一个问题。

因此,我决定采用PDF生成路线,使用XSL生成XSL-FO并使用NFop生成PDF。但是,似乎NFop不支持XSL-FO的<fo:float>部分?

以下呈现罚款:

<fo:block>
  <fo:external-graphic src="c:\Projects\NFopSpike\NFopSpike\logo.jpg" />
  <fo:block>
    Foo
  </fo:block>
  <fo:block>
    Bar
  </fo:block>
</fo:block>

下面完全删除了图片:

<fo:block>
  <fo:float float="start">
    <fo:external-graphic src="c:\Projects\NFopSpike\NFopSpike\logo.jpg" />
  </fo:float>
  <fo:block>
    Foo
  </fo:block>
  <fo:block>
    Bar
  </fo:block>
</fo:block>

我现在使用的另一种解决方案是创建一个单独的块容器,它绝对定位到浮动图像应该出现的位置,并确保其他内容不会被遮挡,但简单的浮动将更容易维持。

1 个答案:

答案 0 :(得分:3)

NFOP(2008年3月发布的最新版本)是Apache FOP的.NET端口(2010年7月发布)。 Apache FOP从未支持fo:float(参见http://xmlgraphics.apache.org/fop/compliance.html#fo-object-float)。

所以你的问题的答案是:不,不幸的是不支持fo:float。