在解析 XSL-FO 模板以创建 PDF 时出错?
Getting an error on XSL-FO template parsing to create PDF?
我正在寻找解决方案以及如何解决通过 XSL-FO 模板语言将 XML 数据解析为 PDF 文件时出现的问题。当用户尝试将数据下载为 PDF 格式时,我无法找出问题的确切原因。
我的异常如下:
"org.apache.fop.events.loggingeventlistener processevent rendered page"
提前谢谢你,我知道这是一个很笼统的问题,但我真的很想知道这个问题的根本原因。
我的XML:
<root>
<name>shyam</name>
<friend>
<name>Abc</name>
<phNo>90909090909</phNo>
<age>32</age>
<closefriends>
<names>test123</names>
</closefriends>
</friend>
<friend>
<name>Xyz</name>
<phNo>32323232323</phNo>
<age>44</age>
<closefriends>
<names>test345</names>
</closefriends>
</friend>
</root>
我的 XSL-FO:
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello,
<xsl:value-of select="name" />!</fo:block>
<fo:block>
<fo:table>
<fo:table-body>
<fo:table-row>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
No.
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
Name
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
Phone Number
</fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:for-each select="./friend">
<xsl:for-each select="./closefriends">
<fo:table-row>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="position()" />
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="name" />
<xsl:value-of select="names" />
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="phNo" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
我添加了我的 XML 和 XSL-FO 供您参考。
您看到的不是出错的地方,只是这里有一些有趣的东西例外:-).
更严重的是,这是一个 INFO
级别的日志消息,告诉您页面已创建:
19-lug-2016 17.36.32 org.apache.fop.events.LoggingEventListener processEvent
INFO: Rendered page #1.
...
在处理大文件时,这是一个有用的指示,表明 FOP 仍在按预期工作,而不仅仅是陷入无限循环。
FOP 的网站上有一个关于这些的页面 feedback messages,其中包含如何以编程方式处理它们的示例(如果需要);否则,你可以忽略它们。
(披露:我是一名 FOP 开发人员,虽然现在不是很活跃)
我正在寻找解决方案以及如何解决通过 XSL-FO 模板语言将 XML 数据解析为 PDF 文件时出现的问题。当用户尝试将数据下载为 PDF 格式时,我无法找出问题的确切原因。 我的异常如下:
"org.apache.fop.events.loggingeventlistener processevent rendered page"
提前谢谢你,我知道这是一个很笼统的问题,但我真的很想知道这个问题的根本原因。
我的XML:
<root>
<name>shyam</name>
<friend>
<name>Abc</name>
<phNo>90909090909</phNo>
<age>32</age>
<closefriends>
<names>test123</names>
</closefriends>
</friend>
<friend>
<name>Xyz</name>
<phNo>32323232323</phNo>
<age>44</age>
<closefriends>
<names>test345</names>
</closefriends>
</friend>
</root>
我的 XSL-FO:
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello,
<xsl:value-of select="name" />!</fo:block>
<fo:block>
<fo:table>
<fo:table-body>
<fo:table-row>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
No.
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
Name
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
<fo:block>
Phone Number
</fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:for-each select="./friend">
<xsl:for-each select="./closefriends">
<fo:table-row>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="position()" />
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="name" />
<xsl:value-of select="names" />
</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black" text-align="center">
<fo:block>
<xsl:value-of select="phNo" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
我添加了我的 XML 和 XSL-FO 供您参考。
您看到的不是出错的地方,只是这里有一些有趣的东西例外:-).
更严重的是,这是一个 INFO
级别的日志消息,告诉您页面已创建:
19-lug-2016 17.36.32 org.apache.fop.events.LoggingEventListener processEvent
INFO: Rendered page #1.
...
在处理大文件时,这是一个有用的指示,表明 FOP 仍在按预期工作,而不仅仅是陷入无限循环。
FOP 的网站上有一个关于这些的页面 feedback messages,其中包含如何以编程方式处理它们的示例(如果需要);否则,你可以忽略它们。
(披露:我是一名 FOP 开发人员,虽然现在不是很活跃)