如何使用FOP(xsl和ftl)为PDF生成中的每个页面创建边框?

时间:2019-02-21 11:30:26

标签: xslt xsl-fo apache-fop

我正在使用FOP生成pdf,并且我希望在pdf中的每页都包含边框。我正在使用XSLT 2.0。

是否可以通过任何方式,属性或标签为XSL中的每个页面创建边框?

1 个答案:

答案 0 :(得分:1)

您可以将border属性添加到fo:region-*元素(如果需要,也可以添加padding)。


请注意,严格来说,XSL recommendation不允许

  

填充边框宽度特征的值必须为“ 0”。

FOP的标准行为将以验证错误结束:

SEVERE: Exception javax.xml.transform.TransformerException: 
org.apache.fop.fo.ValidationException: Border and padding for fo:region-body 
"xsl-region-body" should be '0' (See 6.4.14 in XSL 1.1); non-standard values
are allowed if relaxed validation is enabled.  (See position ...)

但是,毕竟这是一个通用用例,其他格式化程序也允许这样做,因此您可以使用松弛验证运行FOP并获得所需的输出:

  • 如果从命令行运行FOP,则添加选项-r
  • 在Java代码中使用FopFactoryBuilder.setStrictFOValidation()方法

您仍然会收到有关非标准行为的警告,但处理过程将继续正常进行:

WARNING: Border and padding for fo:region-body "xsl-region-body" should be '0' 
(See 6.4.14 in XSL 1.1); non-standard values are allowed if relaxed validation
is enabled.  (See position ...)