2013-09-05 2 views
2

docx4j로 단락을 만드는 데 문제가 있습니다. 사실, 단락 자체는 아니지만 내용입니다. 나는 단락 (실제로는 단락으로 구성된 "블록")의 새 문서를 모으고 있으며 모든 것이 잘 작동합니다. 나는 그들을리스트에 추가 할 것이고, 필요한 모든 단락이있을 때, 나는 그 문서를 모은다. 이제이 블록들 사이에 커스텀 텍스트가 추가 된 새로운 단락이 필요합니다. 나는 단락을 만들려면이 기능을 사용하고 있습니다 :Docx4j로 새 단락 만들기

private P createParagraph(String content) { 

P result = factory.createP(); 
R run = factory.createR(); 
Text text = factory.createText(); 

text.setValue(content); 
run.getContent().add(text); 
result.getContent().add(run); 

System.out.println("HEADER : " + result.toString()); 

return result; 
} 

인쇄는 인쇄 "HEADER"는 result.toString()는 빈 문자열입니다. 왜 그런가요?

보너스 질문 : 새 스레드를 열지 않으려했습니다. 생성 된 html에 나타나는 단락의 ID를 추가하는 것이 가능합니까? (> ... P 아이디 = "XYZ"와 같은

매우 감사

+0

ID 질문에 대해서는 http://stackoverflow.com/questions/18255776/open-xml-add-custom-not에서 내 대답을 참조하십시오. -visible-data-to-paragraph-table/18262734 # 18262734 단락 ID에 대한 추가 질문이있는 경우 별도의 질문으로 게시하십시오. – JasonPlutext

답변

2

을 당신이 당신의 P 객체가 될 것이다 XML을 보려면 다음을 사용하십시오!

System.out.println(
      XmlUtils.marshaltoString(result, true, true)); 

org.docx4j.wml.P가있다 클래스는 JAXB의 xjc에 의해 생성.

이 우리가 toString 메소드를 생성하는 데 사용할 수도 https://java.net/projects/jaxb2-commons/pages/Home에 나열된 플러그인의 몇 가지가 있지만 우리가하지 않았다.

문단의 텍스트 내용을 원할 경우 TextUtils

+0

감사합니다. 단락에서 원하는 텍스트 만 사용하여 빈 문서를 만들었습니다. 당신이 언급 한 방법을 사용하여 구조를 점검했습니다. 필자는 누락 된 태그를 모두 추가했으며 이제는 docx4j 웹 응용 프로그램에 표시된 내 문서와 정확히 동일하게 보입니다. 유일한 차이점은 내 시작 요소에 많은 네임 스페이스 정의가 있습니다. omniflash

+0

내 대답을 업데이트했습니다. 네임 스페이스와 관련해서는 일반적으로 파트의 맨 위에서 한 번 선언됩니다 (각 단락과 반대 됨). JAXB는이를 처리 할 것입니다. 하지만 Sun/Oracle 구현은 중복 된 것을 제거하지 않습니다. – JasonPlutext