Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt XSLFO覆盖图像_Xslt_Xsl Fo_Apache Fop - Fatal编程技术网

Xslt XSLFO覆盖图像

Xslt XSLFO覆盖图像,xslt,xsl-fo,apache-fop,Xslt,Xsl Fo,Apache Fop,我正在使用ApacheFOP创建一个pdf,它有多个页面的内容,每个页面上都有一个水印(半透明)。我在XSLFO方面做了相当多的工作,并通过使用列表功能获得了概念证明——不过我认为有一种更简单的方法。更熟悉xslfo的人能提供更简单的解决方案吗?下面是我的代码: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/X

我正在使用ApacheFOP创建一个pdf,它有多个页面的内容,每个页面上都有一个水印(半透明)。我在XSLFO方面做了相当多的工作,并通过使用列表功能获得了概念证明——不过我认为有一种更简单的方法。更熟悉xslfo的人能提供更简单的解决方案吗?下面是我的代码:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <xsl:output method="xml" indent="yes" />
  <xsl:param name="watermarkPath" />
  <xsl:param name="pdfPages" />
  <xsl:template match="/">

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <fo:layout-master-set>
    <fo:simple-page-master master-name="my-page"
      page-height="11in" page-width="8.5in" margin="0.5in">
      <fo:region-body />
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="my-page">
    <fo:flow flow-name="xsl-region-body">

      <xsl:for-each select="$pdfPages">
        <fo:block-container>
          <fo:list-block>
            <fo:list-item>
              <fo:list-item-label>
                <fo:block>
                  <fo:external-graphic
                    content-width="7.5in">
                    <xsl:attribute name="src">
                    <xsl:value-of
                      select="concat('data:image/png;base64,',.)" />
                  </xsl:attribute>
                  </fo:external-graphic>
                </fo:block>
              </fo:list-item-label>

              <fo:list-item-body start-indent="body-start()">
                <fo:block>
                  <fo:external-graphic
                    content-width="7.5in">
                    <xsl:attribute name="src">
                    <xsl:value-of select="$watermarkPath" />
                  </xsl:attribute>
                  </fo:external-graphic>
                </fo:block>
              </fo:list-item-body>
            </fo:list-item>
          </fo:list-block>
        </fo:block-container>
      </xsl:for-each>

    </fo:flow>
  </fo:page-sequence>
</fo:root>

  </xsl:template>
</xsl:stylesheet>

不确定它是否适用于FOP,但如果它是页面的全尺寸图像

<fo:layout-master-set>
  <fo:simple-page-master master-name="my-page"
    page-height="11in" page-width="8.5in" margin="0.5in">
    <fo:region-body />
    <fo:region-before extent="11in" region-name="myheader" background-image="{path-to-my-image}"/>
  </fo:simple-page-master>
</fo:layout-master-set>

如果没有,则将绝对定位块容器放在区域“myheader”的实际静态内容中,不要使用上面的背景图像

<fo:page-sequence master-reference="my-page">
  <fo:static-content flow-name="myheader">
    <fo:block-container position="absolute" top="XX" left="XX">
       <fo:block>
         <fo:external-graphic .../>
       </fo:block>
     </fo:block-container>
  </fo:static-content>


如果您确实想要覆盖(意味着覆盖所有内容的顶部),请将其放在区域之后而不是之前。

我将背景图像放在区域主体中:

fo:region-body background-image="{$Url}"/