2017-03-02 19 views
1

2つの列と2つの行といくつかのデータを含む表を表示するために、次のfopコードが生成されています。rtlモードでFopテーブルが正しく表示されない

<?xml version="1.0" encoding="UTF-8"?> 
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<fo:layout-master-set> 
    <fo:simple-page-master writing-mode="rl-tb" master-name="pagesize" page-height="238.5pt" page-width="1020.78pt" margin-left="0pt" margin-right="0pt" margin-top="0pt" margin-bottom="0pt"> 
     <fo:region-body margin-top="0pt" margin-bottom="0pt"/> 
     <fo:region-before extent="0pt"/> 
     <fo:region-after extent="0pt"/> 
    </fo:simple-page-master> 
</fo:layout-master-set> 

<fo:page-sequence master-reference="pagesize"> 
    <fo:flow flow-name="xsl-region-body"> 
     <fo:block-container absolute-position="absolute" writing-mode="rl-tb" font-family="Liberation Sans" font-size="13.25pt" font-style="normal" font-weight="normal" top="20pt" right="20pt" width="1020.78pt" height="238.5pt" background-color="brown"> 
      <fo:table wrap-option="no-wrap" overflow="hidden" border-collapse="separate" background-color="green"> 
       <fo:table-column column-width="69.5625pt"/> 
       <fo:table-column column-width="69.5625pt"/> 
       <fo:table-body> 
        <fo:table-row background-color="#FFFFFF"> 
         <fo:table-cell padding-right="2.48438pt" padding-left="2.48438pt" padding-top="0.49687pt" padding-bottom="0.49687pt" height="24.84375pt" relative-align="baseline" display-align="center" overflow="hidden"> 
          <fo:block-container text-align="right" display-align="center" white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve" overflow="hidden"> 
           <fo:block/> 
          </fo:block-container> 
         </fo:table-cell> 
         <fo:table-cell padding-right="2.48438pt" padding-left="2.48438pt" padding-top="0.49687pt" padding-bottom="0.49687pt" height="24.84375pt" relative-align="baseline" display-align="center" overflow="hidden"> 
          <fo:block-container text-align="center" display-align="center" white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve" overflow="hidden"> 
           <fo:block>Fiscal Calendar</fo:block> 
          </fo:block-container> 
         </fo:table-cell> 
        </fo:table-row> 
        <fo:table-row background-color="#FFFFFF"> 
         <fo:table-cell padding-right="2.48438pt" padding-left="2.48438pt" padding-top="0.49687pt" padding-bottom="0.49687pt" height="24.84375pt" relative-align="baseline" display-align="center" overflow="hidden"> 
          <fo:block-container text-align="right" display-align="center" white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve" overflow="hidden"> 
           <fo:block>Accounts</fo:block> 
          </fo:block-container> 
         </fo:table-cell> 
         <fo:table-cell padding-right="2.48438pt" padding-left="2.48438pt" padding-top="0.49687pt" padding-bottom="0.49687pt" height="24.84375pt" relative-align="baseline" display-align="center" overflow="hidden"> 
          <fo:block-container text-align="right" display-align="center" white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve" overflow="hidden"> 
           <fo:block>#</fo:block> 
          </fo:block-container> 
         </fo:table-cell> 
        </fo:table-row> 
       </fo:table-body> 
      </fo:table> 
     </fo:block-container> 
    </fo:flow> 
</fo:page-sequence> 

</fo:root> 

問題:表は、右RTLモードに並んだが、細胞内の内容は正しい方法で正しいとする整列されません。私は出力をチェックし、writting-modeが右から左にテキストを正しく表示しているテーブルセルに適用されていることを確認してください。しかし、ブロックコンテナにrightおよびabsolute-position属性を与えても、テーブルは正しく整列しません。私はfo:tableに同じ属性を与えようとしましたが、それでも動作しませんでした。

私はapache fop docsをチェックして、属性を正​​しく使用しています。私が何かを逃しているかどうか教えてください。

上記のコードで生成された出力は、下記の画像をご確認ください。 RTL Image

+0

XSL FOを完全に投稿してください.XSL FOは、layout-master-setで開始せず、rootで終わることは確かです。私たちが診断するために上部全体が欠落しています。 –

+0

@KevinBrown OPが誤って[前のリビジョン]の 'fo:root'要素を削除しました。(http://stackoverflow.com/posts/42560731/revisions#rev2717fb4d-c1ce-425d-8a49-e0de073466c7)、私はそれを元に戻しました。そこに何か重要なことはありません) – lfurini

+0

@KevinBrown ..あなたの診断がブロックのコンテナではなく、右に揃うようにテーブルの要素を確認してください。ブロックコンテナの幅をテーブル要素の幅と同じに設定すると、テーブルが右揃えになっていることがわかります。私は、なぜ、テーブル要素の右と位置の属性が正しく整列していないのかを知りたい。 – TheGaME

答えて

1

これは答えではありませんが、それは可能です。これは、あなたが期待するものであるならば、あなたはFOPとバグレポートを提出しなければならない

enter image description here

:RenderX提供でテストされ、出力がこれです。テーブルは右から左に構築する必要があります。

+0

世代のために自分のFOPコードを検討しましたか、カスタムFOPコードですか? – TheGaME

+0

これはあなたが投稿した正確なコードです。 –

+0

私は実際にfopコードをバイトに変換してから、javaを使用してpngイメージとpdfを生成しています。このような変換がFOPテーブルの欠点になるのではないでしょうか? – TheGaME

関連する問題