我們創建了一張圖像,擬在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時則可以自動根據版面大小來按比例縮小圖像尺寸。