Search code examples
xsltapache-fop

Image not found for background-image attribute of block-container


I have xslt template that generates pdf using Apache FOP. I have problem that background image cannot be found. I have tried absolute paths, relative paths and many else, but nothing happens. Could any of you help me ?

I have tried following paths, but it did not help. c:/Projects/demo/src/main/resources/certificate.png is absolute path

  • background-image="c:/Projects/demo/src/main/resources/certificate.png"
  • background-image="file:///c:/Projects/demo/src/main/resources/certificate.png"
  • background-image="certificate.png"
  • background-image="./certificate.png"
  • background-image="url(certificate.png)"
  • background-image="url(./certificate.png)"
  • background-image="url(c:/Projects/demo/src/main/resources/certificate.png)"
  • background-image="url(file:///c:/Projects/demo/src/main/resources/certificate.png)"
  • background-image="url(file:///./certificate.png)"
<fo:block-container position="absolute" height="210mm" width="297mm"
                                        background-image="c:/Projects/demo/src/main/resources/certificate.png"
                                        background-position="right" background-color="transparent">

                        <!-- Name -->
                        <fo:block-container absolute-position="fixed"
                                            top="95mm">
                            <fo:block
                                    letter-spacing="8px"
                                    font-size="22pt"
                                    color="#333333"
                                    font-family="BrandonBlack"
                                    text-align="center">
                                <xsl:value-of select="data/user"/>
                            </fo:block>
                        </fo:block-container>

                        <!-- Course Name -->
                        <fo:block-container absolute-position="fixed"
                                            top="135mm">
                            <fo:block
                                    letter-spacing="5px"
                                    font-size="19pt"
                                    color="#7b5f6f"
                                    font-family="BrandonBlack"
                                    text-align="center">
                                <xsl:value-of select="data/course"/>
                            </fo:block>
                        </fo:block-container>

                        <!-- Date -->
                        <fo:block-container absolute-position="fixed"
                                            top="189mm" left="214mm">
                            <fo:block
                                    letter-spacing="2px"
                                    font-size="12pt"
                                    color="#333333"
                                    font-family="BrandonBlack">
                                <xsl:value-of select="data/date"/>
                            </fo:block>
                        </fo:block-container>

                    </fo:block-container>

Solution

  • You need to use url() and wrap the URL in single quotes, like so:

    <fo:block-container background-image="url('./certificate.png')" />