我们使用 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 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>