2013-05-01 51 views
0

我使用Apache FOP制作PDF生成器,其中一个主要要求是用一系列破折号填充段落的剩余空白区域像这样:XSL + Apache FOP:在段落的其余空白处添加内容

This is a paragraph on a page that will be converted to PDF 
but the remaining space must be filled.------------------- 

This is another paragraph on the same page and again the re 
maining space must be filled.------------------------------ 

棘手的部分是我将使用非等宽字体(可变宽度)字体。此外,段落对齐将被设置为justify。这两个要求是由政府设定的,不能改变(这实际上是有意义的,因为生成的PDF主要用于印刷目的)。

根据我的findings,似乎在FOP中精确计算文本宽度(考虑到变量宽度,字距等)是不可能的。

我目前的解决方案是攻入了xsl:

<fo:block background-image=dash.jpg> 
    <fo:inline background-color=white>This is a paragraph on a page that will be converted to PDF but the remaining space must be filled.</fo:inline> 
</fo:block> 

dash.jpg就是它的尺寸都是经过精心计算的连字符的图像,使其位于右当它穿过一段平铺,考虑到考虑因素如字体高度和间距。 <fo:inline>标记将使用白色背景来覆盖这些短划线,以便它只出现在段落的空白剩余空间中。

但是,这个黑客的问题是黑客:图像高度的计算不能很精确,因为字体大小,间距和边距是使用点而不是像素计算的,这是我自生成的PDF主要用于印刷。

我想不出其他解决方案,因为FOP本身不支持一些属性,如floatdisplay,这实际上可以帮助我更进一步。我想知道你是否有比现在更好的解决方案。所提议的@NavinRawat

答:

<fo:block text-align-last="justify">... a long paragraph ...<fo:leader leader-pattern="dots" /></fo:block> 

回答

0

你有你对内容后试图<fo:leader leader-pattern="dots"/>操纵它是否工作。

+0

确实解决了这个问题。为了达到所需的效果,我在'fo:block'的外部结合了'text-align-last =“justify”'来使用它 – lolski 2013-05-01 08:46:23