xsl-fo:删除页面序列中的空(仅页眉/页脚)页面

问题描述 投票:0回答:1

我们使用 XSL-FO 创建 PDF。我们的应用程序的用户可以选择是否希望 PDF 包含某些块。这是使用 XML 文件中的条件来实现的。

虽然默认方向是纵向,但其中一些可选块需要横向方向。

有时,两个可选的横向块之间有一个可选的纵向块。

我们认为纵向是默认的,因此在每个可选的横向块内都有一个初始的

</fo:page-sequence>
结束前一个肖像块的页面顺序,然后是
<fo:page-sequence ...>
参考我们的风景大师。横向块的末尾我们同样切换回纵向,因为通常此后会有一个纵向块。

但情况并非总是如此,因为肖像块也可以被跳过。

因此,我们有时会得到

<fo:page-sequence initial-page-number='1' master-reference='A4-LZ-portrait'>
<!-- content-->
</fo:page-sequence>
<fo:page-sequence initial-page-number='auto' force-page-count='no-force'
                      master-reference='A4-GA-landscape'>
<!-- content-->
</fo:page-sequence>
<fo:page-sequence initial-page-number='1' master-reference='A4-LZ-portrait'>
<!-- NO content, this is just due to switching back to portrait -->
</fo:page-sequence>
<fo:page-sequence initial-page-number='auto' force-page-count='no-force'
                      master-reference='A4-GA-landscape'>
<!-- content-->
</fo:page-sequence>

"no content"
页面序列会导致空白页面。我们怎样才能摆脱这个页面?

旁注:任何方向的页面都始终有页眉和页脚。

xsl-fo
1个回答
0
投票

XSL 1.1 不涵盖空的

fo:page-sequence

一般来说,我建议修改您的应用程序,这样您就不会生成空的

fo:page-sequence
。但是,您可以使用 Antenna House Formatter 来处理它们,因为它明确允许空
fo:page-sequence
(https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#empty-page-顺序)。

XSL 格式化程序还可以运行初始 XSLT 转换(可能默认使用 XSLT 1.0 处理器)。您可以在格式化之前编写一些 XSLT 来删除空的

fo:page-sequence

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
     xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
     xml:lang="en" font-size="40pt">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="spm">
      <fo:region-body/>
    </fo:simple-page-master>
    <fo:simple-page-master master-name="landscape"
               size="A4 landscape"
               background-color="lightyellow">
      <fo:region-body/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="spm">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hello, world.</fo:block>
    </fo:flow>
  </fo:page-sequence>
  <fo:page-sequence master-reference="landscape">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Landscape 1.</fo:block>
    </fo:flow>
  </fo:page-sequence>
  <fo:page-sequence master-reference="spm" />
  <fo:page-sequence master-reference="landscape">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Landscape 2.</fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

© www.soinside.com 2019 - 2024. All rights reserved.