我有以下fop代码生成显示与2列和2行与一些数据的表。FOP表在RTL模式下显示不正确
<?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模式下不是右对齐,而是单元格中的内容是右对齐的,这是正确的。我检查了输出,并看到写入模式适用于正确显示文本的表格单元从右到左,但尽管给出了块容器的右侧和绝对位置属性,但表格并没有正确对齐。我试着给相同的属性fo:表仍然没有工作。
我检查apache fop文档,并且正确使用了属性。让我知道如果我失去了一些东西。
请发布完整的XSL FO,当然,您的XSL FO不会以layout-master-set开头并以root结尾。您错过了我们诊断的整个顶部。 –
@KevinBrown OP不小心删除了[之前的版本]中的'fo:root'元素(http://stackoverflow.com/posts/42560731/revisions#rev2717fb4d-c1ce-425d-8a49-e0de073466c7),我把它编辑回来了(不是那里有什么重要的) – lfurini
@KevinBrown ..当你诊断时,请检查表格元素是否正确对齐而不是块容器。如果,我将块容器宽度设置为等于表元素宽度,那么您可以注意到该表正确对齐。我想知道为什么表格元素的right和position属性没有使它正确对齐。 – TheGaME