XSL-FO-如何动态设置页面方向?

时间:2018-11-05 07:26:44

标签: java pdf xsl-fo right-to-left bidirectional

我有XSL个文件,需要由给定的Locale动态呈现。

在此语言环境中,我们将从右向左或从左向右显示PDF。

当前,我有一个原始的XSL文件,该文件需要两面都使用。

我已经添加了writing-mode="rl"以便为该问题提供POC,并且工作正常。

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" writing-mode="rl">

我想从Java代码中了解需要使用什么API,以便将给定的Locale放入此属性,而无需创建我的XSL的副本

我试图在网上找到答案,但找不到我需要的东西。

1 个答案:

答案 0 :(得分:1)

您的Java代码大概可以包括基于语言环境的查找以确定写入模式。 “ How to find out locale-dependent text orientation in java?”问题中的一个例子来自某个不得不自己动手的人。

或者,您可以在XSLT中进行查找。首先,这是一个使用三字母语言标记的XSLT 2.0函数,我在前一阵子对《世界人权宣言》(UDHR)的译文进行格式化时就写了:

<xsl:function name="m:writing-mode" as="xs:string">
  <xsl:param name="lang" />

  <xsl:sequence
      select="if ($lang = ('heb', 'arb', 'pnb', 'skr',
               'ydd', 'pes', 'urd', 'pbu',
               'mly_arab', 'uig_arab',
               'aii', 'div'))
        then 'rl'
        else 'lr'" />
</xsl:function>