Search code examples
xmlxsltxsl-fo

XSL-FO external-graphic not showing


I'm having some issues getting the external-graphic to show in my PDF. I've tried using all sorts of paths using the url() but nothing seems to work. Is it something else I'm missing?

<fo:table-cell>
    <fo:block>
        <fo:external-graphic src="url(ss/naam.png)"></fo:external-graphic>
    </fo:block>
</fo:table-cell>

Solution

  • I am using Apache FOP 1.1 Ver.

    first you should tell apache FOP that where is base path in follwing way. You should copy code as it is.

        fopFactory = FopFactory.newInstance();
        // for image base URL : images from Resource path of project
        String serverPath = request.getSession().getServletContext().getRealPath("/");
        fopFactory.setBaseURL(serverPath);
        // for fonts base URL :  .ttf from Resource path of project
        fopFactory.getFontManager().setFontBaseURL(serverPath);
    

    In your XSL template file

    <fo:table-cell>
        <fo:block>
            <fo:external-graphic src="url(resources/naam.png)"></fo:external-graphic>
        </fo:block>
    </fo:table-cell>
    

    Here naam.png will be in resources/ directory

    I added all images and required font font files in resource director of my project. It is working fine for me. Thank you