如何使用XSL-FO和FOP 1.0创建两列布局?

sim*_*que 6 xsl-fo apache-fop

我有一个软件可以XSL-FO从文本文件创建描述并将其转换为PDF文档.文本文件中的每一行都转换为fo:blockFO,听起来不对,但我现在无法改变它.我的文档包含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>
Run Code Online (Sandbox Code Playgroud)

这似乎是我想要的(当然经过一些微调),但遗憾的是FOP 还不支持 fo:float.

似乎还有一种方法可以创建多个列(没有表格),但我无法弄清楚它是如何工作的.一个似乎需要一个新的页面,但如果有可用的空间我需要使用当前页面(我猜我不必关心).

所以我的问题:还有另一种方法可以不使用它来构建它fo:float吗?

chi*_*org 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>
Run Code Online (Sandbox Code Playgroud)

如果图像需要进一步处理,而这只能通过 进行<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>
Run Code Online (Sandbox Code Playgroud)

第三种选择是使用表格。