如何为 Apache FOP 目录中的每个图像创建页面序列

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

假设我有一个包含 n 张图像的目录。我想每页添加一张图像。

例如:

在名为“Images”的目录中,我有以下 2 张图像:

newpage0.jpg 和 newpage1.jpg

我想将每个图像映射到一个页面上。如何根据目录中存在的图像数量动态创建页面序列? 下面的代码适用于一张图像。

    <fo:page-sequence master-reference="A4">
        <fo:flow flow-name="xsl-region-body">
             <fo:block>
                 <fo:external-graphic src="url(Images/newpage0.jpg)" width="100%"
                  scaling="uniform" content-width="scale-to-fit" />
             </fo:block>
        </fo:flow>
    </fo:page-sequence>

请帮忙。

xslt xslt-2.0 apache-fop
1个回答
0
投票

为了让您将问题标记为已解决,我将我的评论发布为答案。

XSLT 的当前版本是 3.0,自 2017 年以来一直如此。在使用 Apache FOP 的 Java 世界中,您可以轻松地将 XSLT 3.0 与当前版本 12(.4) 的 Saxon HE(可在 Github 和 Maven 上获取)结合使用。

在 XSLT 3.0 中,有 XPath 3.1 函数

uri-collection
,通过一些供应商特定的扩展,Saxon 允许您选择例如
uri-collection('Images/?select=*.jpg')
在该目录中拥有 jpg 文件的集合 URI 序列,然后您可以使用 XSLT 3 中您知道或喜欢的任何构造(
xsl:apply-templates select="uri-collection('Images/?select=*.jpg')
xsl:for-each select="uri-collection('Images/?select=*.jpg')"
xsl:iterate select="uri-collection('Images/?select=*.jpg')"
)来处理该序列并输出
fo:page-sequence
对于序列中的每个项目。

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