当前位置: 首页 > 知识库问答 >
问题:

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

苏彦君
2023-03-14

我正在使用FOP生成pdf,我想在pdf中包含每个页面的边框。我正在使用XSLT 2.0。

是否有任何方法或任何属性或任何标记为XSL中的每个页面创建边框?

共有1个答案

龚国源
2023-03-14

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

请注意,严格来说,XSL 建议不允许这样做:

填充和边框宽度特征的值必须为“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 ...)
 类似资料:
  • xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/xsl/transform”\ xmlns:fo=“http://www.w3.org/1999/xsl/format”version=“1.0”> 这就是它在一个XSLs中包含XSLs的方式。在这种情况下,我的FOP没有重定向到那些XSL,因此无法生成PDF 错误: {try{

  • 我有一个软件,可以从文本文件创建描述,并将其转换为PDF文档。文本文件中的每一行都被转换为fo中的,这听起来是错误的,但我现在无法更改。我的文件包含1到3页A4纸。 我现在需要做的是在现有文本下方添加一个宽度约为8厘米的图形。它应该是左对齐的。在它旁边,我想放置一个带有(长)描述的文本块。 我查看了FO的几个文档并提出了这个: 这似乎是我想要的(当然经过一些微调),但不幸的是,FOP还不支持<co

  • 我想使用Apache fop创建一个PDF。要求是我想使用xsl fo样式表在PDF中创建书签。请给我一个如何实现这个的例子。

  • 我有一个针对xml内容和xsl标记运行apache fop的代码,并为我提供apache中间格式输出: 然后我使用中间格式文件来渲染pdf和png文件。我可以在这里设置我自己的serilaizer(FPSIFSeriezer())。 我有几页报告,但我不需要处理所有的报告。是否有任何方法可以跳过某些页面或从IntermediateFormat中提取它们,以便我能够例如仅将第一页呈现为png,然后将

  • 我还在学习如何使用XSL对每个组进行分组?(按国家)我正在尝试使用XSL将此XML转换为另一个XML。

  • 问题内容: 有很多旧文本,例如2002年这本书,指出我们必须使用“ CSS for Web”和“ XSL-FO for print”。我认为,在当今(2012年),我们最终可以将CSS与渲染引擎一起使用,这些引擎能够理解CSS2和CSS3的分页媒体 ……但是,“新文本”,程序员的共识以及软硬件的投资又在哪里? XSL-FO或“ XSL格式设置对象”(W3C标准)是从XML或XHTML内容生成PDF