我有一个软件可以从文本文件中创建XSL-FO
描述并将其转换为PDF文档。文本文件中的每一行都转换为FO中的fo:block
,听起来不对,但我现在无法改变它。我的文档包含1到3页的A4。
我现在需要做的是在现有文本下方添加一个宽约8厘米的图形。它应该是左对齐的。在它旁边,我想放置一个带有(长)描述的文本块。
我已经看过几个关于FO的文件并想出了这个:
<fo:block intrusion-displace="block" margin-top="20mm">
<fo:float float="right">
<fo:block margin-left="20mm">
Bacon ipsum dolor sit amet laborum proident...
</fo:block>
</fo:float>
<fo:external-graphic src="image.png"/>
</fo:block>
这似乎是我想要的(当然经过一些微调),但不幸的是FOP does not support fo:float
。
似乎还有一种方法可以创建多个列(没有表格),但我无法弄清楚它是如何工作的。一个人似乎需要一个新的页面,但是如果有可用的空间我需要使用当前页面(我猜我不必关心)。
所以我的问题:有没有其他方法可以在不使用fo:float
的情况下构建它?
答案 0 :(得分:4)
您可以尝试将图像用作背景图像,并留下与图像一样宽的左边距。
<fo:block intrusion-displace="block" margin-top="20mm">
<fo:block padding-left="20mm"
background-image="image.png"
background-repeat="no-repeat">
Bacon ipsum dolor sit amet laborum proident...
</fo:block>
</fo:block>
如果图像需要进一步处理,只能使用<fo:external-graphic>
,则可以使用填充技术和另外一个绝对定位的块容器:
<fo:block intrusion-displace="block" margin-top="20mm">
<fo:block padding-left="20mm">
Bacon ipsum dolor sit amet laborum proident...
</fo:block>
<fo:block-container absolute-position="absolute">
<fo:block>
<fo:external-graphic src="image.png"/>
</fo:block>
</fo:block-container>
</fo:block>
第三种选择是使用表格。