Juntar (Merging) dois arquivos do word (.doc)

Bom dia.

Estou com um problema sério. Preciso unificar (merging) dois arquivos do word (.doc) e manter a formatação do mesmo. Já tentei com a api apache poi. Mas meu texto está perdendo a formatação.

Tem alguma outra api que eu possa usar?

obrigado a todos que ajudarem.

Você consegue fazer isso com VBA, por acaso? Pode ser que os dois documentos não possam ser juntados porque têm definições diferentes para os tipos de parágrafos.

Eu não tentei fazer em VBA.

Com a api apache poi, eu consegui fazer a junção, porém o texto perde a formatação.
Fiz usando HWPFDocument e utilizando o Range.

teria como manter a formatação utilizando este componente?

Eu perguntei se usando VBA você consegue manter a formatação desejada, porque como é um componente do próprio Word e escrito pela própria Microsoft não deve sofrer de problemas do tipo “não foi feita uma engenharia reversa completa do formato .DOC, portanto o POI não consegue fazer tal tipo de coisas” (ignoro se o POI tenha tal tipo de limitação porque nunca o usei).
Talvez sofra de outros problemas, do tipo “só funciona se houver uma cópia licenciada do Office nessa máquina etc.”, ou então “que não seja possível fazer um merge preservando a formatação”. É uma coisa que não sei, só estou perguntando para você porque você pode tentar ver se isso consegue preservar a formatação ou não.

com esse código eu consigo uma copia exara do arquivo.

[code]HWPFDocument doc2 = new HWPFDocument(new FileInputStream(“D:\origem.doc”));
OutputStream out = new FileOutputStream(“D:\destino.doc”);
doc2.write(out);

    out.flush();
    out.close();[/code]

agora com esse, eu consigo pegar somente o texto.

HWPFDocument doc = new HWPFDocument(new FileInputStream("D:\\result.doc"));  
            Range range = doc.getRange();  
  
              
            //I can get the entire Document and insert it in the tmp.doc  
            //However any formatting in my word document is lost.  
            HWPFDocument doc2 = new HWPFDocument(new FileInputStream("D:\\origem.doc"));  
            Range range2 = doc2.getRange();  
            range.insertAfter(range2.text());  
            
            OutputStream out = new FileOutputStream("D:\\result.doc");  
            doc.write(out);  
            out.flush();  
            out.close(); 

Com o código abaixo, eu consigo fazer o merging entre os arquivos, porém eu perco a formatação e as imagens.

// POI apparently cant create a document from scratch, 
// so we need an existing empty dummy document 
HWPFDocument doc = new HWPFDocument(new FileInputStream(D:\\tmp.doc)); 
Range range = doc.getRange(); 


//I can get the entire Document and insert it in the tmp.doc 
//However any formatting in my word document is lost. 
HWPFDocument doc2 = new HWPFDocument(new FileInputStream(D:\\doc1.doc)); 
Range range2 = doc2.getRange(); 
range.insertAfter(range2.text()); 

//I can get the information (text only) for each character run/paragraph or section. 
//Again any formatting in my word document is lost. 
HWPFDocument doc3 = new HWPFDocument(new FileInputStream(D:\\doc2.doc)); 
Range range3 = doc3.getRange(); 
for(int i=0;irange3.numCharacterRuns();i++){ 
CharacterRun run3 = range3.getCharacterRun(i); 
range.insertAfter(run3.text()); 
} 

OutputStream out = new FileOutputStream(D:\\result.doc); 
doc.write(out); 
out.flush(); 
out.close();

alguma dica de como manter a formatação e as imagens?

att,