2

XSL-FO と Apache FOP を使用してセクシーな XML ファイルを取得し、PDF として出力していますが、特定のビットの情報 (アドレス) を取得しようとして非常に基本的な問題が発生しています。ページの右側、left属性を増やすことで強制的に右側に移動できますが、ページのサイズ、向き、または余白を変更すると、すぐに役に立たなくなります。

以下は XSL のコードです。23 行目のコメントに注意してください。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
    <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
                <fo:simple-page-master master-name="all-pages"
                        page-height="297mm"
                        page-width="210mm"
                        margin-top="1cm" 
                        margin-bottom="1cm"
                        margin-left="1cm" 
                        margin-right="1cm" >
                    <fo:region-body margin-top="5cm" margin-bottom="1.1cm"/>
                    <fo:region-before extent="1cm"/>
                    <fo:region-after extent="5mm"/>
                </fo:simple-page-master>
                <fo:page-sequence-master master-name="default-sequence">
                    <fo:repeatable-page-master-reference master-reference="all-pages"/>
                </fo:page-sequence-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="default-sequence">
                <fo:static-content flow-name="xsl-region-before" font-size="10pt" font-family="Helvetica" >
                    <!-- HERE'S MY PROBLEM, THE RIGHT ATTRIBUTE ISN'T BEHAVING ITSELF -->
                    <fo:block-container absolute-position="absolute" right="4cm" top="1cm" width="6cm"  border-style="solid" border-width="1mm"  >
                        <fo:list-block >
                            <fo:list-item>
                                <fo:list-item-label>
                                    <fo:block></fo:block>
                                </fo:list-item-label>
                                <fo:list-item-body>
                                    <fo:block>ABC</fo:block>
                                </fo:list-item-body>
                            </fo:list-item>
                            <fo:list-item>
                                <fo:list-item-label>
                                    <fo:block></fo:block>
                                </fo:list-item-label>
                                <fo:list-item-body>
                                    <fo:block>123</fo:block>
                                </fo:list-item-body>
                            </fo:list-item>
                        </fo:list-block>
                    </fo:block-container>
                </fo:static-content>
                <fo:static-content flow-name="xsl-region-after" padding-top="2pt" border-top-style="solid" border-top-width="1pt" border-top-color="rgb(192,192,192)" font-size="10pt" font-family="Helvetica">
                    <fo:block></fo:block>
                </fo:static-content>
                <fo:flow flow-name="xsl-region-body" font-size="10pt" font-family="Helvetica">
                    <fo:block></fo:block>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>


</xsl:stylesheet>

このスクリーンショットでわかるように、要素が正しく配置されていません。

代替テキスト

なぜこれが起こっているのか知っている人はいますか?

4

1 に答える 1

4

Buggerは、FOP変更ログを見て、バージョン0.95と1.0の間の2年間で、それがバグであるかどうかを考え、新しいバイナリをダウンロードして、要素を右から配置しています。

于 2010-09-09T09:35:28.120 に答える