2014-05-23 7 views
1

Freemarker를 사용하여 각 페이지에서 네 가지 항목을 보여주는 FOP 템플릿을 생성하기 위해 반복 할 개체의 목록이 있습니다.Freemarker와 Apache FOP를 사용하여 항목 목록을 4 블록으로 렌더링하려면 어떻게해야합니까?

각 항목은 페이지의 1/4을 차지해야합니다.

HTML에서는 div가 떠 다니기 때문에 페이지에 맞을 때 함께 흐르게되지만 FOP로 그 작업을 수행하는 방법을 알지 못합니다.

인라인 요소를 사용하여이를 시도했지만 예상대로 작동하지 않습니다. singleCardTemplate.ftl 포함

 <fo:page-sequence master-reference="apage"> 
    <fo:flow flow-name="xsl-region-body"> 
     <fo:block> 
      <#list entries as entry> 
      <fo:inline background-color="blue" border="2px solid black"> 
       <fo:block height="100mm" width="150mm" background-color="red" border="2px solid green"> 
        <#include "singleCardTemplate.ftl"> 
       </fo:block> 
      </fo:inline> 
      </#list> 
     </fo:block> 
    </fo:flow> 
    </fo:page-sequence> 

가 작동하는 것 같군 단일 항목을 렌더링 할 책임이 단지는 전체 폭에 렌더링, 내가 바랬던하지 150mm로. 나는 2x150mm 너비 블록을 서로 옆에 2 개 더 아래에 놓고 싶습니다. 페이지 당 4 개입니다.

Freemarker/FOP 콤보가 제대로 작동하고있어 기쁘게 생각합니다. 위와 같이 올바른 내용과 일부 테두리/색상으로 PDF가 생성됩니다.

내가 뭘 잘못하고 있니?

답변

0

해결 방법을 찾았습니다. 표 레이아웃으로 이동하십시오. HTML 인라인 블록 요소처럼 흘러가는 레이아웃을 사용하고 싶습니다. 그러나 이것은 작동하는 것처럼 보입니다 ...

<fo:flow flow-name="xsl-region-body"> 
     <fo:block> 
      <fo:table table-layout="fixed" height="100%"> 
       <fo:table-column column-width="proportional-column-width(2)"/> 
       <fo:table-column column-width="proportional-column-width(2)"/> 
       <fo:table-body font-size="10pt"> 
        <fo:table-row height="100mm"> 
         <#list entries as entry> 
          <fo:table-cell margin="5mm"> 
           <#include "singleCardTemplate.ftl"> 
          </fo:table-cell> 
          <#assign mod = entry_index % 2 /> 
          <#if entry_has_next> 
           <#if mod == 0> 
            </fo:table-row> 
            <fo:table-row height="100mm"> 
           </#if> 
          </#if> 
         </#list> 
        </fo:table-row> 
       </fo:table-body> 
      </fo:table> 
     </fo:block> 
    </fo:flow>