Question

J'essaie de remplacer les chaînes dans un document Word en lisant le fichier dans une variable $content puis en utilisant str_ireplace () pour modifier la chaîne. Je peux lire le contenu du fichier mais je str_ireplace () ne semble pas pouvoir remplacer la chaîne. J'ai supposé que ce serait parce que la chaîne est «en toute sécurité» en fonction de la documentation PHP. Désolé, je suis un débutant avec une manipulation de fichiers PHP, donc tout cela est tout à fait nouveau pour moi.

C'est ce que j'ai écrit.

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

Lorsque je télécharge le nouveau fichier, il s'ouvre comme il se doit dans MS Word mais il montre l'ancienne chaîne et non celle qui devrait être remplacée.

Puis-je résoudre ce problème? Y a-t-il un meilleur outil que je peux utiliser pour remplacer les chaînes dans MS Word Thourgh PHP?

Était-ce utile?

La solution 4

Je vais opter pour Phpword www.phpword.codeplex.com car je crois entre temps.

Autres conseils

J'ai la même exigence pour modifier .Doc ou .Docx Fichier à l'aide de PHP et j'ai trouvé une solution pour cela. Et j'ai un article en écriture dessus :: 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();
}

Peut-être que cela vous indiquera la bonne direction: http://davidwalsh.name/read-pdf-doc-file-php

Solutions que j'ai trouvées jusqu'à présent (pas testées cependant):
Docvert - fonctionne pour doc, gratuit, mais pas directement utilisable
Phpwordlib - Fonctionne pour Doc, pas libre
Phpdocx - Docx seulement, a besoin de zend.

Si vous pouvez atteindre un service Web, regardez Docmose Cloud Services car il peut envoyer un fichier DOC avec vos données et vous rendre un DOC / PDF / autre. Vous pouvez publier HTTPS sur le service pour faire la demande, donc est assez simple de PHP.

Il existe plusieurs moyens de gérer le fichier de document Word sur Linux

  1. antiword - Pas très efficace car il se convertit en texte brut.
  2. pyODconvert
  3. open-office ou liboffice - à travers uno
  4. unoconv Utilitaire - Besoin d'autorisation d'installation sur le serveur

Il y a un script Python qui est le plus utilisable pour la conversion de fichiers en ligne, mais vous devez convertir ces fichiers via la ligne de commande.

Il n'y a pas de solution spécifique et satisfaite pour gérer les fichiers Word en utilisant uniquement le code PHP.

J'ai chassé longtemps pour atteindre cette suggestion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top