讓DocBook的圖像尺寸自動適合PDF及HTML

我們創建了一張圖像,擬在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時則可以自動根據版面大小來按比例縮小圖像尺寸。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章