2012-07-26 53 views
6

我有一段軟件從文本文件創建XSL-FO說明並將其轉換爲PDF文檔。文本文件中的每一行都會在FO中轉換爲fo:block,這聽起來不對,但我現在無法更改。我的文件包含1到3頁的A4。如何使用XSL-FO和FOP 1.0創建兩列布局?

我現在需要做的是在現有文本下面添加一個寬度大約爲8釐米的圖形。它應該是左對齊的。在它旁邊,我想放置一個帶有(長)描述的文本塊。

Layout example

我看過了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 supportfo:float呢。

似乎還有一種方法來創建多個列(沒有表),但我一直無法弄清楚它是如何工作的。一個似乎需要一個新的頁面,但我需要使用當前頁面,如果有可用空間(我不必關心我猜)。

所以我的問題:有沒有另一種方法來建立這個沒有使用fo:float

+4

+1用於燻肉ipsum。 :-) – 2012-07-26 14:32:12

+1

兩列無濟於事。如果文字大於圖像,則列平衡器將在圖像下面開始文本*並在下一列繼續。如果文字肯定比較小,那麼表格看起來不錯。 – bytebuster 2012-07-29 02:07:18

回答

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> 

第三種選擇是使用一張桌子。