Pergunta

Eu tenho um novo aplicativo eu vou estar trabalhando em onde eu tenho que gerar um documento do Word que contém tabelas, gráficos, uma tabela de conteúdo e texto. O que é uma boa API para usar para isso? Como você está certo de que ele suporta gráficos, Tocs e tabelas? Quais são alguns pegadinha escondida é em usá-los?

Alguns esclarecimentos:

  • Não consigo saída de um PDF, eles querem um documento do Word.
  • Eles estão usando o MS Word 2003 (ou 2007), não OpenOffice
  • aplicativo é executado em * nix app-server

Seria bom se eu poderia começar com um doc modelo e apenas preencher alguns espaços com tabelas, gráficos, etc.

Edit: Várias boas respostas abaixo, cada um com suas próprias falhas, tanto quanto a minha situação atual. Difícil escolher uma "resposta final" a partir deles. Acho que vou deixá-la aberta, e esperança para melhores soluções a ser criado.

Edit: O projeto UNO OpenOffice parece ser mais próximo do que eu pedi. Enquanto POI é certamente mais mainstream, é muito imaturo para o que eu quero.

Foi útil?

Solução

Em 2007 meu projeto utilizado com sucesso do OpenOffice.org Universal Network Objects (ONU) interface para programaticamente gerar MS-Word documentos compatíveis (* .doc), bem como correspondentes documentos PDF, a partir de um aplicativo Java web (a estrutura Struts / JSP).

OpenOffice UNO também permite criar gráficos MS-Office-compatíveis, planilhas, apresentações, etc. fomos capazes de criar dinamicamente documentos do Word sofisticados, incluindo gráficos e tabelas.

Nós simplificamos o processo usando documentos modelo MS-Word com inserções marcador em que o conteúdo de software inserido, no entanto, você pode criar documentos completamente do zero. O objetivo era ter o software gerar relatório documenta que poderiam ser compartilhadas e mais otimizadas por usuários finais antes de convertê-los em PDF para a entrega final e arquivamento.

Você pode, opcionalmente, produzir documentos em formatos OpenOffice, se você quiser que os usuários usar o OpenOffice em vez do MS-Office. No nosso caso, os usuários querem usar ferramentas MS-Office.

UNO está incluído dentro da suíte OpenOffice. Nós simplesmente ligada nosso aplicativo Java para bibliotecas relacionadas com a ONU dentro da suite. Um OpenOffice Software Development Kit (SDK) está disponível contendo exemplos de aplicações e no Manual do UNO do desenvolvedor.

Eu não investigou se o mais recente UNO OpenOffice pode gerar 2007 formatos de documento Open XML MS-Office.

As coisas importantes sobre o OpenOffice UNO são:

  1. É gratuito
  2. Suporta vários idiomas (por exemplo, Visual Basic, Java, C ++, e outros).
  3. É independente de plataforma (Windows, Linux, Unix, etc.).

Aqui estão alguns sites úteis:

Outras dicas

Apache POI pode fazer o trabalho. Um problema possível, dependendo do seu uso do visando pode ser causado pelo fato de que HWPF ainda está no início do desenvolvimento.

HWPF é o conjunto de APIs para a leitura e escrita Microsoft Word 97 (-XP) documentos usando (apenas) Java.

Você pode usar o seguinte: http://code.google.com/p/java2word

Eu implementei este API chamada Java2Word. com algumas linhas de código, você pode gerar um documento do Microsoft Word.

Por exemplo:.

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

Há alguns exemplos de como usar. Basicamente, você precisará de um arquivo jar. Deixe-me saber se você precisar de alguma informação adicional como configurá-lo.

* Eu escrevi isso porque tivemos uma real necessidade em um projeto. Mais em minha blog:

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

aplausos Leonardo

Editar : Projeto na ligação movido para https://github.com/leonardoanalista / java2word

Tente Aspose.Words para Java, ele roda em qualquer sistema operacional onde Java está instalado.

Ele irá imprimir o documento para DOC, DOCX ou RTF, se você precisa de um formato de saída MS Word. Todos são suportados igualmente bem.

Usando essa API você pode criar um documento do zero, literalmente, a partir de nós e definir suas propriedades de formatação. Você também pode usar um DocumentBuilder que fornece métodos de nível superior, como criar uma linha da tabela, insira um campo etc. Ou você pode copiar / join / porções mover entre pré criado documento existente, digamos que você quer montar um contrato, basta pegar e copiar peças de vários documentos e Aspose.Words irá mesclar estilos, lista formatação etc corretamente no documento resultante.

Você será capaz de inserir um campo TOC usando Aspose.Words, mas a partir de hoje, o campo TOC vai exigir uma atualização de campo quando o documento é aberto no Microsoft Word. No entanto, estamos indo para liberar o suporte completo para campos de índice no início de 2010. Por exemplo vai construir TOC completa como MS Word faz isso.

Eu estou na equipe Aspose.Words.

