Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jerome herve
Sur windows, tu peux te servir des objets dom. si word est sur le serveur, c'est possible. Sous linux, tu peux demander à php d'éxecuter un programme sachant lire le .doc (abiword, openoffice -plus lourd-) et lui demander de convertir en .txt. J'ai jamais fait, mais cela parait faisable.
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Merci d'avance !
Antoun
Sur windows, tu peux te servir des objets dom. si word est sur le
serveur, c'est possible.
Sous linux, tu peux demander à php d'éxecuter un programme sachant lire
le .doc (abiword, openoffice -plus lourd-) et lui demander de convertir
en .txt.
J'ai jamais fait, mais cela parait faisable.
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Sur windows, tu peux te servir des objets dom. si word est sur le serveur, c'est possible. Sous linux, tu peux demander à php d'éxecuter un programme sachant lire le .doc (abiword, openoffice -plus lourd-) et lui demander de convertir en .txt. J'ai jamais fait, mais cela parait faisable.
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Merci d'avance !
Antoun
jean.lespinasse
Antoine Dinimant wrote:
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en RTF qui est un format standard ? N'importe quel traitement de texte sait enregistrer en RTF.
D'accord c'est plutôt hors sujet mais je me pose vraiment la question. Pourquoi ne pas donner la priorité aux formats standards, et se prendre la tête avec des formats propriétaires ?
À + -- Jean Lespinasse
Antoine Dinimant <antoun@free.fr> wrote:
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en
RTF qui est un format standard ? N'importe quel traitement de texte sait
enregistrer en RTF.
D'accord c'est plutôt hors sujet mais je me pose vraiment la question.
Pourquoi ne pas donner la priorité aux formats standards, et se prendre
la tête avec des formats propriétaires ?
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en RTF qui est un format standard ? N'importe quel traitement de texte sait enregistrer en RTF.
D'accord c'est plutôt hors sujet mais je me pose vraiment la question. Pourquoi ne pas donner la priorité aux formats standards, et se prendre la tête avec des formats propriétaires ?
À + -- Jean Lespinasse
Antoine Dinimant
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en RTF qui est un format standard ? N'importe quel traitement de texte sait enregistrer en RTF.
ça ne changerait pas grand-chose, il me faudrait ensuite une procédure de traduction du code RTF afin d'en extraire le texte
D'accord c'est plutôt hors sujet mais je me pose vraiment la question. Pourquoi ne pas donner la priorité aux formats standards, et se prendre la tête avec des formats propriétaires ?
- pour simplifier la tâche de mes (futurs) visiteurs; plutôt que d'enregistrer en RTF, je peux leur demander de faire un copier-coller du contenu de leur doc dans une TEXTAREA, cela n'est pas plus compliqué pour eux, alors que c'est bcp + simple et + portable pour moi. Mais si c'est possible, j'aimerais bien leur éviter une manipulation et donc pouvoir lire du .DOC (et du .RTF, mais je suppose qu'un truc capable de lire du .DOC est également capable de lire du .RTF)
- juste pour chipoter, le .RTF est certes un format d'échange devenu standard, mais ça n'en reste pas moins un format tout aussi Microsoftien que le .DOC
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en
RTF qui est un format standard ? N'importe quel traitement de texte sait
enregistrer en RTF.
ça ne changerait pas grand-chose, il me faudrait ensuite une procédure
de traduction du code RTF afin d'en extraire le texte
D'accord c'est plutôt hors sujet mais je me pose vraiment la question.
Pourquoi ne pas donner la priorité aux formats standards, et se prendre
la tête avec des formats propriétaires ?
- pour simplifier la tâche de mes (futurs) visiteurs; plutôt que
d'enregistrer en RTF, je peux leur demander de faire un copier-coller du
contenu de leur doc dans une TEXTAREA, cela n'est pas plus compliqué
pour eux, alors que c'est bcp + simple et + portable pour moi. Mais si
c'est possible, j'aimerais bien leur éviter une manipulation et donc
pouvoir lire du .DOC (et du .RTF, mais je suppose qu'un truc capable de
lire du .DOC est également capable de lire du .RTF)
- juste pour chipoter, le .RTF est certes un format d'échange devenu
standard, mais ça n'en reste pas moins un format tout aussi Microsoftien
que le .DOC
Question de néophyte: pourquoi ne pas accepter uniquement les uploads en RTF qui est un format standard ? N'importe quel traitement de texte sait enregistrer en RTF.
ça ne changerait pas grand-chose, il me faudrait ensuite une procédure de traduction du code RTF afin d'en extraire le texte
D'accord c'est plutôt hors sujet mais je me pose vraiment la question. Pourquoi ne pas donner la priorité aux formats standards, et se prendre la tête avec des formats propriétaires ?
- pour simplifier la tâche de mes (futurs) visiteurs; plutôt que d'enregistrer en RTF, je peux leur demander de faire un copier-coller du contenu de leur doc dans une TEXTAREA, cela n'est pas plus compliqué pour eux, alors que c'est bcp + simple et + portable pour moi. Mais si c'est possible, j'aimerais bien leur éviter une manipulation et donc pouvoir lire du .DOC (et du .RTF, mais je suppose qu'un truc capable de lire du .DOC est également capable de lire du .RTF)
- juste pour chipoter, le .RTF est certes un format d'échange devenu standard, mais ça n'en reste pas moins un format tout aussi Microsoftien que le .DOC
Stephane
"Antoine Dinimant" a écrit
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Oui La voilà:
// ***************************************************************************** // Définition de la fonction "liredoc", qui stocke le texte d'un fichier ".doc" // (Word 97, 2002 ou 2002 uniquement) dans un fichier ".doc.txt" // *****************************************************************************
function liredoc($fichier) {
// Cette chaine se trouve juste avant le premier caractère lisible de tout // document word $debut_binaire = "00d9000000"; // Pareil pour la fin $fin_binaire = "0000";
$chaine = $chaine_ascii = "";
// Ouverture du document word en mode binaire $fp = fopen($fichier,"rb");
while (!feof($fp)) {
$chaine = fread($fp,filesize($fichier));
// Codage du fichier en mode hexadécimal $chaine = bin2hex($chaine);
// Enlève tous les caractères illisibles du début du fichier $debut_chaine = strpos($chaine,$debut_binaire)+10; $chaine = substr($chaine,$debut_chaine,filesize($fichier));
// Pareil pour la fin $fin_chaine = strpos($chaine,$fin_binaire); $chaine = substr($chaine,0,$fin_chaine);
// Codage de la chaine hexa en texte ascii : for ($i=0;$i<strlen($chaine);$i+=2) {
// On prend les deux caractères hexa... $car=substr($chaine,$i,2);
// On enlève ou remplace certains indésirables... if ($car!="00") { if ($car!="0d") {
// On code les hexa en décimal, puis en ascii $car=hexdec($car); $car=chr($car);
} else $car = "<BR>"; } else $car = "";
$chaine_ascii.=$car; } }
fclose($fp);
// Enregistrement dans un fichier ".doc.txt" $fichier_txt = str_replace(".doc",".doc.txt",$fichier);
// Sert uniquement pour afficher le résultat pendant les tests. A enlever. return $chaine_ascii;
}
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
"Antoine Dinimant" a écrit
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Oui
La voilà:
// *****************************************************************************
// Définition de la fonction "liredoc", qui stocke le texte d'un fichier ".doc"
// (Word 97, 2002 ou 2002 uniquement) dans un fichier ".doc.txt"
// *****************************************************************************
function liredoc($fichier) {
// Cette chaine se trouve juste avant le premier caractère lisible de tout
// document word
$debut_binaire = "00d9000000";
// Pareil pour la fin
$fin_binaire = "0000";
$chaine = $chaine_ascii = "";
// Ouverture du document word en mode binaire
$fp = fopen($fichier,"rb");
while (!feof($fp)) {
$chaine = fread($fp,filesize($fichier));
// Codage du fichier en mode hexadécimal
$chaine = bin2hex($chaine);
// Enlève tous les caractères illisibles du début du fichier
$debut_chaine = strpos($chaine,$debut_binaire)+10;
$chaine = substr($chaine,$debut_chaine,filesize($fichier));
// Pareil pour la fin
$fin_chaine = strpos($chaine,$fin_binaire);
$chaine = substr($chaine,0,$fin_chaine);
// Codage de la chaine hexa en texte ascii :
for ($i=0;$i<strlen($chaine);$i+=2) {
// On prend les deux caractères hexa...
$car=substr($chaine,$i,2);
// On enlève ou remplace certains indésirables...
if ($car!="00") {
if ($car!="0d") {
// On code les hexa en décimal, puis en ascii
$car=hexdec($car);
$car=chr($car);
} else $car = "<BR>";
} else $car = "";
$chaine_ascii.=$car;
}
}
fclose($fp);
// Enregistrement dans un fichier ".doc.txt"
$fichier_txt = str_replace(".doc",".doc.txt",$fichier);
// Sert uniquement pour afficher le résultat pendant les tests. A enlever.
return $chaine_ascii;
}
--
Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo
http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2
http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Oui La voilà:
// ***************************************************************************** // Définition de la fonction "liredoc", qui stocke le texte d'un fichier ".doc" // (Word 97, 2002 ou 2002 uniquement) dans un fichier ".doc.txt" // *****************************************************************************
function liredoc($fichier) {
// Cette chaine se trouve juste avant le premier caractère lisible de tout // document word $debut_binaire = "00d9000000"; // Pareil pour la fin $fin_binaire = "0000";
$chaine = $chaine_ascii = "";
// Ouverture du document word en mode binaire $fp = fopen($fichier,"rb");
while (!feof($fp)) {
$chaine = fread($fp,filesize($fichier));
// Codage du fichier en mode hexadécimal $chaine = bin2hex($chaine);
// Enlève tous les caractères illisibles du début du fichier $debut_chaine = strpos($chaine,$debut_binaire)+10; $chaine = substr($chaine,$debut_chaine,filesize($fichier));
// Pareil pour la fin $fin_chaine = strpos($chaine,$fin_binaire); $chaine = substr($chaine,0,$fin_chaine);
// Codage de la chaine hexa en texte ascii : for ($i=0;$i<strlen($chaine);$i+=2) {
// On prend les deux caractères hexa... $car=substr($chaine,$i,2);
// On enlève ou remplace certains indésirables... if ($car!="00") { if ($car!="0d") {
// On code les hexa en décimal, puis en ascii $car=hexdec($car); $car=chr($car);
} else $car = "<BR>"; } else $car = "";
$chaine_ascii.=$car; } }
fclose($fp);
// Enregistrement dans un fichier ".doc.txt" $fichier_txt = str_replace(".doc",".doc.txt",$fichier);
// Sert uniquement pour afficher le résultat pendant les tests. A enlever. return $chaine_ascii;
}
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
Denis Beauregard
Le 07 Jun 2004 09:28:33 GMT, Antoine Dinimant écrivait dans fr.comp.lang.php:
- juste pour chipoter, le .RTF est certes un format d'échange devenu standard, mais ça n'en reste pas moins un format tout aussi Microsoftien que le .DOC
Jusqu'à Word 97 ou 2000, le .doc était un format binaire. Puis, à partir de la version suivante (ou celle qui a suivi la suivante ?), le .doc devait être une sorte de html. Je ne sais pas si cela a été fait.
Par ailleurs, dans Word 97, enregistrer en format Word 6 revient à enregistrer en format RTF (qui est du texte sans binaire).
Finalement, sur Hotmail, si on choisit d'envoyer un message en RTF, on envoie un message en format html. Donc, M$ peut éventuellement publier une description du RTF qui ne serait plus la même.
Denis
Le 07 Jun 2004 09:28:33 GMT, Antoine Dinimant <antoun@free.fr>
écrivait dans fr.comp.lang.php:
- juste pour chipoter, le .RTF est certes un format d'échange devenu
standard, mais ça n'en reste pas moins un format tout aussi Microsoftien
que le .DOC
Jusqu'à Word 97 ou 2000, le .doc était un format binaire. Puis, à
partir de la version suivante (ou celle qui a suivi la suivante ?),
le .doc devait être une sorte de html. Je ne sais pas si cela a été
fait.
Par ailleurs, dans Word 97, enregistrer en format Word 6 revient à
enregistrer en format RTF (qui est du texte sans binaire).
Finalement, sur Hotmail, si on choisit d'envoyer un message en RTF,
on envoie un message en format html. Donc, M$ peut éventuellement
publier une description du RTF qui ne serait plus la même.
Le 07 Jun 2004 09:28:33 GMT, Antoine Dinimant écrivait dans fr.comp.lang.php:
- juste pour chipoter, le .RTF est certes un format d'échange devenu standard, mais ça n'en reste pas moins un format tout aussi Microsoftien que le .DOC
Jusqu'à Word 97 ou 2000, le .doc était un format binaire. Puis, à partir de la version suivante (ou celle qui a suivi la suivante ?), le .doc devait être une sorte de html. Je ne sais pas si cela a été fait.
Par ailleurs, dans Word 97, enregistrer en format Word 6 revient à enregistrer en format RTF (qui est du texte sans binaire).
Finalement, sur Hotmail, si on choisit d'envoyer un message en RTF, on envoie un message en format html. Donc, M$ peut éventuellement publier une description du RTF qui ne serait plus la même.
Denis
Stephane Thomas
Antoine Dinimant wrote:
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Merci d'avance !
Antoun
Peut-être une piste (si abiword est installé sur le serveur qui exécute PHP) :
abiword -t txt fichier.doc
génère un fichier.txt contenant le texte contenu dans le .doc (on peut aussi faire un -t html, ce qui peut être interessant.
Stef
Antoine Dinimant wrote:
Bonjour,
Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Merci d'avance !
Antoun
Peut-être une piste (si abiword est installé sur le serveur qui exécute
PHP) :
abiword -t txt fichier.doc
génère un fichier.txt contenant le texte contenu dans le .doc (on peut
aussi faire un -t html, ce qui peut être interessant.
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Avez-vous des pistes ?
Merci d'avance !
Antoun
Peut-être une piste (si abiword est installé sur le serveur qui exécute PHP) :
abiword -t txt fichier.doc
génère un fichier.txt contenant le texte contenu dans le .doc (on peut aussi faire un -t html, ce qui peut être interessant.
Stef
Antoine Dinimant
Je viens de tester avec un doc Word 2002 tout ce qu'il y a de plus standard, sans images ni macro (je suis en EasyPHP sur Windows XP), j'obtiens juste ±á (en hexa les caractères B1, 1A et E1), qui semble faire partie de l'en-tête... En fait, mon fichier commence par ÐÏࡱá (D0, CF, 11, E0, A1, puis la séquence ci-dessus), puis une série d'espaces. Est-ce une coquille dans ton code, ou une config non prévue ?
En tout cas, bravo pour le boulot ! Comment as-tu obtenu les specs du codage de Word ?
Antoun
Je viens de tester avec un doc Word 2002 tout ce qu'il y a de plus
standard, sans images ni macro (je suis en EasyPHP sur Windows XP),
j'obtiens juste ±á (en hexa les caractères B1, 1A et E1), qui semble
faire partie de l'en-tête... En fait, mon fichier commence par ÐÏࡱá
(D0, CF, 11, E0, A1, puis la séquence ci-dessus), puis une série
d'espaces. Est-ce une coquille dans ton code, ou une config non prévue ?
En tout cas, bravo pour le boulot ! Comment as-tu obtenu les specs du
codage de Word ?
Je viens de tester avec un doc Word 2002 tout ce qu'il y a de plus standard, sans images ni macro (je suis en EasyPHP sur Windows XP), j'obtiens juste ±á (en hexa les caractères B1, 1A et E1), qui semble faire partie de l'en-tête... En fait, mon fichier commence par ÐÏࡱá (D0, CF, 11, E0, A1, puis la séquence ci-dessus), puis une série d'espaces. Est-ce une coquille dans ton code, ou une config non prévue ?
En tout cas, bravo pour le boulot ! Comment as-tu obtenu les specs du codage de Word ?
Antoun
Jean-Marc Molina
Antoine Dinimant a écrit/wrote :
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Sous Windows uniquement, tu peux utiliser les fonctions COM de PHP. Un exemple est dispo dans le manuel, création et sauvegarde d'un document au format Word (.doc). Pour les autres objets et méthodes disponibles, voir l'API de Word (MSDN).
JM
Antoine Dinimant a écrit/wrote :
Je cherche un système permettant à PHP de lire le texte d'un document
Word uploadé. J'ai entendu parler de diverses classes permettant cela,
mais soit elles ne fonctionnent que sur un serveur Windows, soit elles
ne permettent que de créer des .doc à la volée mais pas d'en lire...
Sous Windows uniquement, tu peux utiliser les fonctions COM de PHP. Un
exemple est dispo dans le manuel, création et sauvegarde d'un document au
format Word (.doc). Pour les autres objets et méthodes disponibles, voir
l'API de Word (MSDN).
Je cherche un système permettant à PHP de lire le texte d'un document Word uploadé. J'ai entendu parler de diverses classes permettant cela, mais soit elles ne fonctionnent que sur un serveur Windows, soit elles ne permettent que de créer des .doc à la volée mais pas d'en lire...
Sous Windows uniquement, tu peux utiliser les fonctions COM de PHP. Un exemple est dispo dans le manuel, création et sauvegarde d'un document au format Word (.doc). Pour les autres objets et méthodes disponibles, voir l'API de Word (MSDN).
JM
Jean-Marc Molina
jerome herve a écrit/wrote :
Sur windows, tu peux te servir des objets dom. si word est sur le serveur, c'est possible.
De COM pas de DOM. COM est un protocole de communication qui te permettra d'accès à l'ensemble des fonctionnalités disponibles dans l'API de Word/Office.
JM
jerome herve a écrit/wrote :
Sur windows, tu peux te servir des objets dom. si word est sur le
serveur, c'est possible.
De COM pas de DOM. COM est un protocole de communication qui te permettra
d'accès à l'ensemble des fonctionnalités disponibles dans l'API de
Word/Office.
Sur windows, tu peux te servir des objets dom. si word est sur le serveur, c'est possible.
De COM pas de DOM. COM est un protocole de communication qui te permettra d'accès à l'ensemble des fonctionnalités disponibles dans l'API de Word/Office.