Soluçao Muito Específica – Mas que pode vir a ser útil pra alguém ;-)

Situaçao – Uma aplicação na Empresa onde trabalho foi desenvolvida usando em um sistema online que faz uso de operações normais dentro de um banco de dados, até aí, nada de anormal, entretanto a aplicação(em PHP5+MySQL5) gera documentos para impressão baseados nos dados do cliente (Contratos, fichas cadastrais, recibos e todo tipo de documentação cabível) , mas o que ocorre, a aplicação, quando foi criada, funcionava perfeitamente, ela gerava um arquivo XML baseado em substituiçoes simples de textos específicos por campos da base de dados.: exemplo

O arquivo template_contrato_com_passagem.xml é lido como texto, tratado como texto e devidamente ajustado, o sistema substitui determinado textos tipo “NOME_DO_PARTICIPANTE_DO_INTERCAMBIO” pelo conteúdo de algum campo em alguma tabela contendo por exemplo “Leandro Dupont Ferreira”, e assim sucessivamente, em diversos outros campos, até aí , nada demais, entretanto o arquivo devolvido pelo servidor, vem com a extensão .doc, e em um mundo Windows, onde originalmente o sistema foi criado, numa empresa onde só existia Windows, tudo ocorria de forma normal como deveria ser, o funcionário clicava num botão dentro de uma página web(nosso sistema em PHP) e a pagina gerava um DOC, que ele nem se dava ao trabalho de salvar na maioria das vezes, apenas mandava abrir, e internet Explorer e o Firefox automáticamente abrem o MS-WORD®

do PC e tudo funciona, ele pode alterar e imprimir o arquivo em questão…

Ex em imagens de Como Funciona no em ambiente Windows:

 clip_image002[4]

Seleção de participante -

clip_image004[4]

Seleçao de Documento

clip_image006[4]

Abrindo Documento

 clip_image008[4]

Documento aberto no Word2007

clip_image010[4]

Com imagens, Cabeçalho e rodapé -

Problema Surgindo: Ao ser contratado para exercer minhas funções na empresa(é Acumulativo em tarefas… técnico, administrador de redes, consultoria de TI, quebra-galho pro pessoal do marketing, criador de soluções pra intranet, e acesso remoto…etc, etc…..) bom, fui incumbido de pôr ordem na casa, legalizando softwares e …Migrar pra opensource onde fosse possível(Oh! Meu Deus… ou então, oh! E agora quem poderá nos defender???)… bom, resumindo, as estações que estavam com Windows XP Professional+Office 2003 ou Office 2007 Pirata Foram Migradas Para Ubuntu +Open Office e daí que o arquivo .doc, que na verdade era um XML re-nomeado e que era detectado pelo Windows como .doc, e era interpretado corretamente no MS-WORD®, estava uma total bagunça incompreensiva ao dar dois cliques e mandar o open office abrir o arquivo…,

Pegadinha 1 – tentando abrir normalmente – clip_image012[4]

Ta, não dá pra abrir, então salvamos o arquivo – clip_image014[4]

(começo a pensar… no Windows isso não aconteceria :-P )

Ao invés de abrir, salvo o documento numa pasta qualquer – clip_image016[4]

Então, navego até a pasta e dou um duplo clique certo? – clip_image018[4]

- vamos ver…

Bom, uma tela de seleção de codificação, clip_image020[4]

vamos testar as possíveis… – nenhuma deu certo :-P

Todas abrem assim => clip_image022[4]

- Bom, vamos tentar de outros modos

Pensei, já que EU SEI QUE O ARQUIVO É UM XML FORMATADO DO WORD, BOM VAMOS SER INTELIGENTES , tentei contornar a situação da seguinte forma, renomear o arquivo de .doc para .xml

clip_image024[4]

clip_image026[4]

AGORA SÓ DAR DOIS CLIQUES – :-P abriu no Firefox

Então vou tentar abrir de dentro do OpenOfficeWriterclip_image028[4]

Encontrei a opção de tipo de arquivo “Microsoft Office 2003 XML”, mas ao tentar abrir tive um erro de JRE ausente no open-office,clip_image030[4]

mas após pesquisar algum tempinho no Google e instalando uma série de pacotes que vieram como dependências do “OpenOffice-JRE-Comon.deb” , nem tive que selecionar o Java nas opções, parece que o open Office reconheceu automaticamente o pacote instalado e nem mudei nada, clip_image032[4]

