Re: [docbook-apps] rotate figures with a pi

From
<>
Date
2011-10-27T18:02:08+00:00
ID
Thread
Re: [docbook-apps] rotate figures with a pi
Benno

 

I have had similar problems in the past but have solved them with the 
following:

 

     <!-- ============== Flipping a figure 90 
degrees - Landscape  ================== 
     Use it 
this way
     
<figure>
           
<?landscapeFigure?><title>My figure 
title</title>
               
...
      
</figure>
     -->
    
<xsl:template 
match="figure[processing-instruction('landscapeFigure')]">
     
<fo:block-container 
reference-orientation="90"
          
margin-left="0in" 
margin-right="0in"
          
margin-top="0.25in" 
margin-bottom="0in"
          
padding-top="0in" padding-bottom="0in" display-align="before"> 

       
<xsl:apply-imports/>
    
</fo:block-container>
</xsl:template>

This doesn't look much different from yours, but the scale-to-fit come all 
the way through for me. I am using FOP 1.0. I have another similar template 
that is for tables but leaves off the "display-align". On tables the "pgwide=1" 
does work, but not with figures

 

Also, the placement of the PI is very important - right after 
"figure".

 

 

Regards,

Dean Nelson

 

In a message dated 10/27/2011 1:45:22 A.M. Pacific Daylight Time, 
 writes:

Hi,
I 
  have a couple of big pictures which would fit nicely on a a4-page in landscape 
  - orientation. To do so, I used a processing instruction as described in Mr. 
  Stayton's book here. The 
  problem seems that some attributes given to <figure> and 
  <imageobject> does not have an effect to the rendered PDF. I even 
  managed to replace the attribute to figure, pgwide="1", which seems to be 
  ineffective because it's is going to the <fo:block> but not to the 
  <fo:block-container>. That was easy since you just have to put the 
  start-indent="0" attribute to this wrapper in the customization layer like 
  that:

  <xsl:template 
    match="d:figure[processing-instruction('landscapeFigure')]">
     
    <fo:block-container reference-orientation="90" start-indent="0" 
    width="100%" height="auto">
        
    <xsl:apply-imports/>
     
    </fo:block-container>
</xsl:template>

Problem 
  is now that the scalefit="1" - attribute to the <imagedata> - element 
  does not go through to the generated .fo so the picture is still far to big. 
  If the fo file would look like that:

   <fo:block-container reference-orientation="90" 
    start-indent="0" width="100%" height="auto"><fo:block 
    start-indent="0pt">
 <fo:block space-before.minimum="0.5em" 
    space-before.optimum="1em" space-before.maximum="2em" 
    space-after.minimum="0.5em" space-after.optimum="1em" 
    space-after.maximum="2em" keep-together.within-column="auto" 
    id="d0e159">
 <fo:block space-before.optimum="1em" 
    space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" 
    font-size="12pt" hyphenate="false" space-after.minimum="0.4em" 
    space-after.optimum="0.6em" space-after.maximum="0.8em" 
    font-family="inherit" 
    keep-with-next.within-column="always">Description</fo:block>
 <fo:block 
    id="d0e166"><fo:external-graphic src="" 
    width="100%" height="auto" content-width="scale-to-fit" 
    content-height="100%"/></fo:block></fo:block></fo:block></fo:block-container>

  

then the picture would fit on the page perfectly.
Is there a 
  possibility to reach the scale-to-fit - instruction through or give it in the 
  customization layer?

Any answer is 
  appreciated.

Regards,
Benno