2011-09-29 5 views
4

FOP에서는 자동 줄 바꿈 알고리즘을 사용합니다. 예를 들어 데이터 오버플로가 발생하면 FOP vre 1.0에 대한 이해를 공유하고 싶습니다. 표 셀의 너비 FOP는 데이터에서 공백을 찾고 공백을 발견하면 가장 가까운 공백에서 오버플로 된 데이터를 해당 셀의 다음 줄로 줄 바꿈합니다.FOP 경고 : 단락의 첫 번째 줄이 사용 가능한 영역을 50 개 넘게 오버플로합니다.

그러나 데이터에 공백이 없으면 FOP가 데이터를 랩핑 할 수 없습니다. 이것이 내가 직면 한 문제입니다.

본인은이 코드를 작성합니다.

<fo:table-cell border="solid"> 
<fo:block hyphenate="true" language="en" wrap-option="wrap"> 
<xsl:value-of select="welcomeMsg"></xsl:value-of> 
</fo:block> 
</fo:table-cell> 

하지만 welcomeMsg가 between.I에는 공백이 테이블 셀 내부에 랩 할 welcomeMsg 필요하지와 함께 긴 문자열이기 때문에 대신 wraping의, 테이블 셀에서 오버 플로우.

+0

당신은'welcomeMsg'의 예제를 줄 수 있습니까? 또한, 테이블에서 계속 하이픈 넣기를 위반하는 규칙을 고수하고 있습니까? –

+0

또한 XSLT 2.0을 사용하고 있습니까? –

+0

긴 문자열을 끊기를 원한다면, 그것이 깨 졌을 때 하이픈을 넣을 것인가, 아니면 단지 문자열을 분리 할 것인가? 문자열이 겹침이 선호되는 패턴이 있습니까? –

답변

2

Apache FOP는 줄 바꿈을 위해 Unicode UAX #14 알고리즘을 구현합니다. 따라서 단어 (또는 갯수)가 깨져서 테이블 셀을 오버플로 할 수없는 경우 그 알고리즘 때문입니다. 일반적인 해결 방법은 오버플로를 일으킬 수있는 것으로 알고있는 필드에 너비가 0 인 공백 (&#x200B;)을 삽입하는 것입니다. 이는 XSLT를 통해 쉽게 수행 할 수 있습니다. 또한 : XSL-FO: Force Wrap on Table Entries