Foi mencionado apenas brevemente uma vez, então eu gostaria de chamar a biblioteca docx4j, como eu tive mais sucesso com docx4j que qualquer outra coisa. O apoio da Apache POI para documentos do Word não é muito bom. Além disso, ao contrário do Aspose.Words, docx4j é uma biblioteca de código aberto.

O único inconveniente é com docx4j você tem que criar documentos Office Open XML Format (docx) em vez de (DOC) formatar documentos baseados em OLE2. Este é o formato padrão para o Word 2007, mas Word 2003 e os usuários anteriores terá de instalar um pacote de compatibilidade.

Tente Aspose.Words para Java.

Aspose.Words para Java é um avançado biblioteca de classes (comercial) para Java que permite executar uma grande variedade de tarefas de processamento de documento diretamente dentro de seus aplicativos Java.

Aspose.Words para Java suporta DOC, OOXML, RTF, HTML e formatos OpenDocument. Com Aspose.Words você pode gerar, modificar e converter documentos sem usar o Microsoft Word.

Você pode usar uma ponte Java COM como JACOB . Se é a partir do lado do cliente, outra opção seria usar Javascript.

Eu usei Aspose.Words fazer mala direta no .NET. Eu acredito que eles também têm uma versão Java.

Há uma ferramenta chamada JODConverter que ganchos para escritório aberto para expô-lo de conversores de formato de arquivo, há versões disponíveis como um webapp (senta no tomcat) que você postar e uma ferramenta de linha de comando. Eu tenho disparando html para ele e converter para doc e pdf com sucesso está em um bastante grande projeto, ainda não foi ao vivo, mas eu acho que estou indo para usá-lo. http://sourceforge.net/projects/jodconverter/

iText é realmente fácil de usar.

Se você requiere arquivos doc você pode chamar abiword (lightweigh multi-OS procesor texto livre) a partir da linha de comando, ele tem várias opções de conversão de formato de converter.

docx4j ou poi, sendo que ambos são ASL v2

@wondersofcomputing: iText é realmente livre e open source

Depois de um pouco mais de pesquisa, me deparei com iText, PDF e RTF-file criação API. Eu acho que eu posso usar a geração RTF para criar um arquivo Doc-legível que pode ser editada usando Doc e salvas re-.

Alguém tem alguma experiência com o iText, utilizado desta forma?

Bill, o POI e iText API são muito semelhantes a partir de uma perspectiva de programação. Eu tenho trabalhado com tanto no passado e encontrou-os ao mesmo tempo fácil de usar e bem documentado.

Com iText você ganha a vantagem de ser capaz de alternar entre formatos (RTF e PDF), com pequena alteração ao código. Se bem me lembro o conteúdo é colocado para fora usando as mesmas chamadas e, em seguida, definir como PDF ou RTF usando algumas linhas de código.

No entanto, eu acredito que a formatação em RTF é limitado em comparação com DOC. Eu não sei se você vai ser capaz de implementar os recursos avançados que você está procurando (tabelas, imagens embutidas), sem uma quantidade razoável de aborrecimento, se em tudo.

Dado o que você disse que cerca de HWPF não ter funcionalidade suficiente para as suas necessidades (Eu só lidava com o lado do Excel de POI) o melhor aposta pode ser para convencer os poderes que PDF é a melhor tecnologia para o trabalho .

Eu desenvolvi palavra arquivos XML baseado puros no passado. Eu costumava .NET, mas a linguagem não deve importar, já que é XML verdadeiramente. Não era a melhor coisa a fazer Estes fazem único trabalho no Word 2007 ou superior (tinha um projeto que exigia um par de anos atrás.) - mas tudo o que você precisa é de papel branco da Microsoft que descrevem o que cada tag faz. Você pode fazer tudo o que quiser com as marcas da mesma forma como se você estivesse usando o Word (naturalmente um pouco mais dolorosa inicialmente.)

Depois de um pouco mais de pesquisa, me deparei com iText , uma criação PDF e RTF-file API. Eu acho que eu posso usar a geração RTF para criar um arquivo Doc-legível que pode ser editada usando Doc e salvas re-.

Alguém tem alguma experiência com o iText, utilizado desta forma?

Ainda outra possibilidade, uma vez que este é um aplicativo web.

Eu era capaz de renderizar uma página HTML com o MIME tipo definido como "application / msword", o que fez com que o navegador para desovar Palavra que importou o html muito bem, permitindo edições e salvar apenas como se eu tivesse a saída de um verdadeiro palavra doc.

Belas mesas de trabalho, mas as imagens que eu não tinha conseguido trabalhar ainda. Pode ser tão fácil como apenas uma tag no HTML, ou eu posso ter que transmitir uma parte separada da resposta contendo os dados de imagens binárias, ou algum outro método que eu não venha com ainda. :)

Mesmo que isso é muito mais tarde do que o pedido, pode ajudar os outros. Docmosis fornece uma API Java para a criação de documentos em doc, pdf, ODT usando documentos como modelos. Ele usa o OpenOffice como o motor para executar as conversões de formato. manipulação de documentos e da população é executada por si só Docmosis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top