2013-02-04 3 views
2

Formatting Object documentation에 따르면 영역 시작 (본문 왼쪽의 영역)은 ~ region-before (헤더)와 region-after (바닥 글)이지만, FOP (v1 .1) region-start는 페이지 상단의 에서 시작하여 오른쪽의 영역을 밀어 넣습니다.region-before가있는 경우 region-start가 페이지 상단에서 시작되는 이유는 무엇입니까?

따라서 생성기가 영역 시작을 배치하도록하는 속성 또는 기타가 있습니까? 이하는 이하입니다. 여기

몇 가지 예제 코드입니다 :

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

<xsl:template match="/"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
     <fo:layout-master-set> 
      <fo:simple-page-master master-name="A4-cover" 
       page-width="210mm" page-height="297mm" margin="12mm"> 
       <fo:region-body margin-top="60mm" margin-left="85mm" /> 
       <fo:region-before extent="55mm" /> 
       <fo:region-start extent="80mm" /> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 

     <fo:page-sequence master-reference="A4-cover"> 
      <fo:static-content flow-name="xsl-region-before"> 
       <fo:block background-color="blue"> 
        Before area 
       </fo:block> 
      </fo:static-content> 

      <fo:static-content flow-name="xsl-region-start"> 
       <fo:block background-color="red"> 
        Start area 
       </fo:block> 
      </fo:static-content> 

      <fo:flow flow-name="xsl-region-body"> 
       <fo:block background-color="green"> 
        Body area 
       </fo:block> 
      </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
</xsl:template> 
</xsl:stylesheet> 

답변

3

먼저 당신이 기본적으로 예상대로 작동해야한다고 생각했다.

그러나 precedence="true"region-before에 설정하여 원하는 동작을 얻으십시오 (region-start이 모퉁이로 뻗어 나가는 것을 방지해야 함). http://www.w3.org/TR/xsl11/#precedence을 참조하십시오.

XSL-FO 사양에는 명확하게 명시되어 있지 않지만 이해할 수 있듯이 precedenceregion-beforeregion-after에만 적용됩니다.

다음은 주제에 대한 토론이 포함 된 메일 링리스트 스레드입니다 : http://apache-fop.1065347.n5.nabble.com/page-layout-bug-td8766.html.

+0

정말 고마워요! 선언하기 전에 지역에 속성을 추가하기 만하면됩니다 :''. – re404

관련 문제