Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

KiNgPiTo

Ler .docs com PHP em Linux

Mensagens Recomendadas

KiNgPiTo

Boas...

Tinha um script que lia um bookmark em ficheiros .doc e .docx e substituia pelo valor que lhe desse e guardava o novo documento. O problema é que até agora tinha a correr no localhost, com windows, mas vou alojar agora e tem de ser num server com linux. Eu estava a ler o ficheiro com o COM mas precisa de ter o office instalado e isso não vai ser mais possivel.

Alguma ideia para isto?

Cumprimentos e muito obrigado  :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Muda de tecnologia... para .Net.

Infelizmente não há grandes alternativas, para ler XLSX ainda existem bibliotecas, procurar no PEAR se precisares, para docs não conheço nenhuma que permita ler conteúdo correctamente em PHP, pelo menos gratuita.

Se alguém conhecer alguma que funcione também precisava de uma :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Podes tentar usar o OpenOffice através da sua interface de serviço/deamon.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KiNgPiTo

Já ando desde ontem a ver isto... Fico é limitado a .docx pois os .docs vêm codificados mas já não é mau e estou a ver que é a única solução.

Uma questão: Implementei este código para carregar o document.xml que está no .docx com o conteúdo do documento:

<?php
$zip = new ZipArchive();
$zip->open("gteste.docx");
$docxml = $zip->getFromName("word/document.xml");
$zip->close();

header ("Content-Type:text/xml"); 
echo $docxml;
?>

Ora bem, já estou a carregar o documento e dá-me o xml de um documento apenas com um marcador inserido com o nome "nnoommee" e o valor inicial "NOME":

<w:document>
−
<w:body>
−
<w:p w:rsidR="00407252" w:rsidRPr="00180DD5" w:rsidRDefault="00180DD5" w:rsidP="00180DD5">
−
<w:r>
<w:t xml:space="preserve">Olá </w:t>
</w:r>
<w:bookmarkStart w:id="0" w:name="nnoommee"/>
−
<w:r w:rsidR="00925F74">
<w:t>“NOME”</w:t>
</w:r>
<w:bookmarkEnd w:id="0"/>
−
<w:r w:rsidR="00925F74">
<w:t xml:space="preserve"> ….</w:t>
</w:r>
</w:p>
−
<w:sectPr w:rsidR="00407252" w:rsidRPr="00180DD5" w:rsidSect="003D6260">
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:top="1417" w:right="1701" w:bottom="1417" w:left="1701" w:header="708" w:footer="708" w:gutter="0"/>
<w:cols w:space="708"/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>
</w:document>

Só que eu nem xml's mais simples ainda sei manipular que fará estas carroças de código...

Alguma sugestão de como alterar o valor e guardar o novo document.xml?

Cumprimentos e muito obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KiNgPiTo

Esta foi a solução que fiz para não estar com muito trabalho (um bocado trolha, mas serve para já :) ):

<?php      
$zip = new ZipArchive();
        $zip->open("novoteste.docx"); // Abre o documento antigo
        $docxml = $zip->getFromName("word/document.xml"); //Passa o conteudo do xml para uma variavel
        $zip->close();
               
        $st = str_replace( "var_teste1", "Variavel Teste Inserida", $docxml); //Substitui a variavel pelo valor dado..

copy("novoteste.docx", "novoteste2.docx"); //Copia o conteudo do doc antigo para um novo

$zip2 = new ZipArchive();
$zip2->open("novoteste2.docx"); //Abre o novo

$zip2->addFromString("word/document.xml", $st); //Adiciona o xml substituido ao novo doc
$zip2->close();				
?>

Não ficou a funcionar por bookmarks como pretendia, apenas substitui texto directo...

Se alguém tiver uma sugestão por bookmarks ou outra solução melhor, por favor partilhe ;)

Cumprimentos e Muito Obrigado  ;)

EDIT: Fiz o mesmo para .odt's, o principio é o mesmo, em vez de word/document.xml é content.xml

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.