2010-11-23 16 views
3

私はdocbookで作成された多数のXML文書を持っています。また、mavenを通して、html用とpdf用の両方の形式で公開されています。世代は正常に動作し、HTMLは正常に見えます。私が持っている問題は、pdf版の画像のサイズにあります。画像はスクリーンショットの集まりで、一部はフルスクリーンで、約2/3の幅と高さがあり、その他は小さな検索ボックスです。 imagedataの属性の大規模なリファクタリングを行う必要があることは明らかです。私はそれをどのようにリファクタリングするべきなのだろうと思っていたのですか?私は最大4種類の画像を作成する方法と、独自のサイズ設定を行う方法を探しています。 画像の例は次のようになります。XSL-fo pdfsの画像サイズの問題

<section><title>Screenshot</title> 
    <mediaobject> 
     <imageobject> 
     <imagedata fileref="./views/screenshots/editNote.png" scalefit="0" width="100%"/> 
     </imageobject> 
    </mediaobject> 
    </section> 

そして、それは私のスクリーンショットのサイズのいくつかのために働きます。

私はscalefit、width、およびcontentwidth/contentheightで遊んだことがあり、問題のさまざまな部分を解決しているようです。私もビューポートを調べるべきですか?

注:XSLで「プロパティを除外」を有効にすることができるので、html世代を破る恐れはありません。

+0

エース、それはあなたが求めているものを実際のはっきりしません。あなたは、XSL-FOの属性をスケール・フィット、コンテンツ幅などについて話しているようです。私はあなたが話していると思うので、私はxsl-foであなたの質問にタグを付けました。あなたは "*属性の*リファクタリング*"が意味するものについて詳しく説明できますか? – LarsH

+0

私は元のdocbook xmlとxsl-foをリファクタリングする必要があります。いったんイメージを適切に行う必要があると私は知っています。 – Ace

答えて

1

あなたは@scalefit="1"@scalefit="0"試してみる:ここ

<section><title>Screenshot</title> 
    <mediaobject> 
     <imageobject> 
     <imagedata fileref="./views/screenshots/editNote.png" 
        scalefit="1" width="100%" contentdept="100%"/> 
     </imageobject> 
    </mediaobject> 
    </section> 

は スケーリングの属性を使用するためのいくつかのガイダンスです。

  • 所定の幅にグラフィックをスケーリングする、 は、例えばcontentwidth =「8.5センチメートル」ため、そのサイズに画像データ 要素にcontentwidthを設定します。単位なしで の数値を指定すると、 とみなされます。

  • 幅=「100%」とscalefit =「1」 属性を使用して、印刷出力に 使用可能幅に合わせてグラフィックをスケーリングします。 のリストのようにインデントされたテキストの場合、利用可能な幅は、 現在のインデントから右端までです。それはあまりにも 、 scalefit =「1」を使用し、フィットするように収縮その場合 に、利用可能な幅に合わせて大型= "100幅である場合を除き、その天然のサイズで印刷出力 ためのグラフィックを維持する

  • % "、および contentdepth =" 100% "の属性が含まれます。

...

  • 一部XSL-FOプロセッサは、これらの属性のすべてを をサポートしていません。何が効果があるかを実験するには が必要な場合があります。 の例では、FOPのバージョンは0.20です。5は の幅をコンテンツ幅のように扱い、 は実際のコンテンツ幅 属性を無視します。

http://www.sagehill.net/docbookxsl/ImageSizing.html

+0

scalefit = "1" width = "100%" contentdept = "100%"を追加すると、画面の90%で機能します。私はまだページのヘッダーを超えたり、ページのフッターを超えていくつかを持っています。私はそれらのために何をすべきですか?彼らは高さが高すぎるように見えますが、私はまだ彼らがページに拡大することを望みます – Ace

4

これはあなたが求めていることではありませんが、画像ファイルのDPI設定を正規化しましたか? HTMLレンダリングでは無視されますが、docbook-> PDFレンダリングでは重要です。

これまで私がこれを処理していた時、DPIを修正することで、DocBookのソースをさらに微調整する必要はありませんでした。

+0

私のイメージデータにその属性を追加するのは簡単ですか? – Ace

+1

@Ace、PNGファイルにはDPI情報が埋め込まれています。たとえば、ImageMagickスイートのプログラムでその情報を操作できます。 (例えば、800px幅のPNGを5インチ幅の画像として表示したい場合は、それに応じて 'mogrify -density 160 -units PixelsPerInch image.png'でDPI情報を変更するだけです) –

+0

私のスクリーンショットのすべてが96 * 96 dpiを持っているようです。そのため、小さな画像の一部は幅が広く、ひどく伸びていて、フルスクリーンショットはピクセル化されているようです。なぜ私はこれらの画像を私がMSペイントなどで開けたように見せることができないのですか? – Ace