FOP: fo:block width 属性被忽略?

Posted

技术标签:

【中文标题】FOP: fo:block width 属性被忽略?【英文标题】:FOP: fo:block width attribute ignored? 【发布时间】:2010-10-27 16:51:33 【问题描述】:

我正在设法从 google-chart 生成一个带有一个折线图的 PDF,但是生成的列标题的质量不符合我们的需求,所以我想自己生成。

此任务应使用 [fo:table] 完成,但我无法成功定位标题(宽度和边距/填充)。

综上,我想用[fo:block]设置宽度属性加上负边距(即width="1.5cm" margin-top="-2em")来放标题,但是宽度不生效。

你知道怎么做吗?

谢谢。

【问题讨论】:

【参考方案1】:

“宽度”属性不适用于 fo:block(请参阅 http://www.w3.org/TR/xsl11/#fo_block)。如果要重新定义宽度,则需要使用 fo:block-container (http://www.w3.org/TR/xsl11/#fo_block-container) 或其他生成所谓参考区域的元素。很难理解您的预期布局到底是什么。也许您还可以尝试使用“start-indent”和“end-indent”属性来间接影响 fo:block 的实际宽度。高温

【讨论】:

我几乎尝试了任何东西:fo:inline-container、max-width、border-before-precedence、last-line-end-indent 以及更多组合,但我没有尝试过你的组合.我给你一个+1,因为它听起来是正确的。非常感谢您的回答。【参考方案2】:

最后我没能做到,因为 [fo:inline] 试图收集所有可用空间。

一个技巧是将边距(左侧或右侧)设置为 90% 或更多以填充该间隙,但我不知道之前的 [fo:inline] 文本被呈现在一个, 两行或多行。

我发现生成列标题的唯一方法是使用 [fo:table] 并为每个单元格添加边距(左右)。

PS:我使用 FOP-0.95

【讨论】:

【参考方案3】:

对于 FOP,您可以使用表格来设置宽度,而不是直接在块上应用它。

【讨论】:

没有人使用 xsl:fo 因为他们想... 不幸的是,html 表单对于电子邮件来说很糟糕,打印也好不了多少。有了 PDF,您就知道自己得到了什么。 我使用 XSL-FO 来呈现餐厅菜单。

以上是关于FOP: fo:block width 属性被忽略?的主要内容,如果未能解决你的问题,请参考以下文章

XSL-FO 忽略最后一个分页符但是如何?

fo:table-cell AntennaHouse 中的 fo:block-container

如何在fo-block中绘制水平线?

FO:XSL 顶点数字上标字母

为啥不忽略具有非法值的 `calc()` 宽度?

xslfo和fop使用中的一些问题