我们创建了一张图像,拟在HTML页面及PDF文档中显示。当图像太大时,由于PDF文档一般是A4纸,空间极其有限,可能无法完全显示全部图像。
一种解决的方法是分别为HTML及PDF创建大小不同的图像,然后分别为HTML及PDF指定相应的图像。但这种方法使工作量倍增。
DocBook的<imagedata>的width属性的含义与HTML中的width属性含义不同。对于<imagedata>,width及depth分别指定视口的宽与高,而contentwidth及contentdepth才是分别指定图像的宽与高。当图像尺寸大于视口尺寸时,图像将被裁剪。scalefit属性能自动缩小以适合页面,而当这5种属性一起产生作用时,情况比较复杂,具体可参见http://www.docbook.org/tdg5/en/html/imagedata.html。下面的配置可优先保持原图像尺寸,但在图像尺寸超出有限空间时,自动按比例缩小其大小。
<informalfigure>
<mediaobject>
<imageobject>
<imagedata fileref="test.png" scalefit="1" width="100%" contentdepth="100%" />
</imageobject>
<textobject><phrase>Description of test.png</phrase></textobject>
</mediaobject>
</informalfigure>
注意应同时设置scalefit、width及contentdepth的值才能达到预期效果。
但上面的配置将使HTML的图像也相应变小。由于HTML页面的空间比较宽广,很多情况下我们希望在HTML中保留原尺寸,可在HTML的XSL配置文件中如下设置:<xsl:param name="ignore.image.scaling">1</xsl:param>
这样,生成HTML时将忽略<imagedata>中的属性的设置,而生成PDF时则可以自动根据版面大小来按比例缩小图像尺寸。