OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] RE: [docbook] When compiling PDF, relative paths no longer work (Ubuntu serverguide)


Hello Doug,

I'm a lurker on this list and I have a suggestion for you.  I'll 
snip a few things below.  I think your issue is a behaviour change 
between fop versions, not anything with the docbook-xsl stylesheets.

>O.K. what we have only partly resembles what is described in the 
>link. The serverguide project workflow predates my involvement, and 
>the original contributors have long since gone.

As always!  The criminals so often get away!  I know, too, because I 
have been one of those criminals in the past.

I found your Makefile (I think):

  http://bazaar.launchpad.net/~ubuntu-core-doc/serverguide/trunk/view/head:/Makefile

>ubuntu-pdf.xsl:
><xsl:param name="admon.graphics" select="1"></xsl:param>
><xsl:param name="admon.textlabel" select="0"></xsl:param>
><xsl:param name="admon.graphics.path" select="'libs/admon/'"/>
><xsl:param name="admon.graphics.extension" select="'.png'"/>

All fine.

>So, I assume the desired path is relative to where the make command 
>is running, as it runs from the project root directory. Possible 
>related Makefile extractions:
>
>Makefile:UBUNTUPDFXSL=libs/ubuntu-pdf.xsl
>
>serverguide-pdf:
>
>        if [ $(LN) != "C" ]; then \
>                ./scripts/translate.sh -d serverguide -l $(LN); \
>        fi
>        if find serverguide/$(LN) -name "serverguide.xml"; then \
>                xsltproc --xinclude -o $(BASE)serverguide/$(LN)/serverguide.fo $(UBUNTUPDFXSL) serverguide/$(LN)/serverguide.xml; \
>                fop -fo $(BASE)serverguide/$(LN)/serverguide.fo -pdf $(BASE)serverguide/$(LN)/serverguide.pdf; \
>        fi

All fine.  All fine.

>If I change the file locations to absolute, then the PDF compile works:
>
>ubuntu-pdf.xsl:
><xsl:param name="admon.graphics" select="1"></xsl:param>
><xsl:param name="admon.textlabel" select="0"></xsl:param>
><xsl:param name="admon.graphics.path" select="'/home/doug/sguide-trunk/z/libs/admon/'"/>
><xsl:param name="admon.graphics.extension" select="'.png'"/>
>
>But, you see it is impractical to make anyone's particular local 
>path part of the master serverguide project documents.

Of course.

Oh, by the way, I tried out your Makefile on an OpenSUSE 13.2 system 
and can report success, just as well as on an Ubuntu 14.04 system.  
What's the difference?  Just fop.

>Example error message:
>[INFO] FOUserAgent - Rendered page #378.
>[ERROR] FOUserAgent - Image not found. URI: libs/admon/note.png. (See position 13370:482)
>[ERROR] FOUserAgent - Image not found. URI: libs/admon/note.png. (See position 13379:478)
>[ERROR] FOUserAgent - Image not found. URI: libs/admon/note.png. (See position 13470:478)
>[INFO] FOUserAgent - Rendered page #379.

And, you can see that these error messages (which look very much 
like something from java logging lands) are generated from FOP.  
The docbook-xsl stylesheets are creating the serverguide.fo output 
with the correct paths to the files you want, but fop can't find 
the files.

  https://xmlgraphics.apache.org/fop/2.0/changes_2.0.html
  FOP-2306: use the URI of the source FO document rather than the config file as a default base URI

  Ubuntu 14.04 ships with FOP Version 1.1
  Ubuntu 16.04 ships with FOP Version 2.1

I don't know if there is a command-line switch to set the default 
base URI, but I'd imagine there is one.  (I don't have easy access 
to an Ubuntu-16.04 nor a fop-2.1 at the moment....)

A few additional points:

  * The above Makefile fragment could use a slightly safer shell 
    idiom.  Instead of 
      'xsltproc --xinclude $OPTIONS ; fop -fo $OPTIONS
    you should probably do:
      'xsltproc --xinclude $OPTIONS && fop -fo $OPTIONS

  * The Makefile refers to, but never uses the following variable:
    NWDBXSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl

  * The libs/ubuntu-pdf.xsl refers to a filesystem path location for 
    the fo/docbook.xsl file.  This path was not found on my OpenSUSE 
    system, for example, but was found on the Ubuntu system I used.
    You can take advantage of the catalog to refer to the 
    docbook-xsl stylesheets by their well-known (system?) 
    identifier.  Thus, here's a suggested diff:

      -<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl"/>
      +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>

Good luck with the fop issue,

-Martin

-- 
Martin A. Brown
http://linux-ip.net/


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]