2012-11-15 3 views
0

&이 docx 파일의 텍스트 구절을 POI 3.8로 바꿔 넣으려는 시도는 here과 같습니다.Apache POI 3.8에서 사용하기 위해 docx 파일의 조각을 떼어내는 방법은 무엇입니까?

처음 실행시 태그를 삽입하면 정상적으로 작동합니다. 그러나 docx 파일을 다시 열고 수정을하면 Word는 실제로 여러 텍스트를 조각화합니다. 그래서 예를 들어, "안녕하세요 세계는"수 있습니다 :

<w:r><w:t>Hello wo</w:t></w:r><w:r w:rsidR="00FB0672"><w:t>rld</w:t></w:r>

이러한 단편화로 인해 서식 변경 내용 추적 같은 것들로, 그리고 내가 생각 맞춤법 검사합니다.

은 아무도

A) ... MS Word에서이 기능을 사용하지 ... 어떻게 아이디어가 있습니까?

b) ... 어떻게 든 나중에 docx 파일의 조각을 풉니 다.

c) ...이 조각화를 없애기위한 다른 해결책은 무엇입니까?

이미 파일을 .doc/.odt로 저장하고 .docx에 파일을 다시 저장하려고했습니다. 그러나 이러한 분열은 여전히 ​​지속됩니다 ...

도움을 주신 데 대해 감사드립니다. 도움을 위해 미리 감사드립니다!

답변

3

Word에서 원하는 기능과 해제 할 수있는 기능은 맞춤법 및 문법 검사 및 rsid 삽입입니다.

이것은 POI가 아니라 docx4j (내가 관리하는 프로젝트) 용이지만 VariablePrepare은 Word에서 방지 할 수없는 경우 조각 모음을 수행하기 위해 수행해야 할 작업을 보여줍니다. POI는 유사한 XML 정렬/비 정렬 방식 (JAXB가 아닌 XML Beans 임)을 사용하기 때문에 POI API를 사용하도록 해당 코드를 변환 할 수 있어야합니다.

+1

답장을 보내 주셔서 감사합니다. 귀하의 클래스 VariablePrepare를 시도하고 그것은 작동합니다. 그러나 이것은 "hello-world"단어 파일을 위해 130MB 메모리를 소모합니다. 그게 정상인가요? 이제 응용 프로그램 내에서 호출 될 때 anOutOfMemoryException이 발생합니다. MS Word 2010에서 rsid 삽입을 비활성화 할 수있는 옵션이 있습니까? 나는 그것을 발견하지 못했다. 미리 감사드립니다! – salocinx

+0

이 경우 메모리는 JAXB 컨텍스트 초기화 및 XSLT에서 사용됩니다. 각각의 사용법을 알아 내기 위해 프로필을 작성해야합니다. 그러나 130MB는 나를 놀라게하지 않습니다. 더 할당 할 수 있습니까 (-Xmx 등)? – JasonPlutext

+1

Re RSID (http://www.docx4java.org/forums/docx-java-f6/turnoff-rsid-s-spell-check-grammar-check-in-generated-xml-t46.html 참조) 요약 센터 > 개인 정보 옵션> UNCHECK "결합 정확도를 높이기 위해 임의의 숫자 저장" – JasonPlutext