2017-03-18 6 views
0

jOpenDocument 라이브러리가있는 java에서 템플릿을 채우려고합니다.ODT 문서의 jOpenDocument가있는 필드의 새 줄

필드에서 새 줄을 시작하고 싶습니다. 일반적인 새 줄 기호 (\ n)가 작동하지 않습니다.

문서에서이 작업을 수동으로 수행하고 xml 파일 (content.xml)을 보면 왜 이것이 작동하지 않는지 알 수 있습니다. 필드의 모든 새 행에 대해 별도의 단락이 있습니다.

그래서 한 개체에서 여러 단락을 결합한 다음 여러 단락 개체로 setField()를 호출하는 방법이 있습니다. 그러나 지금까지는 어떤 해결책도 찾지 못했습니다.

코드 예 :

EngineTemplate template = new RhinoTemplate(templateFile); 
template.setField("nameField", "this is the content\nI wish to be multilined"); 
+0

당신은이 작업을 수행하는 데 사용하는 코드의 조각을 제출 할 수 있다면 그것은 도움이 될 것이다. – Kainix

+0

코드를 추가했습니다 –

답변

0

기본적으로 \n은 기본적으로 건너 뜁니다,하지만 당신은 %enc:와 템플릿에서 필드 이름을 시작하여 변경할 수 있습니다.

는 전처리 된 템플릿 내용의 최종 문서 내용을 생성합니다 : 여기

org.jopendocument.dom.template.engine.Processor 클래스 문서에서 설명이다. 필드의 대체 동작은 접두사로 제어 할 수 있습니다 다음 표현식이 문자열로 치환 된 것

AS_STR. XML 요소의 경우 해당 트리가 출력됩니다.

ENCODE 다음 표현식 toString()하고 부호화하여 org.jopendocument.dom.OOXML.encodeWS (java.lang.String의)와 문자열로 변환한다.

OO_XML 다음 표현식은 toString()을 사용하여 String으로 변환 된 다음 OO XML로 구문 분석됩니다.

이들 중 어느 것도 지정하지 않으면 XML 요소가 접히기 위해 OO XML로 취급되며 그 밖의 값은 필드의 텍스트로 설정됩니다.

그리고 ENCODE 필드는 선언 :

public static final String ENCODE = "%enc:"; 
+0

약간의 예제를 제공해 주시겠습니까? 나는 setField ("nameField", Processor.ENCODE + "multlined \ ncontent");를 시도했지만 이것은 효과가 없었습니다. 필드의 내용은 다음과 같습니다. % enc : multilined content. –

+0

나는 해설을 위해 해답을 편집했다. 접두사는 자바에서의 사용법이 아니라 템플리트의 이름을위한 것이다. 그래서 당신은'% enc : nameField' 템플릿의 필드 이름을 지정해야하고 java에서는'setField ("nameField", "multlined \ ncontent"); – glw