[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]