풍부한 Word 문서를 작성할 수있는 Java API가 있습니까? [닫은]


111

표, 그래프, 목차 및 텍스트가 포함 된 Word 문서를 생성해야하는 곳에서 작업 할 새 앱이 있습니다. 이를 위해 좋은 API는 무엇입니까? 그래프, ToC 및 표를 지원한다고 얼마나 확신하십니까? 그것들을 사용하는 데 숨겨진 문제는 무엇입니까?

몇 가지 설명 :

  • PDF를 출력 할 수 없습니다. 그들은 Word 문서를 원합니다.
  • OpenOffice가 아닌 MS Word 2003 (또는 2007)을 사용하고 있습니다.
  • * nix app-server에서 응용 프로그램이 실행 중입니다.

템플릿 문서로 시작하여 표, 그래프 등으로 일부 공간을 채울 수 있다면 좋을 것입니다.

편집 : 아래에 몇 가지 좋은 답변이 있으며 각각 현재 상황에 대한 자체 결함이 있습니다. 그들로부터 "최종 답변"을 고르기가 어렵습니다. 열어 두겠다고 생각하고 더 나은 솔루션이 만들어지기를 바랍니다.

편집 : OpenOffice UNO 프로젝트는 내가 요청한 것과 가장 가까운 것 같습니다. POI는 확실히 주류이지만 내가 원하는 것은 너무 미성숙합니다.


26
이 질문을 마지막으로 편집 한 지 30 개월 후, 그리고 원래 질문을받은 지 3 년이 지나면 얼마나 생산적 일지 잘 모르겠습니다. 제목을 "Java API로 리치 Word 문서를 작성하려면 어떻게합니까?"로 변경 한 경우 이 문제가 해결 될까요?
billjamesdev 2012 년

1
경우에 어떤 일이 가능한 자바 API를의 전체 리뷰가 필요 esupu.com/open-source-office-document-java-api-review
Supun 사 미라

docx 템플릿에서 docx를 생성하기 위해 만든 라이브러리 인 docxtemplater, https://github.com/edi9999/docxtemplater/ 를 볼 수 있습니다
edi9999

1
질문을 다시 열어야합니다. 이 질문은 규칙에 맞게 변경되었으므로이 질문을 다시 열 수있는 권한이있는 사람에게 전화하고 싶습니다. 질문 전 : Word 문서를 작성하는 데 좋은 Java API는 무엇입니까? 이제 질문은 다음과 같습니다. 풍부한 Word 문서를 생성 할 수있는 Java API가 있습니까? 질문은 이제 묻는 사람이 원하는 것을 명확하게 가리키고 있습니다. 그래프, ToC 및 표가있는 Word 문서 만들기. 이 질문은 더 이상 "좋은"Java API를 요구하지 않습니다. 좋은 것은 모든 사람에게 다릅니다.
Sjoerd Pottuit

답변:


56

2007 년에 제 프로젝트는 OpenOffice.org의 UNO ( Universal Network Objects ) 인터페이스를 성공적으로 사용 하여 MS-Word 호환 문서 (* .doc)와 해당 PDF 문서를 Java 웹 애플리케이션 (Struts / JSP 프레임 워크)에서 프로그래밍 방식으로 생성했습니다.

OpenOffice UNO를 사용하면 MS-Office 호환 차트, 스프레드 시트, 프레젠테이션 등을 만들 수 있습니다. 차트와 표를 포함한 정교한 Word 문서를 동적으로 만들 수있었습니다.

소프트웨어가 콘텐츠를 삽입 한 북마크 삽입이있는 템플릿 MS-Word 문서를 사용하여 프로세스를 단순화했지만 문서를 처음부터 완전히 작성할 수 있습니다. 목표는 최종 전달 및 보관을 위해 PDF로 변환하기 전에 최종 사용자가 공유하고 추가로 수정할 수있는 보고서 문서를 소프트웨어가 생성하도록하는 것이 었습니다.

사용자가 MS-Office 대신 OpenOffice를 사용하도록하려면 OpenOffice 형식으로 문서를 선택적으로 생성 할 수 있습니다. 우리의 경우 사용자는 MS-Office 도구를 사용하기를 원합니다.

