2016-11-05 8 views
0

私はこのxsl文書からPDFを生成しています。私は、生成されたPDF全体をカバーするために背景画像を追加しようとしていますが、<fo: block-container>を12行目に含めると、生成時にPDFが破損しています。背景画像を生成する別の方法があるか、 ?XSL-FO背景画像の破損が発生しましたpdf

また、画像を表示したが、上部に境界線を残した<fo:external-graphic>を使用して背景画像を含めることを試みました。しかし、これはホストされたイメージのURLでのみ動作し、ローカルに保存されたイメージでは問題はありませんが、ちょっと奇妙なことがわかりました。

<fo:block text-align="center" display-align="before"> <fo:external-graphic top="-20mm" bottom="-20mm" content-width="210mm" height="150mm" src="url()"> </fo:external-graphic> </fo:block>

`

<xsl:template match="/"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
     <fo:layout-master-set> 
      <fo:simple-page-master master-name="page" page-height="150mm" page-width="210mm" margin-top="10mm" margin-bottom="10mm" margin-left="12mm" margin-right="12mm"> 
       <fo:region-body margin-top="20mm" margin-bottom="20mm" /> 
       <!-- <fo:region-before extent="20mm" /> --> 
       <!-- <fo:region-after extent="20mm" /> --> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="page"> 
      <fo:flow flow-name='xsl-region-body' font-size="20pt"> 
       <fo:block-container absolute-position="absolute" top="-20mm" bottom="-20mm" width="210mm" height="150mm" background-image="/Users/myname/Downloads/background.png"> 
        <fo:block/> 
       </fo:block-container>     
       <xsl:apply-templates select="certificate" /> 
      </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
</xsl:template> 

<xsl:template match="certificate"> 
    <fo:block text-align="center"> 
     <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
     <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
     <xsl:variable name="bgImg" select="/images/background.png"/> 



     <fo:block font-size="30pt" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="first_title" /> 
     </fo:block> 
     <fo:block font-size="14pt" padding-before="3mm" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="student_name" /> 
     </fo:block> 
     <fo:block font-size="14pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="school_name" /> 
     </fo:block> 
     <fo:block font-size="20pt" padding-before="3mm" padding-after="5mm" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="second_title" /> 
     </fo:block> 
     <fo:block font-size="14pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="level_passed" /> 
     </fo:block> 
     <fo:block font-size="14pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="third_title" /> 
     </fo:block> 
     <fo:block font-size="14pt" padding-before="8mm" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="fourth_title" /> 
     </fo:block> 
     <fo:block font-size="14pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="teacher_name" /> 
     </fo:block> 
     <fo:block font-size="14pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="date" /> 
     </fo:block> 
    </fo:block> 
</xsl:template> 

<xsl:template match="student_name"> 
    <fo:block space-before="10mm" space-before.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="student_name" /> 
      <xsl:text>of</xsl:text> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="school_name"> 
    <fo:block space-after="10mm" space-before="5pt" space-after.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="school_name" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="level_passed"> 
    <fo:block space-before="10mm" space-before.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="level_passed" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="teacher_name"> 
    <fo:block space-before="5pt"> 
     <fo:inline> 
      <xsl:value-of select="teacher_name" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="date"> 
    <fo:block space-before="5pt"> 
     <fo:inline> 
      <xsl:value-of select="date" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

`

+0

FO:地域-体が背景画像のプロパティ@持つことができます。あなたはすでにそれを試していますか? – tmakita

+0

@tmakita私は、PDFが生成されると破損するようにしました。 –

答えて

0

これは、私が学生の名前と学校名等のためで引っ張った内容を中心に<fo:block-container>を追加することで解決しました完全なコード

`

<xsl:template match="/"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
     <fo:layout-master-set> 
      <fo:simple-page-master master-name="page" page-height="211mm" page-width="338mm" margin-top="2cm" margin-bottom="2cm" margin-left="3cm" margin-right="3cm"> 
           <fo:region-body/> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="page"> 
      <fo:flow flow-name='xsl-region-body' font-size="20pt" letter-spacing="0.05pt"> 
       <xsl:apply-templates select="certificate" /> 
      </fo:flow> 
      </fo:page-sequence> 
    </fo:root> 
</xsl:template> 

<xsl:template match="certificate"> 


    <xsl:variable name="imageHref"><xsl:value-of select="background"/></xsl:variable> 

     <fo:block-container absolute-position="absolute" 
     top="-2cm" left="-3cm" width="338mm" height="211mm" 
     background-image="{$imageHref}"> 

     <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
     <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
     <xsl:variable name="bgImg" select="/images/background.png"/> 

     <fo:block font-size="45pt" text-align="center" color="#000000" padding-top="4cm" font-family=" Arial, Helvetica, sans-serif"> 
      This <fo:inline font-family="serif" font-size="50pt" font-weight="bold" font-style="italic"><xsl:value-of select="first_title" /></fo:inline> honors 
     </fo:block> 
     <fo:block font-size="20pt" padding-top="5mm" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="student-name" /> 
     </fo:block> 
     <fo:block font-size="20pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="school-name" /> 
     </fo:block> 
     <fo:block padding-top="1cm" font-size="35pt" padding-before="3mm" padding-after="5mm" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      for <fo:inline font-family="serif" font-size="40pt" font-weight="bold" font-style="italic"><xsl:value-of select="second_title" /></fo:inline> the 
     </fo:block> 
     <fo:block font-size="20pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="dropdown" /> 
     </fo:block> 
     <fo:block font-size="20pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="additional-info" /> 
     </fo:block> 
     <fo:block padding-top="1.5cm" font-size="20pt" padding-bottom="5mm" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="fourth_title" /> 
     </fo:block> 
     <fo:block font-size="20pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="teacher-name" /> 
     </fo:block> 
     <fo:block padding-bottom="1cm" font-size="20pt" font-weight="lighter" text-align="center" color="#000000" font-family=" Arial, Helvetica, sans-serif"> 
      <xsl:value-of select="date" /> 
     </fo:block> 
    </fo:block-container> 
</xsl:template> 

<xsl:template match="student-name"> 
    <fo:block space-before="10mm" space-before.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="student_name" /> 
      <xsl:text>of</xsl:text> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="school-name"> 
    <fo:block space-before="5pt" space-after.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="school_name" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="dropdown"> 
    <fo:block space-before="10mm" space-before.conditionality="retain"> 
     <fo:inline> 
      <xsl:value-of select="level_passed" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="teacher-name"> 
    <fo:block space-before="5pt"> 
     <fo:inline> 
      <xsl:value-of select="teacher_name" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

<xsl:template match="date"> 
    <fo:block space-before="5pt"> 
     <fo:inline> 
      <xsl:value-of select="date" /> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 

`

関連する問題