Pregunta

Estoy intentando reemplazar cadenas en un documento de Word leyendo el archivo en una variable $content y luego usar str_ireplace() para cambiar la cadena.Puedo leer el contenido del archivo pero str_ireplace() no parece poder reemplazar la cadena.Supuse que sería así porque la cadena es "segura para binarios" según la documentación de PHP.Lo siento, soy un principiante en la manipulación de archivos PHP, por lo que todo esto es bastante nuevo para mí.

Esto es lo que he escrito.

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);

Cuando descargo el nuevo archivo, se abre como debería en MS Word pero muestra la cadena anterior y no la que debería reemplazarse.

¿Puedo solucionar este problema?¿Existe alguna herramienta mejor que pueda usar para reemplazar cadenas en MS Word a través de PHP?

¿Fue útil?

Solución 4

Voy a optar por PHPWord www.phpword.codeplex.com porque creo que los profesores obtendrán Office 2007 el próximo año y también intentaré encontrar alguna forma de convertir entre .docx y .doc a través de PHP para admitirlos en el tiempo medio.

Otros consejos

Tengo el mismo requisito para Editar .doc o .docx archivo usando php y encontré una solución para ello.Y he escrito una publicación sobre él:: 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();
}

Quizás esto le indique la dirección correcta: http://davidwalsh.name/read-pdf-doc-file-php

Soluciones que he encontrado hasta ahora (aunque no probadas):
Docvert - funciona para Doc, gratis, pero no utilizable directamente
PHPWordLib - funciona para Doc, no gratis
PHPDocX - Sólo DocX, necesita Zend.

Si puede acceder a un servicio web, mire Docmosis Servicios en la nube, ya que puede combinar un archivo doc con sus datos y devolverle un doc/pdf/otro.Puede publicar https en el servicio para realizar la solicitud, por lo que es bastante sencillo desde PHP.

Hay muchas formas de manejar archivos de documentos de Word en Linux.

  1. antiword - no es muy efectivo ya que se convierte en texto plano.
  2. pyODconvert
  3. open-office o liboffice - a través de la ONU
  4. unoconv utilidad: necesita permiso de instalación en el servidor

Hay un script de Python que es más útil para la conversión de archivos en línea, pero es necesario convertir esos archivos a través de la línea de comandos.

No existe una solución específica y satisfactoria para manejar archivos de Word utilizando únicamente código php.

Busqué durante mucho tiempo llegar a esta sugerencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top