UNO는 OpenOffice 제품군에 포함되어 있습니다. 우리는 단순히 Java 앱을 제품군 내의 UNO 관련 라이브러리에 연결했습니다. 예제 응용 프로그램과 UNO 개발자 가이드가 포함 된 OpenOffice SDK ( 소프트웨어 개발 키트 )를 사용할 수 있습니다.

최신 OpenOffice UNO가 MS-Office 2007 Open XML 문서 형식을 생성 할 수 있는지 여부를 조사하지 않았습니다.

OpenOffice UNO의 중요한 사항은 다음과 같습니다.

  1. 프리웨어입니다
  2. 여러 언어 (예 : Visual Basic, Java, C ++ 등)를 지원합니다.
  3. 플랫폼 독립적입니다 (Windows, Linux, Unix 등).

다음은 몇 가지 유용한 웹 사이트입니다.


1
지금까지 내가 요청한 도구 세트와 가장 호환됩니다. "수락 됨"으로 표시하겠습니다. POI가 더 주류라는 것을 완전히 알고 있지만 아직 원하는 기능이 없습니다.
billjamesdev 2009

30

Apache POI 가 그 일을 할 수 있다고 생각 합니다. 목표하는 용도에 따라 가능한 문제는 HWPF가 아직 초기 개발 단계에 있기 때문에 발생할 수 있습니다.

HWPF 는 (전용) Java를 사용하여 Microsoft Word 97 (-XP) 문서를 읽고 쓰기위한 API 세트입니다.


그래프 및 테이블 가능성에 대한 지식이 있습니까? 목차는 어떻습니까? 누구나 POI에서 이러한 작업을 수행 한 실제 경험이 있습니까?
billjamesdev

1
POI에 대한 문서를 살펴보면이 HWPF는 개발 초기 단계에있는 것 같습니다. 주로 "복잡한"문서의 동적 생성이 아닌 .doc에서 텍스트를 읽을 수 있습니다.
billjamesdev

더 복잡한 그래프 / 표 등을 처리한다고 생각하지 않습니다.
Brian Agnew


9

이것을 사용할 수 있습니다 : http://code.google.com/p/java2word

Java2Word라는 API를 구현했습니다. 몇 줄의 코드로 하나의 Microsoft Word 문서를 생성 할 수 있습니다.

예 :

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

사용 방법에 대한 몇 가지 예가 있습니다. 기본적으로 하나의 jar 파일이 필요합니다. 설정 방법에 대한 추가 정보가 필요하면 알려주십시오.

* 저는 프로젝트에서 하나의 진정한 필요성이 있었기 때문에 이것을 썼습니다. 내 블로그에서 더보기 :

http : //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

레오나르도를 건배

편집 : 링크의 프로젝트가 https://github.com/leonardoanalista/java2word 로 이동했습니다.


1
실제 MS Word를 사용하여 테스트 했습니까? OpenOffice와 LibreOffice는 읽을 수 있지만 Windows에서 MSWord는 읽을 수없는 파일을 만들었습니다. ( code.google.com/p/java2word/issues/detail?id=16 에서이 문제를보고했습니다 )
Stein G. Strindhaug

2
OpenOffice를 사용하여 java2word 생성 파일을 열 수 없습니까? Office 2010에서 잘 작동
Ashika Umanga Umagiliya

.docx 파일 생성을 지원합니까? @Leonardo
MaheshVarma


4

Aspose.Words for Java를 사용해보십시오. Java가 설치된 모든 OS에서 실행됩니다.

MS Word 출력 형식이 필요한 경우 문서를 DOC, DOCX 또는 RTF로 출력합니다. 모두 똑같이 잘 지원됩니다.

