ti-enxame.com

Apache POI ou docx4j para lidar com documentos docx

O que você acha Qual é melhor usar para ler o documento docx como objetos Java e por quê?

em outras palavras. qual biblioteca suporta a maioria das tags do Word?

18
becks

Divulgação: eu lidero o projeto docx4j

Embora o docx4j também possa manipular pptx e xlsx, ele é usado principalmente para manipulação de docx. A título de ilustração, como no momento da redação deste artigo, existem quase 1000 tópicos no fórum docx4j . O fórum pptx possui apenas 10% do volume.

Tudo o que você deseja fazer com o documento docx, o docx4j deve poder ajudá-lo. Existe um visão geral de página única de um fluxo de trabalho genérico.

Para muitos requisitos comuns, o docx4j fornece API de nível superior. Esses incluem:

  • Criar/abrir/salvar docx (é claro)

  • Geração de relatório/documento, usando uma variedade de abordagens: (i) substituição variável, (ii) ligação de dados XML (particularmente forte) e (iii) Mailmerge

  • Exportar como HTML, XHTML

  • Exportar como PDF (com suporte a fontes)

Para qualquer outra coisa, você pode manipular a representação JAXB do docx no conteúdo do seu coração. JAXB é um Java padrão da comunidade, incluído em Java 6, e com uma forte implementação alternativa no MOXy do EclipseLink. (POI usa XML Beans em vez de JAXB))

Existe um aplicativo da web para ajudá-lo a explorar um docx e gerar o código Java para criar os objetos Java correspondentes).

Obviamente, se houver alguma tarefa específica em mente, pode ser que o docx4j ou o POI possua uma força específica.

O docx4j e o POI são licenciados em ASL v2.

docx4j é mantido ativamente; seu código fonte é no GitHub .

Além disso, o suporte comercial está disponível para o docx4j, se você desejar, assim como várias extensões comerciais, por exemplo, MergeDocx .

o docx4j depende do POI como uma biblioteca para sua implementação do formato OLE 2 Documento Composto 2, pelo qual somos gratos.

23
JasonPlutext

Tentei o Apache POI, mas o problema é ao imprimir qualquer coisa do arquivo docx (por exemplo: para imprimir todos os elementos "Cabeçalho1" do docx), ele obtém muitos dados e espaços em branco incorretos. Docx4j vai evitar esses dados ruins, eu tentei.

2
Venkatesh Dhanasekaran

Eu acho que o foco principal do Apache POI é lidar com planilhas, embora eu tenha recursos para ler documentos do Word e use beans xml para fazer isso. O Docx4j lida principalmente com documentos docx usando jaxb. Normalmente, o jaxb permite ao xml Java; portanto, acho que o docx4j seria preferível para o seu caso).

2
Mohamed Makthum

Se você estiver lidando com documentos docx, o docx4j é mais conveniente que o Apache POI. Você pode usar os seguintes links para aprender o básico do docx4j. Além disso, existe um fórum agradável de docx4j.

1 . http://blog.iprofs.nl/2012/09/06/creating-Word-documents-with-docx4j/ 2 . http://www.smartjava.org/content/create-complex-Word-docx-documents-programatically-docx4j ?

2
lycaenidae