2016-07-19 6 views
2

XSL-FO 템플릿 언어를 통해 XML 데이터를 PDF 파일로 구문 분석하는 동안 솔루션을 찾고 문제를 해결하는 방법을 찾고 있습니다. 사용자가 데이터를 PDF 형식으로 다운로드하려고 할 때 문제의 정확한 원인을 찾는 데 문제가 있습니다. 내 예외는 다음과 같이 XSL-FO 템플릿 파싱에 오류가있어서 PDF를 만드시겠습니까?

"org.apache.fop.events.loggingeventlistener processevent rendered page" 

사전에 감사합니다, 나는 이것이 매우 일반적인 문제입니다 알지만, 정말 같은에 대한 근본 원인을 알고 싶어.

내 XML :

<root> 
<name>shyam</name> 
<friend> 
    <name>Abc</name> 
    <phNo>90909090909</phNo> 
    <age>32</age> 
    <closefriends> 
     <names>test123</names> 
    </closefriends> 
</friend> 
<friend> 
    <name>Xyz</name> 
    <phNo>32323232323</phNo> 
    <age>44</age> 
    <closefriends> 
     <names>test345</names> 
    </closefriends> 
</friend> 
</root> 

내 XSL-FO :

<?xml version="1.0" encoding="iso-8859-1"?> 
    <fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body"> 
     <fo:block>Hello, 
      <xsl:value-of select="name" />!</fo:block> 
     <fo:block> 
      <fo:table> 
      <fo:table-body> 
       <fo:table-row> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        No. 
        </fo:block> 
       </fo:table-cell> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        Name 
        </fo:block> 
       </fo:table-cell> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        Phone Number 
        </fo:block> 
       </fo:table-cell> 
       </fo:table-row> 
       <xsl:for-each select="./friend"> 
       <xsl:for-each select="./closefriends"> 
        <fo:table-row> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="position()" /> 
         </fo:block> 
        </fo:table-cell> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="name" /> 
         <xsl:value-of select="names" /> 
         </fo:block> 
        </fo:table-cell> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="phNo" /> 
         </fo:block> 
        </fo:table-cell> 
        </fo:table-row> 
       </xsl:for-each> 
       </xsl:for-each> 
      </fo:table-body> 
      </fo:table> 
     </fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
    </fo:root> 
</xsl:template> 

내가 참조를 위해 내 XML 및 XSL-FO를 추가했습니다.

+0

시도하고 문제를 재현하기 위해 귀하의 입력 XML 및 XSLT를 추가하십시오 (공개는하지 매우 적극적 요즘 불구하고 I는 FOP의 개발자입니다). – potame

+0

XML 및 XSL-FO로 내 게시물을 업데이트했습니다. – Maniram

답변

1

은 당신이보고있는 것은 단지 여기-IS-뭔가 흥미로운 예외 :-), 예외의 뭔가-갔다-잘못 종류가 아닙니다.

더 심각

, 그것은 페이지가 생성되었음을 알려주는 INFO 수준 로깅 메시지입니다 :

19-lug-2016 17.36.32 org.apache.fop.events.LoggingEventListener processEvent 
INFO: Rendered page #1. 
... 

큰 파일을 처리하는 것이 예상 단지에 갇혀하지 FOP가 여전히 작동하는 유용한 지표이지만 무한 루프.

FOP의 웹 사이트에는 feedback messages에 대한 페이지가 있으며 프로그래밍 방식으로 처리하는 방법에 대한 예가 나와 있습니다 (필요한 경우). 그렇지 않으면 무시할 수 있습니다.

:

+0

그런 말을하는 건가요? XSL-FO 템플릿이 백엔드에서 무한 루프 또는 다른 무언가로 진행되고있는 중입니까? – Maniram

+0

@Maniram 아니, 내가 말하는 것은 ** 아무 것도 잘못 안된다는 것이다. 당신이 보는 유일한 메시지는'INFO : Rendered page # 1'과 같다. 난 당신의 예제를 실행했는데 (잘 짜여져 있지 않은 포함 된 스타일 시트에 누락 된 줄을 추가), PDF 출력은 _fonts_와 _automatic table layout_에 관한 몇 가지 경고만으로 생성되었다. (FOP는 아직 지원하지 않는다. FO 파일에 다른 표시가없는 경우 동일한 크기의 열로). ** PDF를받지 못하면 대답을 편집하여 모든 출력 메시지를 포함 시키십시오. ** – lfurini