이 API를 사용하면 말 그대로 노드에서 처음부터 문서를 만들고 서식 속성을 설정할 수 있습니다. 또한 테이블 행 만들기, 필드 삽입 등과 같은 상위 수준의 방법을 제공하는 DocumentBuilder를 사용할 수도 있습니다. 또는 계약을 어셈블하고 싶을 때와 같이 미리 만들어진 기존 문서간에 부분을 복사 / 결합 / 이동할 수 있습니다. 여러 문서의 조각과 Aspose.Words는 결과 문서에서 스타일, 목록 서식 등을 적절하게 병합합니다.

Aspose.Words를 사용하여 TOC 필드를 삽입 할 수 있지만 오늘부터 TOC 필드는 Microsoft Word에서 문서를 열 때 필드 업데이트가 필요합니다. 그러나 2010 년 초에 TOC 필드에 대한 완전한 지원을 릴리스 할 예정입니다. 예를 들어 MS Word 에서처럼 완전한 TOC를 빌드 할 것입니다.

저는 Aspose.Words 팀입니다.


4

한 번만 언급되었으므로 다른 무엇보다 docx4j로 더 많은 성공을 거두었으므로 docx4j 라이브러리를 호출하고 싶습니다. Word 문서에 대한 Apache POI의 지원은 그리 좋지 않습니다. 또한 Aspose.Words와 달리 docx4j는 오픈 소스 라이브러리입니다.

유일한 단점은 docx4j를 사용하면 OLE2 기반 (doc) 형식 문서가 아닌 Office Open XML (docx) 형식 문서를 만들어야한다는 것입니다. 이것은 Word 2007의 기본 형식이지만 Word 2003 및 이전 버전 사용자는 호환성 팩을 설치해야합니다.


3

Java 용 Aspose.Words 를 사용해보십시오 .

Aspose.Words for Java는 Java 애플리케이션 내에서 직접 광범위한 문서 처리 작업을 수행 할 수있는 Java 용 고급 (상업용) 클래스 라이브러리입니다.

Aspose.Words for Java는 DOC, OOXML, RTF, HTML 및 OpenDocument 형식을 지원합니다. Aspose.Words를 사용하면 Microsoft Word를 사용하지 않고도 문서를 생성, 수정 및 변환 할 수 있습니다.


2

JACOB 와 같은 Java COM 브리지를 사용할 수 있습니다 . 클라이언트 측의 경우 다른 옵션은 Javascript를 사용하는 것입니다.


감사합니다.하지만 Windows 시스템에서 실행해야하는 것 같습니다. 이것을 읽은 후 호스트 컴퓨터 OS를 명확히했지만 정보에 감사드립니다.
billjamesdev

웹 서버 컴퓨터에서 JACOB를 사용하려면 COM 인터페이스를 통해 Word 문서를 만들고 조작하려면 Word 응용 프로그램의 실제 인스턴스를 가져와야하기 때문에 Microsoft Word 자체가 설치되어 있어야합니다. 일반적으로 다중 사용자 서버에서 이러한 Word + COM을 사용하는 것은 Word가 이러한 용도로 설계되지 않았기 때문에 상당히 문제가됩니다. 예를 들어 문서의 일부를 복제하는 작업은 전통적으로 웹에서는 생각할 수없는 Selection 개체와 Windows 클립 보드를 사용하여 수행됩니다. 서버 머신 설정. (일부 개조하면 되겠 어를 발견 한하지만) 나는 확실히 이것에 의해 점화 한
hello_earth

2

.NET에서 편지 병합을 수행하기 위해 Aspose.Words 를 사용했습니다 . Java 버전도 있다고 생각합니다.


2

오픈 오피스에 연결하여 파일 형식 변환기를 노출하는 JODConverter라는 도구가 있으며 게시하는 웹앱 (톰캣에 있음) 및 명령 줄 도구로 사용할 수있는 버전이 있습니다. 나는 그것에 html을 발사하고 .doc 및 pdf로 성공적으로 변환했습니다. 꽤 큰 프로젝트에 있지만 아직 라이브되지는 않았지만 사용할 것 같습니다. http://sourceforge.net/projects/jodconverter/


2

iText 는 정말 사용하기 쉽습니다.

doc 파일이 필요한 경우 명령 줄에서 abiword (무료 lightweigh multi-os 텍스트 프로세서)를 호출 할 수 있으며 여러 변환 형식 변환 옵션이 있습니다.


