That does indeed get me the border, so much appreciated.

However, to tweak it just a little more... I had set up my images to be 90%
of page width, like this:

<figure pgwide="1">
 <title>some caption</title>
 <mediaobject role="screenshot">
  <imageobject>
   <imagedata fileref="media/usrprf.export1.png" scalefit="1"
align="center"width
="90%"/>
  </imageobject>
 </mediaobject>
</figure>
...and your suggested example draws the border full page width.  I tried
fiddling with the template, like this :

 <xsl:template match="mediaobject[@role='screenshot']">
 <fo:block border="0.5pt solid black" width="90%">
  <xsl:apply-imports/>
 </fo:block>
 </xsl:template>
...but the "90%" in the fo:block is apparently not used.  So I have empty
white borders either side, within the outline.  I can of course make the
images 100% wide but that scales them vertically too, using excessive paper
area.  Also, I'm a little uneasy about forcing 90% anyway on the template,
I'd like it to stick to the image if possible.

What solutions should I consider?

Thanks,
Christopher



On 7 November 2012 20:12, Bob Stayton <[email protected]> wrote:

> **
> Indeed, there is not an attribute-set for mediaobject itself.  I suspect
> that because there are so many attributes on the graphics elements that
> must be supported, that another attribute-set might introduce complicated
> interactions.
>
> Fortunately, there is an easy way to get a border.  Any time you want to
> add features outside of an element itself, you can use xsl:apply-imports.
> Try this:
>
> <xsl:template match="mediaobject">
>   <fo:block border="0.5pt solid black">
>     <xsl:apply-imports/>
>   </fo:block>
> </xsl:template>
> This will add a fo:block container with a border, and put the image inside
> it.  Unless you have already customized the template matching on
> mediaobject, the apply-imports will fall back to the original DocBook
> template for it.
>
> Bob Stayton
> Sagehill Enterprises
> [email protected]
>
>  *From:* Christopher BROWN <[email protected]>
> *Sent:* Wednesday, November 07, 2012 9:08 AM
> *To:* DocBook Apps list <[email protected]>
> *Subject:* [docbook-apps] Adding a border around a DocBook <imageobject>
> in PDF output
>
> Hello,
>
> I have some screenshots to include as part of a user manual I'm compiling
> with DocBook, and several are on white backgrounds and contain mainly text,
> so doesn't mix well with other text layout on the page.  I tried to find
> out how to add a border by regarding DocBook XSL documentation,
> specifically:
>
> - http://www.sagehill.net/docbookxsl/BordersAndShading.html
> - http://www.sagehill.net/docbookxsl/Graphics.html
>
> ..and the best I could do was following the second link, add a border
> around the <figure> element (so it not only goes around the image, but also
> around the <title>, leaving a lot of whitespace around the image).
>
> I then tried working out how add borders using the first link instead, so
> that I'd only outline the image itself, but none
> of <mediaobject>, <imageobject>, or <imagedata> appear in the list of
> elements that recognize the attribute-sets referred to there.  A little
> further on, it says "you will want to find out where the outer fo:block is
> output..." but I don't know what I'm looking for based on that advice, nor
> how to find it, nor what to do with it (I'm a bit worried that I might
> accidentally clobber something too by matching the template in a
> higher-precedence customization layer).
>
> Thanks,
> Christopher
>
>

Reply via email to