2017-03-02 20 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로 시작하지 않고 루트로 끝납니다. 진단을 위해 전체 상단 부분이 누락되었습니다. –

+0

@KevinBrown OP는 우연히 [이전 개정판]의 'fo : root' 엘리먼트를 삭제했습니다. (http://stackoverflow.com/posts/42560731/revisions#rev2717fb4d-c1ce-425d-8a49-e0de073466c7), 저는 그것을 다시 편집했습니다. 거기에 아무 것도 중요하지 않음) – lfurini

+0

@KevinBrown .. 진단 할 때 블록 요소가 아니라 테이블 요소가 올바르게 정렬되어 있는지 확인하십시오. 블록 컨테이너 너비를 테이블 요소 너비와 동일하게 설정하면 표가 오른쪽으로 정렬되는 것을 볼 수 있습니다. 왜 테이블 요소에 대한 right 및 position 특성이 올바르게 정렬되지 않는지 알고 싶습니다. – TheGaME

답변

1

이것은 답변이 아닙니다. RenderX 테스트, 출력은 이것이다 : 이것은 당신이 기대하는 경우, 당신은 FOP 버그 신고를해야

enter image description here

. 테이블은 오른쪽에서 왼쪽으로 작성해야합니다.

+0

세대를위한 FOP 코드를 고려 했습니까? 아니면 맞춤 FOP 코드였습니까? – TheGaME

+0

게시자가 게시 한 정확한 코드입니다. –

+0

실제로 fop 코드를 바이트로 변환 한 다음 java를 사용하여 png 이미지와 pdf를 생성합니다. 이런 종류의 변환이 FOP 테이블이 오른쪽에 정렬되지 않는 단점이 될 수 있다면 어떤 생각을 가지고 있습니까? – TheGaME