1

docx4j 또는 poi (둘 다 ASL v2 임)

@wondersofcomputing : iText는 실제로 무료이며 오픈 소스입니다.


1

조금 더 조사한 끝에 PDF 및 RTF 파일 생성 API 인 iText를 발견했습니다. RTF 생성을 사용하여 Doc을 사용하여 편집하고 다시 저장할 수있는 Doc 읽기 가능한 파일을 만들 수 있다고 생각합니다.

누구나 이런 방식으로 사용되는 iText에 대한 경험이 있습니까?

Bill, POI 및 iText API는 프로그래밍 관점에서 매우 유사합니다. 나는 과거에 두 가지 모두와 함께 일했으며 사용하기 쉽고 잘 문서화되어 있음을 발견했습니다.

iText를 사용하면 코드를 약간만 변경하여 형식 (RTF 및 PDF)간에 전환 할 수있는 이점을 얻을 수 있습니다. 내가 올바르게 기억하면 내용은 동일한 호출을 사용하여 레이아웃 된 다음 몇 줄의 코드를 사용하여 PDF 또는 RTF로 설정됩니다.

그러나 RTF의 형식은 DOC에 비해 제한적이라고 생각합니다. 원하는 고급 기능 (테이블, 인라인 이미지)을 상당한 번거 로움없이 구현할 수 있을지 모르겠습니다.

HWPF에 대해 귀하의 요구에 맞는 기능이 충분하지 않다고 말한 것을 감안할 때 (POI의 Excel 측면 만 다루었습니다) PDF가 작업에 가장 적합한 기술이라는 힘을 확신하는 것이 가장 좋은 방법 일 수 있습니다 .


1

나는 과거에 순수한 XML 기반 단어 파일을 개발했습니다. 나는 .NET을 사용했지만 XML이기 때문에 언어는 중요하지 않습니다. 가장 쉬운 일은 아니 었습니다 (몇 년 전에 필요했던 프로젝트가있었습니다.) 이들은 Word 2007 이상에서만 작동합니다.하지만 필요한 것은 각 태그의 기능을 설명하는 Microsoft의 백서뿐입니다. Word를 사용하는 것과 같은 방식으로 태그로 원하는 모든 것을 수행 할 수 있습니다 (물론 처음에는 조금 더 고통 스럽습니다).


0

조금 더 조사한 끝에 PDF 및 RTF 파일 생성 API 인 iText 를 발견했습니다. RTF 생성을 사용하여 Doc을 사용하여 편집하고 다시 저장할 수있는 Doc 읽기 가능한 파일을 만들 수 있다고 생각합니다.

누구나 이런 방식으로 사용되는 iText에 대한 경험이 있습니까?


iText를 사용하여 RTF로 내보냈는데 약간 비정상적입니다. 예를 들어 TOC가 잘 작동하지 않고 사용하기 정말 쉽지 않습니다 (문서 부족)
AlfaTeK

0

이것은 웹 앱이기 때문에 또 다른 가능성입니다.

MIME 유형이 "application / msword"로 설정된 HTML 페이지를 렌더링 할 수 있었기 때문에 브라우저가 html을 가져 오는 Word를 생성하여 마치 실제 Word 문서를 출력하는 것처럼 편집하고 저장할 수 있습니다.

표는 잘 작동하지만 아직 작동하지 않은 이미지입니다. HTML의 태그처럼 쉬울 수도 있고, 이미지 데이터를 포함하는 응답의 별도 부분을 바이너리로 스트리밍하거나 아직 생각 해보지 못한 다른 방법을 스트리밍해야 할 수도 있습니다. :)


0

이것이 요청보다 훨씬 늦더라도 다른 사람들에게 도움이 될 수 있습니다. Docmosis 는 문서를 템플릿으로 사용하여 doc, pdf, odt 형식의 문서를 생성하기위한 Java API를 제공합니다. OpenOffice를 엔진으로 사용하여 형식 변환을 수행합니다. 문서 조작 및 채우기는 Docmosis 자체에서 수행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.