apache-fop - 如何在 fop xsl-fo 中使用“空白”属性?
问题描述
我正在使用 FOP 2.2 从 xml 文档生成 pdf 文件。FOP 文档在这里http://xmlgraphics.apache.org/fop/
pdf文档生成良好。但是,我不断收到此错误消息。
ERROR: Invalid property value encountered in white-space="pre-wrap": org.apache.fop.fo.expr.PropertyException: null:118:-1: No conversion defined pre-wrap; property:'white-space' (See position 119:-1)
org.apache.fop.fo.expr.PropertyException: null:118:-1: No conversion defined pre-wrap; property:'white-space'
at org.apache.fop.fo.properties.PropertyMaker.make(PropertyMaker.java:446)
at org.apache.fop.fo.PropertyList.convertAttributeToProperty(PropertyList.java:499)
at org.apache.fop.fo.PropertyList.addAttributesToList(PropertyList.java:386)
at org.apache.fop.fo.FObj.processNode(FObj.java:124)
at org.apache.fop.fo.flow.table.TableFObj.processNode(TableFObj.java:232)
at org.apache.fop.fo.flow.table.TableRow.processNode(TableRow.java:82)
at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:291)
at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:179)
at net.sf.saxon.event.ContentHandlerProxy.startContent(ContentHandlerProxy.java:252)
at net.sf.saxon.event.ProxyReceiver.startContent(ProxyReceiver.java:169)
at net.sf.saxon.event.NamespaceReducer.startContent(NamespaceReducer.java:187)
at net.sf.saxon.event.ReceivingContentHandler.startElement(ReceivingContentHandler.java:195)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:262)
at net.sf.saxon.event.Sender.send(Sender.java:128)
at net.sf.saxon.IdentityTransformer.transform(IdentityTransformer.java:28)
xsl 模板具有以下代码:
<xsl:attribute name="style">
<xsl:text>white-space: pre-wrap;</xsl:text>
</xsl:attribute>
解决方案
(我猜您正在使用 XSLT 将 HTML 转换为 XSL-FO,因为style
这不是有效的 FO 属性)
错误消息告诉您这pre-wrap
不是该属性的有效值white-space
;唯一允许的值为normal
,pre
和nowrap
。
但是,在 XSL-FOwhite-space
中只是一个“速记属性”来快速控制一组与空白相关的属性,因此您应该能够直接设置这些属性来达到预期的结果:
linefeed-treatment="preserve"
white-space-collapse="false"
white-space-treatment="preserve"
推荐阅读
- python - 如果相同的设置模式在使用 Pandas 的数据框中再次重复,如何分配唯一的列名?
- highcharts - Highcharts - 标签选项 UI 突然出现
- ios - 苹果评测:此商品已下架【环境沙盒】
- xcode - Xcode 11 场景套件编辑器错误
- javascript - 如何在 blazor(WASM)中解决特定于浏览器的(Firefox)“未设置 .NET 调用调度程序”
- laravel-lighthouse - Laravel Lighthouse 模式验证问题未定义标量混合
- bash - Hadoop -ls 命令
- flutter - Flutter 在使用 BottomNavigationBar 加载的页面之间切换
- javascript - 无法从异步函数获取返回值
- google-sheets - Sumif 但不同行的范围标准