2017-03-28 1 views
-1

저는 XSL-FO의 초보자로서 대차 대조표 용 PDF를 생성하는 방법을 알고 싶어합니다. 그렇다면 어떻게 XSL-FO에서 템플릿을 만들어야합니까? 대차 대조표 테이블의 행 수는 특정 기간의 사용자 레코드에 따라 달라집니다. 대차 대조표의 레코드는 Java의 API 호출에서 나옵니다. XSL-FO에서 템플릿을 생성하는 방법에 대한 지침이 필요합니다.테이블을 변경하는 XSL-FO에서 템플릿을 만드는 방법. 의 행을 PDF를 생성하려면?

간단한 예제는 은행에 계좌를 가지고있는 사용자를 위해 PDF를 생성하는 것입니다. PDF에는 지난 달 사용자의 거래 내역이 표 형식으로 포함됩니다. 그래서 아니오. 테이블에있는 레코드의 수는 아니오에 따라 달라질 수 있습니다. 다른 사용자가 수행 한 트랜잭션

트랜잭션 목록은 XS1-FO에서 생성 될 TEMPLATE로 채워야하는 레코드가 들어있는 JAVA API 호출을 통해 전달됩니다. 어떻게 동적 데이터가 변수 no로 채워지 는가? XSL-FO의 행 수 ?????? 예는 당신이 당신의 PDF에서 원하는 모든 데이터와 XML 문서를 생성해야합니다,

+1

입력 한 내용과 시도한 내용을 게시하십시오. 어떤 입력 또는 예상 출력을 표시하지 않고도 문제가 해결 될 수 없습니다. –

답변

-1

먼저 사전에

감사합니다 도움이 될 것입니다.

<userData> 
    <id>1234</id> 
    <firstName>John</firstName> 
    <lastName>Doe</lastName> 
    ... 
    <balance>3526.35</balance> 
    <scripture> 
     <date>2017-02-20<date> 
     <label>Online payment to Amazon.com</label> 
     <amount>-92.25</amount> 
    </scripture> 
    <scripture> 
     <date>2017-01-27<date> 
     <label>Salary</label> 
     <amount>12000</label> 
    </scripture> 
    ... 
</userData> 

그런 다음 입력과 같은 구조를 취할 XSL-FO 템플릿을 작성해야합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:fo="http://www.w3.org/1999/XSL/Format" 
     xmlns:xlink="http://www.w3.org/1999/xlink" 
     xmlns:svg="http://www.w3.org/2000/svg"> 
    <xsl:output method="xml" encoding="UTF-8"/> 
    <xsl:template match="userData"> 
     <fo:root> 
      <fo:layout-master-set> 
       <fo:simple-page-master master-name="only" 
         page-width="21cm" page-height="29.7cm" 
         margin-top="2.5cm" margin-bottom="1.5cm" 
         margin-left="4.5cm" margin-right="2.5cm"> 
        <fo:region-body/> 
        <fo:region-after extent="1cm"/> 
       </fo:simple-page-master> 
      </fo:layout-master-set> 
      <fo:page-sequence master-reference="only"> 
       <fo:flow flow-name="xsl-region-body"> 
        <fo:wrapper font-size="12pt" 
          font-family="Arial, Geneva, Helvetica, sans-serif"> 
         <fo:block font-weight="bold" space-before="1.5cm"> 
          ID: <xsl:value-of select="id/text()"/> 
         </fo:block> 
         <fo:block font-weight="bold"> 
          User: <xsl:value-of select="lastName/text()"/>, <xsl:value-of select="firstName/text()"/> 
         </fo:block> 
         <fo:block font-weight="bold"> 
          Balance: <xsl:value-of select="balance/text()"/> 
         </fo:block> 
         <fo:table table-layout="fixed" 
           space-before="1.5cm" 
           space-after="1.5cm"> 
          <fo:table-column column-width="2cm"/> 
          <fo:table-column column-width="5.5cm"/> 
          <fo:table-column column-width="5cm"/> 
          <fo:table-body> 
           <fo:table-row> 
            <fo:table-cell> 
             <fo:block font-weight="bold"> 
              Date 
             </fo:block> 
            </fo:table-cell> 
            <fo:table-cell> 
             <fo:block font-weight="bold"> 
              Label 
             </fo:block> 
            </fo:table-cell> 
            <fo:table-cell> 
             <fo:block font-weight="bold"> 
              Amount 
             </fo:block> 
            </fo:table-cell> 
           </fo:table-row> 
           <xsl:for-each select="scripture"> 
            <fo:table-row> 
             <fo:table-cell> 
              <fo:block> 
               <xsl:value-of select="date/text()"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block> 
               <xsl:value-of select="label/text()"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block> 
               <xsl:value-of select="amount/text()"/> 
              </fo:block> 
             </fo:table-cell> 
            </fo:table-row> 
           </xsl:for-each> 
          </fo:table-body> 
         </fo:table> 
        </fo:wrapper> 
       </fo:flow> 
      </fo:page-sequence> 
     </fo:root> 
    </xsl:template> 
</xsl:stylesheet> 
+0

@Maurice에게 감사 드려요.하지만 내 질문에 답할 수 없습니다. 수. 행의 수는 해당 사용자의 트랜잭션 레코드를 기반으로합니다. 어떻게 데이터를 채우는가? – tarun

+0

@tarun이 예에서는 성경이라고 불렀습니다. 사용자 레코드 당 여러 개의 숫자가있을 수 있습니다. –

+0

자바 코드에서 내 데이터를 HashMap으로 가져옵니다. 그 hashMAp를 테이블로 변환하고 싶습니다. Xml을 사용하지 않고 Xsl : fo 만 사용하십시오. 이것을 파악할 방법이 있습니까? – tarun

관련 문제