Manipulando .docx!

Galera,
alguém sabe como manipular “.docx”?
Eu preciso ler o arquivo e inserir imagens dinamicamente nos espaços em branco conforme a formatação do documento.

Ja pesquisei no site do APACHE e o POI só trabalha com .doc, encontrei uma biblioteca chamada DOCX4J porém não consigo abrir o documento também.
Alguém saberia me dizer se há outra forma de fazer isso?

desde já valeu ai galera…

Hum… um arquivo .docx é na verdade um arquivo .zip contendo vários XMLs e imagens (que ficam no diretório word\media dentro desse zip.
Experimente pegar seu documento modelo, e trocar as figuras já existentes por outras, e tentar abrir o arquivo.
Será que vai dar certo?

a) Renomeie o arquivo .docx para .zip
b) Substitua uma imagem que esteja dentro de word\media
c) Feche o arquivo .zip
d) Renomeie de novo o .zip para .docx
e) Veja o que ocorreu

Provavelmente você vai ter de criar um documento-exemplo com imagens em branco que sejam exatamente do mesmo tamanho que as imagens desejadas.
Não se esqueça de inserir imagens em formato PNG, não criar diretamente as imagens com o próprio Word (que vai gerar as imagens em formato EMF - Embedded Meta File).

Olá

As explicações já dadas foram muito boas.

Mas eu insistiria no DOCX4J. Li o manual e deveria da certo usando Java 6 (que inclui o JAXB). O que deu errado? Não abrir o arquivo não deve ter sido por causa da API.

Conta aí para gente como ficou a solução.

[]s
Luca

consegui abrir o arquivo usando OpenXML4J uma biblioteca que pelo o que vi serve para .docx .xlsx .pptx enfim tudo com “x”. (rsrsrs).

olha como abre é muito fácil.

package br.com.docfile;

import java.io.File;

import org.openxml4j.document.OpenXMLDocument;
import org.openxml4j.exceptions.OpenXML4JException;
import org.openxml4j.opc.PackageAccess;

public class DocFile {
    
    public static void main(String[] args){
        
        try{
            
            File file = new File("C:\\modelo.docx");
            OpenXMLDocument docx = OpenXMLDocument.open("C:\\modelo.docx", PackageAccess.READ);
            
            docx.extractParts(docx.getThumbnails(), file);
            
            System.out.println(docx.);
            
        }catch(OpenXML4JException e){
            e.printStackTrace();
        }
        
    }   
}

agora só preciso saber como navegar entre os nós do documento .docx e alterar o conteúdo dinamicamente.