Pergunta

Estou tentando substituir strings em um documento do Word lendo o arquivo em uma variável $content e então usando str_ireplace() para alterar a string.Posso ler o conteúdo do arquivo, mas str_ireplace() parece não ser capaz de substituir a string.Presumi que sim porque a string é 'segura para binário' de acordo com a documentação do PHP.Desculpe, sou iniciante na manipulação de arquivos PHP, então tudo isso é muito novo para mim.

Isto é o que escrevi.

copy('jack.doc' , 'newFile.doc');
$handle = fopen('newFile.doc','rb');
$content = '';

while (!feof($handle))
{
    $content .= fread($handle, 1);
}
fclose($handle);

$handle = fopen('newFile.doc','wb');
$content = str_ireplace('USING_ICT_BOX', 'YOUR ICT CONTENT', $content);
fwrite($handle, $content);
fclose($handle);

Quando faço o download do novo arquivo, ele abre como deveria no MS Word mas mostra a string antiga e não aquela que deveria ser substituída.

Posso corrigir esse problema?Existe alguma ferramenta melhor que eu possa usar para substituir strings no MS Word através do PHP?

Foi útil?

Solução 4

Vou optar pelo PHPWord www.phpword.codeplex.com porque acredito que os professores receberão o Office 2007 no próximo ano e também tentarei encontrar uma maneira de converter entre .docx e .doc através de PHP para apoiá-los no significa tempo.

Outras dicas

Eu tenho o mesmo requisito para Editar .doc ou .docx arquivo usando php e encontrei uma solução para isso.E eu escrevi uma postagem sobre isso :: http://www.onlinecode.org/update-docx-file-using-php/

copy('jack.doc' , 'newFile.doc');
$full_path =  'newFile.doc';
if($zip_val->open($full_path) == true)
{
    // In the Open XML Wordprocessing format content is stored.
    // In the document.xml file located in the word directory.

    $key_file_name = 'word/document.xml';
    $message = $zip_val->getFromName($key_file_name);               

    $timestamp = date('d-M-Y H:i:s');

    // this data Replace the placeholders with actual values
    $message = str_replace("client_full_name",      "onlinecode org",       $message);
    $message = str_replace("client_email_address",  "ingo@onlinecode.org",  $message);
    $message = str_replace("date_today",            $timestamp,         $message);      
    $message = str_replace("client_website",        "www.onlinecode.org",   $message);      
    $message = str_replace("client_mobile_number",  "+1999999999",          $message);

    //Replace the content with the new content created above.
    $zip_val->addFromString($key_file_name, $message);
    $zip_val->close();
}

Talvez isso indique a direção certa: http://davidwalsh.name/read-pdf-doc-file-php

Soluções que encontrei até agora (embora não testadas):
Documento - funciona para Doc, gratuito, mas não pode ser usado diretamente
PHPWordLib - funciona para Doc, não é grátis
PHPDocX - Apenas DocX, precisa de Zend.

Se você conseguir acessar um serviço da web, consulte Docmose Serviços em nuvem, pois pode mesclar um arquivo doc com seus dados e devolver um doc/pdf/outro.Você pode postar https no serviço para fazer a solicitação, de forma bastante simples no PHP.

Há muitas maneiras de lidar com arquivos de documentos do Word no Linux

  1. antiword - não é muito eficaz, pois converte em texto simples.
  2. pyODconvert
  3. open-office ou liboffice - através da ONU
  4. unoconv utilitário - precisa de permissão de instalação no servidor

Existe um script python que é mais útil para conversão de arquivos online, mas você precisa converter esses arquivos por meio da linha de comando.

Não existe uma solução específica e satisfatória para lidar com arquivos do Word usando apenas código php.

Procurei por muito tempo chegar a essa sugestão.

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