XSL-FO 在break-before创建空页时删除静态内容

XSL-FO Remove Static Content when break-before creates empty page

提问人:CrazyEight 提问时间:2/28/2020 更新时间:2/28/2020 访问量:433

问:

我已将它们添加到我的 xml 元素中,它们被迫呈现在偶数页或奇数页上。我已经用属性完成了这个,或者也.到目前为止,一切正常!break-before="odd-page"break-before="even-page"

我的问题是,可能会创建一个空页面,例如,当一个元素已经在偶数页上,然后被迫在偶数页上开始时。创建的空页面(只有正文是空的)仍然与之前的页面相同。static-content

但是我希望在这种情况下插入一个完全空白的页面,没有页码、页眉或类似内容。

这在某种程度上可能吗?

我正在使用 Apache-Formatting-Objects-Processor 2.3 (fop 2.3)

xslt xsl-fo apache-fop

评论


答:

2赞 Tony Graham 2/28/2020 #1

您需要一个 (请参见 https://www.w3.org/TR/xsl11/#fo_conditional-page-master-reference) 值 (请参见 https://www.w3.org/TR/xsl11/#blank-or-not-blank) 。fo:conditional-page-master-referenceblank-or-not-blankblank

第一个所有特征都为真的是被选中的那个,所以新的应该在你之前,指的是奇数和偶数页面的页面母版。下面是一个来自 FOP 测试文件的例子(我认为):fo:conditional-page-master-referencefo:conditional-page-master-referencefo:conditional-page-master-reference

<fo:page-sequence-master master-name="pages">
  <fo:repeatable-page-master-alternatives>
    <fo:conditional-page-master-reference page-position="first" master-reference="first-page"/>
    <fo:conditional-page-master-reference page-position="last" master-reference="last-page"/>
    <fo:conditional-page-master-reference blank-or-not-blank="blank" 
      master-reference="blank-page"/>
    <fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-page"/>
    <fo:conditional-page-master-reference odd-or-even="even" master-reference="even-page"/>
  </fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>

对于完全空白的页面,解决方案的第二部分不是将现有页面定向到空白页上的任何区域。for 空白页不应包含 等,或者,如果包含它们,则这些区域的值应与现有 . 中的值不同。fo:static-contentfo:simple-page-masterfo:region-afterregion-nameflow-namefo:static-content

评论

0赞 CrazyEight 2/28/2020
但奇数或偶数总是正确的......所以他永远不会接受.它甚至不是文档的第一页或最后一页。它可以是 ....<fo:conditional-page-master-reference blank-or-not-blank="blank" master-reference="blank-page"/>page-sequence
0赞 Tony Graham 2/28/2020
因为 (它的默认值) 总是 true 和 (它的默认值) 总是 true,所以格式化程序将用于任何空白页(因为这会使 trait 为 true,因此所有三个 trait 都是 true)。对于非空白页(在本例中,页面序列的第一页和最后一页除外),格式化程序不会选择“空白页”页面母版。它将落入考虑,然后.odd-or-even="any"page-position="any"<fo:conditional-page-master-reference blank-or-not-blank="blank" master-reference="blank-page"/>blank-or-not-blankodd-or-even="odd"blank-or-not-blank="even"
0赞 Tony Graham 2/28/2020
对不起,如果我之前不清楚。当每个新页面被添加到页面序列中时,格式化程序会遍历(参见 w3.org/TR/xsl11/#fo_repeatable-page-master-alternatives)中的替代项,以确定要使用的页面母版。格式化程序会按顺序遍历每个新页面的备选方案。(您可以在 中放置多个页面,并且可以限制可以生成的页面数,但这是基础知识。fo:repeatable-page-master-alternativesfo:repeatable-page-master-alternativesfo:page-sequence-masterfo:repeatable-page-master-alternatives