我们客户的要求是使用带圆角的PDF表格。我只有Apache FOP处理器,它不支持圆角属性。它也不支持浮动,因此左右浮动的圆形图像无法完成。
您对如何做到这一点有什么建议吗?
答案 0 :(得分:5)
您可以将表创建为可缩放矢量图形(SVG)对象,并将其作为外部图像包含在XSL-FO文档中。 SVG支持圆角,FOP支持SVG。
我相信您也可以创建一个圆角矩形SVG并将其用作内容的背景,并将表放在它前面。我想我曾经做过一次,但我似乎无法找到代码...
答案 1 :(得分:0)
只要它是固定宽度并且不要期望事物像css一样动态地“浮动”,我已经这样做了(通过使用垂直'滑动门'技术,如果你还记得老派的CSS): / p>
获得一个圆角的背景图像,只要你期望在页面上就可以了(请注意,如果你希望事情能够进入多个页面,那么这将无法解决问题)。我在页眉/页脚和开始新页面(在正文区域中)的东西上使用它,我知道它不会超过1页。
然后我决定是否需要一个固定的高度...如果是这样你就可以使用没有花哨的背景图像......
如果高度会有所不同,那么我只使用图像的顶部作为一个部分,而将图像的底部用于另一部分。像这样的东西:
<fo:block-container>
<fo:block-container background-image="url(images/rounded_corner_image.png)"
background-repeat="no-repeat"
background-position-horizontal="15px"
background-position-vertical="top"
background-color="white"
>
<!--
So it used the top of the image for as long as the block-container exists heightwise.
I may have had some whitespace in my image and need to move image into place so think I used background-position-horizontal since i had 15px of whitespace i wanted to cut off
Also you may set a height above if definatley know you don't need it to 'auto-expand', just make sure you have content that can't overflow if setting height (like a table with Name: Address: fields)
-->
<fo:block margin="70px 70px 0px 70px">
Need to add some margins before starting content since dont want to text to touch the top and sides of of the rounded corner/borders plus add whitespace for content.
</fo:block>
</fo:block-container>
<fo:block-container background-image="url(images/rounded_corner_image.png)"
background-repeat="no-repeat"
background-position-horizontal="15px"
background-position-vertical="bottom"
padding="0px 0px 20px 0px"
background-color="white"
>
<fo:block margin="0px 70px 70px 70px">
Need to add some margins before starting content since dont want to text to touch bottom and sides of of the rounded corner/borders.
</fo:block>
</fo:block-container>
</fo:block-container>
我认为有很多方法可以解决这个问题。就像我有底部的内容所以我只是使用底部知道我肯定会有至少70px的内容来显示我的圆角的底部渐变....你可能只是决定把你的所有内容放在第一块容器并给第二块容器一个70px的固定高度以仅显示底部背景图像(我认为即使底层容器中没有内容[忘记xsl-fo规则],这也是可能的)。使用FOP主干并很好地解决。
编辑:我应该注意我使用最新的FOP 1.0(也尝试使用上一版本),它运作良好。我也使用了一个像内容一样高的图形,因为我有边框...如果你只需要顶部和底部图形(和背景颜色来填充身体,那么就不需要完整的'as-tall-as - 可能的'图像)。
答案 2 :(得分:0)
AH Formatter支持圆角(http://www.antennahouse.com/product/ahf60/docs/ahf-ext.html#rounding-border),FOP 2.0(http://xmlgraphics.apache.org/fop/2.0/changes_2.0.html)也是如此。