0

Fop を使用して PDF ファイルを生成しています。xsl-fo オブジェクトを変換するための xml および xsl ソースがありますが、PDF ファイルが空白として表示されます。これについて教えてください...

これは、文字列としての私の Xml 応答です。

 <enqResponse>…&lt;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 ファイルが生成されます。これについてご提案をいただき、xslt ファイルに問題がある場合はお知らせください。

静的コンテンツを含む xslt ファイルがあり、静的コンテンツを含む Xslt ファイルを PDF として適切に表示する場合

    <?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ファイルを生成するソリューションを教えてください........

4

1 に答える 1

0

FOP または XEP (RenderX) を使用して、生成されたテキストを含む pdf を取得します。(ただし、一部のテキストは左マージンからはみ出しています。)

PDF が空白でよろしいですか? 50 インチ x 80 インチのページを生成しているので (すごい!)、テキストが見えないだけかもしれません。

于 2012-04-26T15:29:18.830 に答える