[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] PDF output of <inlinemediaobject> within lists
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 caporale wrote: > I'm using FOP 0.93 and xsltproc. > > The XML looks like this: > > <orderedlist> > <listitem><para><inlinemediaobject/></para></listitem> > ... > </orderedlist> > > This is what the output looks like: > http://img248.imageshack.us/my.php?image=inlinemediaobjectkl4.png > > Is there any way I can get the list label in line with the rest of it? HTML > output looks fine, and this is what I want it to look like: > > http://img519.imageshack.us/my.php?image=inlinemediaobject2xl2.png > > Thank you, > Joseph Caporale > I was struggling with this issue as well. You'd expect setting valign="middle" to do the job, i.e something like <inlinemediaobject> <imageobject> <imagedata fileref = "icon.png" valign = "middle" /> </imageobject> </inlinemediaobject> But it does not, since the FO xsl stylesheets does insert the right attributes into the <fo:inline> element. Below I include a changed definition of the template <xsl:template name="process.image"> to get it to work (add this chunk to your customization layer). It might have other unexpetcted consequences, but solved the issue. The important part is the setting for the <xsl:if test="@valign"> attribute. Best, Mads <!-- ******************************************************************** Redefine valign such that inline icons get vertical center. ******************************************************************** --> <xsl:template name="process.image"> <xsl:variable name="scalefit"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> <xsl:when test="@contentwidth">0</xsl:when> <xsl:when test="@contentdepth and @contentdepth != '100%'">0</xsl:when> <xsl:when test="@scale">0</xsl:when> <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when> <xsl:when test="@width or @depth">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="scale"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when> <xsl:when test="@scale"> <xsl:value-of select="@scale div 100.0"/> </xsl:when> <xsl:otherwise>1.0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="filename"> <xsl:choose> <xsl:when test="local-name(.) = 'graphic' or local-name(.) = 'inlinegraphic'"> <!-- handle legacy graphic and inlinegraphic by new template --> <xsl:call-template name="mediaobject.filename"> <xsl:with-param name="object" select="."/> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- imagedata, videodata, audiodata --> <xsl:call-template name="mediaobject.filename"> <xsl:with-param name="object" select=".."/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="content-type"> <xsl:if test="@format"> <xsl:call-template name="graphic.format.content-type"> <xsl:with-param name="format" select="@format"/> </xsl:call-template> </xsl:if> </xsl:variable> <xsl:variable name="bgcolor"> <xsl:call-template name="dbfo-attribute"> <xsl:with-param name="pis" select="../processing-instruction('dbfo')"/> <xsl:with-param name="attribute" select="'background-color'"/> </xsl:call-template> </xsl:variable> <fo:external-graphic> <xsl:attribute name="src"> <xsl:call-template name="fo-external-image"> <xsl:with-param name="filename"> <xsl:if test="$img.src.path != '' and not(starts-with($filename, '/')) and not(contains($filename, '://'))"> <xsl:value-of select="$img.src.path"/> </xsl:if> <xsl:value-of select="$filename"/> </xsl:with-param> </xsl:call-template> </xsl:attribute> <xsl:attribute name="width"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> <xsl:when test="contains(@width,'%')"> <xsl:value-of select="@width"/> </xsl:when> <xsl:when test="@width and not(@width = '')"> <xsl:call-template name="length-spec"> <xsl:with-param name="length" select="@width"/> <xsl:with-param name="default.units" select="'px'"/> </xsl:call-template> </xsl:when> <xsl:when test="not(@depth) and $default.image.width != ''"> <xsl:call-template name="length-spec"> <xsl:with-param name="length" select="$default.image.width"/> <xsl:with-param name="default.units" select="'px'"/> </xsl:call-template> </xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="height"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> <xsl:when test="contains(@depth,'%')"> <xsl:value-of select="@depth"/> </xsl:when> <xsl:when test="@depth"> <xsl:call-template name="length-spec"> <xsl:with-param name="length" select="@depth"/> <xsl:with-param name="default.units" select="'px'"/> </xsl:call-template> </xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="content-width"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> <xsl:when test="contains(@contentwidth,'%')"> <xsl:value-of select="@contentwidth"/> </xsl:when> <xsl:when test="@contentwidth"> <xsl:call-template name="length-spec"> <xsl:with-param name="length" select="@contentwidth"/> <xsl:with-param name="default.units" select="'px'"/> </xsl:call-template> </xsl:when> <xsl:when test="number($scale) != 1.0"> <xsl:value-of select="$scale * 100"/> <xsl:text>%</xsl:text> </xsl:when> <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="content-height"> <xsl:choose> <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> <xsl:when test="contains(@contentdepth,'%')"> <xsl:value-of select="@contentdepth"/> </xsl:when> <xsl:when test="@contentdepth"> <xsl:call-template name="length-spec"> <xsl:with-param name="length" select="@contentdepth"/> <xsl:with-param name="default.units" select="'px'"/> </xsl:call-template> </xsl:when> <xsl:when test="number($scale) != 1.0"> <xsl:value-of select="$scale * 100"/> <xsl:text>%</xsl:text> </xsl:when> <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:if test="$content-type != ''"> <xsl:attribute name="content-type"> <xsl:value-of select="concat('content-type:',$content-type)"/> </xsl:attribute> </xsl:if> <xsl:if test="$bgcolor != ''"> <xsl:attribute name="background-color"> <xsl:value-of select="$bgcolor"/> </xsl:attribute> </xsl:if> <xsl:if test="@align"> <xsl:attribute name="text-align"> <xsl:value-of select="@align"/> </xsl:attribute> </xsl:if> <xsl:if test="@valign"> <xsl:attribute name="vertical-align"> <xsl:choose> <xsl:when test="@valign = 'top'">super</xsl:when> <xsl:when test="@valign = 'middle'">middle</xsl:when> <xsl:when test="@valign = 'bottom'">sub</xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> </xsl:if> </fo:external-graphic> </xsl:template> </xsl:stylesheet> - -- +---------------------------------+-------------------------+ | Mads Ipsen | | | Product Support Specialist | phone: +45-35320630 | | Atomistix A/S | fax: +45-35320635 | | Juliane Maries Vej 30 | | | DK-2100 Copenhagen | mpi@atomistix.com | +---------------------------------+-------------------------+ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGg2KLUiXEzEUa8LARAghtAJkBycuJx4rVKLctdWHP9+lgOE25GwCgoIcD ai9wDabaPYGdgmwDHg+SAfE= =Bk9n -----END PGP SIGNATURE-----
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]