[英]unable to generate the PDF from the XML string using xsl-fo in Fop
我正在使用Fop生成PDF文件,并且我具有xml和xsl源来转换xsl-fo对象,但是PDF文件显示为空白,请为此提供帮助...
这是我的Xml响应字符串:
<enqResponse>…<cols><c>ID</c><c>DESCRIPTION</c></cols>….<r><c><cap>1111</cap><i>4</i></c><c><cap>Banks</cap></c></r>… </enqResponse>
这是我的Xslt文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:template match="enqResponse">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page" page-width="50in" page-height="80in">
<fo:region-body margin-top="1in" margin-bottom="1in" />
<fo:region-before extent="2in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:static-content flow-name="xsl-region-before">
<fo:block font-size="12pt" font-weight="bold" text-align="center"><xsl:value-of select="title"/></fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block><xsl:apply-templates select="cols"/></fo:block>
<fo:block><xsl:apply-templates select="r"/></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="cols">
<fo:table table-layout="fixed" width="100%">
<!--<fo:table-column column-width="2in"/>
<fo:table-column column-width="4in"/>
--><fo:table-body>
<fo:table-row>
<xsl:for-each select="c">
<fo:table-cell>
<fo:block><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="r">
<fo:table table-layout="fixed" width="100%">
<!--<fo:table-column column-width="12in"/>
<fo:table-column column-width="12in"/>
--><fo:table-body>
<fo:table-row>
<xsl:for-each select="c">
<fo:table-cell>
<fo:block><xsl:value-of select="cap"/></fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
</xsl:stylesheet>
当我将xml下载为PDF时,它会生成空白的pdf文件,请对此提出您的建议,并让我知道id xslt文件中有任何错误。
当我有带有静态内容的xslt文件,并且它以PDF格式正确显示为带有静态内容的Xslt文件时
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:template match="enqResponse">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body margin="2in"/>
<fo:region-before extent="1.0cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:static-content flow-name="xsl-region-before" >
<fo:block font-size="12pt" text-align="center">Page-1/1</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block space-after="1.0cm">Welcome</fo:block>
<fo:block>
<fo:table table-layout="fixed" width="100%">
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block>No</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Name</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Phone Number</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>Test1</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Test2</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Test3</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
请给出从给定的xml字符串中提取动态数据以生成PDF文件的解决方案...........
使用FOP或XEP(RenderX),我得到带有所生成文本的pdf。 (尽管有些文本不在左边距。)
您确定您的PDF是空白的吗? 由于您正在生成50英寸x 80英寸的页面(哇!),也许您看不到文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.