You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLFO:使用XSL Formatter时,4倍数页数的补充页如何置于版权页前?

问题分析与解决方案

需求概述

  • 封面页 + 1张空白页:无页数强制要求
  • 若干章节:页数不限,无强制要求
  • 倒数第二的「注释」章节:至少2页,强制偶数页数
  • 封底空白页 + 含版权声明的封底页:强制总页数为4的倍数(双偶数)

当前问题

封底部分为凑够4的倍数自动添加的空白页,出现在含版权内容的封底页之后,需要调整为补充页放在版权封底页之前。

修改方案

问题根源在于你把force-page-count="end-on-doubly-even"加在了最后一个含版权的页面序列上,XSL Formatter会在该序列末尾补页。要实现补页前置,需调整页面序列结构,将强制计数的时机放在版权页之前:

  1. 新增一个空页面序列,专门用于在进入版权页前补全页数至4的倍数
  2. 版权页序列不再设置强制计数,避免重复补页

修改后的代码片段

<!-- 注释章节(保留原设置) -->
<fo:page-sequence master-reference="XY-letter-page" force-page-count="even" font-family="Arial">
  <fo:static-content flow-name="XY-letter-page-header">
    <fo:block text-align="center">
      
    </fo:block>
    <fo:block font-size="12pt" font-weight="bold" border-bottom="thin solid black" text-align="center">
      <fo:retrieve-marker retrieve-class-name="current-header"/>
    </fo:block>
  </fo:static-content>
  <fo:static-content flow-name="XY-letter-page-footer">
    <fo:block font-size="9pt" font-weight="bold" text-align="center">
      <fo:page-number/>
    </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <fo:marker marker-class-name="current-header">Notes</fo:marker>
    <fo:block/>
  </fo:flow>
</fo:page-sequence>

<!-- 新增:前置补页序列,凑够4的倍数后再进入封底内容 -->
<fo:page-sequence force-page-count="end-on-doubly-even" master-reference="XY-letter-back-cover-page" font-family="Arial">
  <fo:flow flow-name="xsl-region-body">
    <!-- 空内容,仅触发补页逻辑 -->
  </fo:flow>
</fo:page-sequence>

<!-- 封底空白页(保留原设置) -->
<fo:page-sequence force-page-count="no-force" master-reference="XY-letter-back-cover-page" font-family="Arial">
  <fo:static-content flow-name="XY-letter-back-cover-footer">
    <fo:block font-size="9pt" font-weight="bold" text-align="center"><fo:retrieve-marker retrieve-class-name="pub-id"/> - Page <fo:page-number/></fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <fo:marker marker-class-name="pub-id">XY 12345-1-OD-EN</fo:marker>
  </fo:flow>
</fo:page-sequence>

<!-- 含版权的封底页:移除强制计数,确保作为最后一页 -->
<fo:page-sequence force-page-count="no-force" master-reference="XY-letter-back-cover-last-page" font-family="Arial">
  <fo:static-content flow-name="XY-letter-back-cover-header">
    <fo:block text-align="center">
      
    </fo:block>
    <fo:block font-size="12pt" font-weight="bold" border-bottom="thin solid black" text-align="center">
      <fo:retrieve-marker retrieve-class-name="current-header"/>
    </fo:block>
  </fo:static-content>
  <fo:static-content flow-name="XY-letter-back-cover-footer">
    <fo:block font-size="9pt" font-weight="bold" text-align="center"><fo:retrieve-marker retrieve-class-name="pub-id"/> - Page <fo:page-number/></fo:block>
  </fo:static-content>
  <fo:static-content flow-name="XY-letter-back-cover-last-footer">
    <fo:table table-layout="fixed" width="100%" font-size="9pt">
      <fo:table-column column-number="1" column-width="50%"/>
      <fo:table-column column-number="2" column-width="50%"/>
      <fo:table-body>
        <fo:table-row>
          <fo:table-cell display-align="after">
            <fo:block font-size="8pt">
              <fo:inline margin-right="6pt">
                <fo:retrieve-marker retrieve-class-name="pub-id"/>
              </fo:inline>
              <fo:inline>
                <fo:retrieve-marker retrieve-class-name="pub-date"/>
              </fo:inline>
            </fo:block>
            <fo:block font-size="8pt">
              <fo:inline margin-right="6pt">Supersedes <fo:retrieve-marker retrieve-class-name="superseded-pub-id"/></fo:inline>
              <fo:inline> (<fo:retrieve-marker retrieve-class-name="superseded-pub-date"/>)</fo:inline>
            </fo:block>
          </fo:table-cell>
          <fo:table-cell display-align="after" text-align="end">
            <fo:block font-size="8pt">©<fo:retrieve-marker retrieve-class-name="pub-year"/> X-Wing Technologies</fo:block>
          </fo:table-cell>
        </fo:table-row>
      </fo:table-body>
    </fo:table>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
    <fo:marker marker-class-name="superseded-pub-id">XY 12345-1-OD-EN</fo:marker>
    <fo:marker marker-class-name="superseded-pub-date">September 2021</fo:marker>
    <fo:marker marker-class-name="pub-id">XY 12345-1-OD-EN</fo:marker>
    <fo:marker marker-class-name="pub-date">August 2023</fo:marker>
    <fo:marker marker-class-name="pub-month">August</fo:marker>
    <fo:marker marker-class-name="pub-year">2023</fo:marker>
    <fo:block break-before="page">
      <fo:block-container top="7.5in" absolute-position="absolute">
        <fo:block page-break-before="always" font-size="10pt">Copyright Copyright Copyright
          Copyright Copyright Copyright Copyright Copyright Copyright Copyright Copyright
          Copyright Copyright Copyright Copyright Copyright Copyright Copyright Copyright
          Copyright Copyright Copyright Copyright Copyright Copyright Copyright Copyright
          Copyright Copyright Copyright </fo:block>
      </fo:block-container>
      <fo:block-container top="8.5in" absolute-position="absolute">
        <fo:block font-size="8pt" space-before="0.5in">Advertising Advertising Advertising
          Advertising Advertising Advertising Advertising Advertising Advertising
          Advertising Advertising Advertising Advertising Advertising </fo:block>
      </fo:block-container>
    </fo:block>
  </fo:flow>
</fo:page-sequence>

关键说明

  • 前置补页序列使用封底空白页的master,保证补出的页面样式统一
  • 强制计数逻辑提前到版权页之前,确保补页全部出现在封底空白页和版权页之前
  • 版权页设置为no-force,避免在末尾再次生成多余页面

内容的提问来源于stack exchange,提问作者drLocke97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:05:55