tentei novamente aquivo , abrir, selecionar o tipo do arquivo novamente, como Microsoft Word 2003 XML Document e ficou um clip_image034[4] tempinho carregando o Java, mas … Finalmente, rolou!

clip_image036[4] Ou quase… (Sem Esse passo chato, o arquivo não era interpretado e aberto de forma correta), pronto, ai ele dava um erro com o JRE dentro do OpenOffice

- aí sim, mandava abrir o arquivo, e ainda assim não eram carregados as imagens presentes no arquivo dentro de seu cabeçalho e rodapé, o open Office não abria o arquivo direito, o que fiz foi tentativas e erros até encontrar uma solução mais aceitável ao menos pra poder editar e imprimir o arquivo de forma correta, então encontrei o seguinte “Workaround”

SOLUÇÃO Para Impressão / Visualização do Arquivo de Forma Correta foi encontrada após mais algumas pesquisadas no meu amigo, GOOGLE…. e por que não um Visualizadorclip_image038[4] de Arquivos do Word, já havia visto aquilo uma vez, em pcs que não tinham licença… encontrei…

Verifiquei se eu tinha o necessário pra rodar tal aplicativo… ;-) clip_image040[4]

Fiz o download,clip_image042[4]

e instalei clip_image044[4]

Instalação fluindo perfeitamenteclip_image046[4]

Bom, isso é o que veremos…clip_image048[4]

…e não é que ele está ali?clip_image050[4]

…voltando o arquivo para .docclip_image052[4]

 clip_image054[4]

Caramba, e não é que abriu perfeitamente?

clip_image056[4] Até ao imprimir, sem nenhum problema

Então, agora a situação seria simples, somente associar o tipo de arquivo .doc, ao WordViewer, mas como fazer isso? Bom, seguindo adiante…

Clico com o botão direito do mouse e vou na opção básica de abrir com outro aplicativo e tento escolher…clip_image058[4] mas, acho que não é bem por ai, né …? clip_image060[4] tentei então associar ao WordViewer pra ver se funcionava, clip_image062[4]

Mas tudo o que acontecia era abrir o wordviewer sem arquivo nenhum nele

clip_image064[4]

Ai, analisando o atalho criado pelo próprio wine clip_image066[4]

e usando novamente o Google por algumas pesquisadas à mais,clip_image068[4]

encontrei o problema, era o argumento(passar um parâmetro na linha de comando que estava errado, eu não estava nem passando p Caminho do Wine o winepath e nem o environment dele, o “env” então, descobri o seguinte adicional ao tentar chamar o wine usando o seu caminho completo passando como argumento o caminho completo do arquivo a ser aberto, e tudo de acordo com o exemplo encontrado no WineHQ e criei o seguinte arquivo de texto/script wordviewer-scriptclip_image070[4] e escrevi nele exatamente o que encontrei no atalho, mas passando como parâmetro o arquivo, de acordo com os dois exemplos do site, note que tive que juntar e incluir umas aspas no script, para que o mesmo aceitasse os argumentos passados como parâmetros…

wine "C:\Arquivos de programas\Microsoft Office\OFFICE11\WORDVIEW.EXE" "`winepath -w "$@"`"

ok, então agora tenho um arquivo de script, mas tenho que torna-lo executavel para que possa associar com um tipo de documento, aqui no caso o .doc, o que pode ser feito via terminal usando o seguinte comando, chmod +x nome-do-scriptclip_image072[4]ou clicando com o botão direito do mouse sobre o arquivo e indo na orelha permissões e marcando a propriedade executável do arquivoclip_image074[4], pronto, agora basta associar o arquivo com o script, como se fosse associar a outro programa, normalmente…

clip_image076[4]

clicar com o botão direito do mouse e selecionar abrir com outro  plicativo,

clip_image078[4]

selecionar navegar , selecionar o script e pronto!

Voila! Arquivo aberto pelo Microsot Word Viewer através da associaçao de arquivos do ubuntu/nautilus clip_image080[4]

Agora podemos simplesmente selecionar qualquer arquivo .doc e no menu de contexto, selecionar o nome do nosso scriptclip_image082[4]

Deixe uma resposta