2015-09-02 23 views
1

我正在使用Dita-OT 2.1.0,并试图为我的Dita文档定制PDF输出。我的文档由很多表格组成,这些表格可以是短的或多页的。如果可能的话,我想要做的是防止表破坏多个页面。例如我希望在表格之前有一个新页面,如果这样可以防止表格分成两页。将表格保存在PDF上的单页中

我想是什么把这个成我的custom.xsl

<xsl:attribute-set name="tbody.row"> 
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute> 
</xsl:attribute-set> 

这似乎这样做行留样同一页面上,但如果一行是足够长的时间去到下一个页面,然后它去那里,而不是仅仅移动整个桌子..任何想法如何解决这个问题?

对于设置

<xsl:attribute-set name="table"> 
    <xsl:attribute name="keep-together.within-page">always</xsl:attribute> 
</xsl:attribute-set> 

它仍然无法正常工作。现在表格保持在同一页面上,但长于1页的表格不能完全显示。

回答

1

你也应该是这样的:

<xsl:attribute name="keep-together.within-page">1</xsl:attribute>

的答案可能的解释可以在这里找到: http://www.dpawson.co.uk/xsl/sect3/keepsNbreaks.html

+0

这看起来很有前途。谢谢!目前唯一的问题是,即使表格进入下一页,每个页面末尾都有黑色边框表示表格末端。所以一张桌子有两个“结局”,但只有一个“开始”边界。 – burm

+0

我不确定,可能是Apache FOP中的一个错误。也许你也可以尝试像XEP或Antenna House这样的商业处理器。 –

0

的问题是一个棘手的,因为你要交易的灵活性为输出的外观。您可以向表中添加outputclass属性以使输出在表之前中断并更改表处理,以便将表包含在fo中应用了break-before属性的块中。我还没有看过表格的基本代码,但它可能需要您创建一个选择方案来应用该块。

0

在单程过程中不可能做到你想要的。

如果一个表可以容纳一个页面上,你可以使用保together.within页给力的是,但在当时你生成表有知道该表将有多大没有通用的方法。

FO没有提供任何方式来说“只有在整个页面都适合的情况下,才将整个表格保留在页面内,否则根据需要将其分开”。

有多种方法可以进行多通道处理,以便您可以更精确地调整表格布局,但这需要一些自定义编程,并且依赖于特定的FO引擎(尽管有一个选项可以与天线众议院或FOP:http://www.w3.org/community/ppl/wiki/XSLTExtensions

一个折衷的解决方案是使用保持与 - 下一个第一ñ行,以确保表不会太早突破,但只有当该行是一致的深度作品 - 如果行深度可能差异很大,那么您仍可能遇到第一行超过一页然后繁荣的情况。

相关问题