GÉNÉRER DES DOCUMENTS OPENOFFICE (OPENDOCUMENT) OU WORD 2007 AVEC PHP
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009
-
6 mai 2009 à 11:21
Utilisateur anonyme -
31 août 2009 à 12:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Quelqu'un pourrait m'éclairer sur l'utilisation de ce code (ou le placer...)
Merci,
patator13
Messages postés4Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention 7 octobre 2010 8 juin 2009 à 11:52
Bonjour,
J'ai un petit soucis pour récupérer une photo
Lorsque je prends l'exemple je ne rencontre pas de soucis, par contre lorsque je souhaite le mettre sur mon applicatif il ne m'affiche rien
Quelle est la meilleur solution
- c:\xammp\htdocs\monsite\template1\monimage.jpg
- ./template1/monimage.jpg
- /template1/monimage.jpg
Car aucune des 3 solutions ne fonctionnent
Merci d'avance
Patator
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 5 juin 2009 à 11:32
// send and remove the document
$doc->sendResponse();
$doc->remove();
?>
J'ai surement mal compris le script. Je travail en local avec easyphp et utilise 7-zip pour dézippé
Merci de votre réponse
cordialement
Lockkcol
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 13 mai 2009 à 18:57
Toujours ce problème de ZipArchive.
Personnellement je pensais avec le hack que j'avais préconisé que cela fonctionnait, car, bien que que l'archive soit corrumpue, le fichier reste lisible par OpenOffice.
Je suis d'accord aussi avec toi sur le fait qu'une classe externe pour Zipper/Dezipper est le mieux, c'est ce que j'avais prévu de mon côté.
Je n'ai pas plus investigué pourquoi ZipArchive ne fonctionne pas correctement depuis a priori PHP 5.2.7
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 13 mai 2009 à 18:33
Donc on revient bien sur le problème de ZipArchive... et contrairement à ce que tu disais dans un commentaire sur ma source modifiée de odtphp, il n'y a pas de "hack" possible et l'utilisation d'une classe externe pour le zip reste le plus simple et le plus portable.
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 9 mai 2009 à 15:37
J'ai testé la classe avec la dernière version d'OpenOffice 3.1.0 et c'est OK.
Pour les problèmes d'archive corrompue, cela vient de la compression avec la librairie PECL ZipArchive.
Il n'est pas nécessaire de mettre des guillemets (") dans le nom du chemin, c'est automatique
Pour Windows on peut écrire soit avec des slashs (/) ou soit avec des antislashs (\)
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 9 mai 2009 à 13:36
Je n'ai pas testé avec la dernière version 3.1.0
Actuellement je travaillais avec la version 3.0.1
Je télécharge et je fais quelques tests avant.
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 9 mai 2009 à 12:19
En fait j'ai essayé les 2 et même si je n'ai plus de message d'erreur , le fichier est corrompu.. je pense que c'est à cause d'OO 3.1. Ca marche chez toi avec cette version ?
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 9 mai 2009 à 12:15
La suite....
Il faut que j'ajoute dans ma classe des fonctionnalités pour traiter le problème pour zip et unzip pour windows
Pour l'instant je conseille de mettre zip et unzip dans le path de windows
ex.
> click droit sur "Poste de travail" pour obtenir les "propriétés du système"
> click sur l'onglet "Avancé"
> click sur le bouton "Variables d'environnement"
Dans les variables systèmes, choisir "path"
> click sur le bouton "modifier"
> Et rajouter à la fin, par exemple :
C:\Program Files\zip
avec un ; pour séparer
Si les binaires de zip et unzip sont installés dans C:\Program Files\zip
*** pour que les modifications soient actives, il faut fermer ou redémarrer la session windows
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 9 mai 2009 à 11:13
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 8 mai 2009 à 23:29
Ta classe est-elle compatible avec OpenOffice 3.0 ? Mon problème d'utilisation pourrait venir de la ?
Si non, ce serait bien que tu fasses évoluer ta classe pour OO 3.X
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 8 mai 2009 à 22:22
Ca l'air vraiment très bien et en plus il gère du word.
Malgré tout, pour OpenOffice je préfère un truc indépendant comme ODTPHP car ta source dépend de tinyButStrong. Ca peut être toujours un peu inquiétant pour l'évolution mais c'est un avis perso.
Sinon après installation (PHP 5.2.9) :
Fatal error: Uncaught exception 'tinyDocException' with message '"zip" not executable' in D:\wamp\www\tinydoc\tinyDoc.class.php:919 Stack trace: #0 D:\wamp\www\tinydoc\executeBasic.php(9): tinyDoc->setZipBinary('zip') #1 {main} thrown in D:\wamp\www\tinydoc\tinyDoc.class.php on line 919
D'ou cela pourrait il venir ? le même problème que dans la version de base d'ODTPHP ?
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 6 mai 2009 à 15:24
Il y a un petit bug dans tes exemples, le rendu pour word n'affiche que du code PHP.
Sinon, l'idée d'utiliser un moteur de template est vraiment intéressant pour ce genre de source surtout que ça multiplie les possibilités sans avoir à se cassé la tête pour le développer.
oloynet
Messages postés10Date d'inscriptionjeudi 3 mars 2005StatutMembreDernière intervention 5 juin 2009 6 mai 2009 à 11:21
31 août 2009 à 12:53
Quelqu'un pourrait m'éclairer sur l'utilisation de ce code (ou le placer...)
Merci,
8 juin 2009 à 11:52
J'ai un petit soucis pour récupérer une photo
Lorsque je prends l'exemple je ne rencontre pas de soucis, par contre lorsque je souhaite le mettre sur mon applicatif il ne m'affiche rien
Quelle est la meilleur solution
- c:\xammp\htdocs\monsite\template1\monimage.jpg
- ./template1/monimage.jpg
- /template1/monimage.jpg
Car aucune des 3 solutions ne fonctionnent
Merci d'avance
Patator
5 juin 2009 à 11:32
Pour zipper et dézipper, il faut installer les binaires suivant de http://www.info-zip.org/
normalement pour les télécharger les binaires :
http://sourceforge.net/project/showfiles.php?group_id=118012
Mais je n'ai pas trouvé les binaires pour windows.
Un autre site
http://stahlforce.com/dev/index.php?tool=zipunzip
ZIP
http://stahlforce.com/dev/zip.exe
UNZIP
http://stahlforce.com/dev/unzip.exe
Olivier
5 juin 2009 à 10:47
J'ai un probleme avec ce petit script.
erreur :
Fatal error: Uncaught exception 'tinyDocException' with message 'Xml file not found
je vous joins aussi le script qui est identique au votre à l'exception des chemin
<?php
// libs
include('./lib/tinyButStrong.class.php');
include('./lib/tinyDoc.class.php');
// create the document
$doc = new tinyDoc();
$doc->setZipMethod('shell');
$doc->setZipBinary('C:/Program Files/7-Zip/7z.exe');
$doc->setUnzipBinary('C:/Program Files/7-Zip/7z.exe');
$doc->setProcessDir('./tmp');
$doc->createFrom('templates/basicWord.docx');
$doc->loadXml('content.xml');
$doc->mergeXmlField('field1', 'variable');
$doc->mergeXmlField('field2', array('id' => 55, 'name' => 'bob'));
$doc->mergeXmlBlock('block1',
array(
array('firstname' => 'John' , 'lastname' => 'Doe'),
array('firstname' => 'Douglas', 'lastname' => 'Adams'),
array('firstname' => 'Roger' , 'lastname' => 'Waters'),
)
);
$doc->saveXml();
$doc->close();
// send and remove the document
$doc->sendResponse();
$doc->remove();
?>
J'ai surement mal compris le script. Je travail en local avec easyphp et utilise 7-zip pour dézippé
Merci de votre réponse
cordialement
Lockkcol
13 mai 2009 à 18:57
Personnellement je pensais avec le hack que j'avais préconisé que cela fonctionnait, car, bien que que l'archive soit corrumpue, le fichier reste lisible par OpenOffice.
Je suis d'accord aussi avec toi sur le fait qu'une classe externe pour Zipper/Dezipper est le mieux, c'est ce que j'avais prévu de mon côté.
Je n'ai pas plus investigué pourquoi ZipArchive ne fonctionne pas correctement depuis a priori PHP 5.2.7
13 mai 2009 à 18:33
9 mai 2009 à 15:37
Pour les problèmes d'archive corrompue, cela vient de la compression avec la librairie PECL ZipArchive.
Exemple de configuration par la méthode 'shell'
$doc->setZipMethod('shell');
$doc->setZipBinary('zip');
$doc->setUnzipBinary('unzip');
ou si vous devez fixer le chemin complet vers les exécutables.
$doc->setZipMethod('shell');
$doc->setZipBinary('C:/Program Files/Zip/zip.exe');
$doc->setUnzipBinary('C:/Program Files/Zip/unzip.exe');
Il n'est pas nécessaire de mettre des guillemets (") dans le nom du chemin, c'est automatique
Pour Windows on peut écrire soit avec des slashs (/) ou soit avec des antislashs (\)
9 mai 2009 à 13:36
Actuellement je travaillais avec la version 3.0.1
Je télécharge et je fais quelques tests avant.
9 mai 2009 à 12:19
9 mai 2009 à 12:15
Il faut que j'ajoute dans ma classe des fonctionnalités pour traiter le problème pour zip et unzip pour windows
Pour l'instant je conseille de mettre zip et unzip dans le path de windows
ex.
> click droit sur "Poste de travail" pour obtenir les "propriétés du système"
> click sur l'onglet "Avancé"
> click sur le bouton "Variables d'environnement"
Dans les variables systèmes, choisir "path"
> click sur le bouton "modifier"
> Et rajouter à la fin, par exemple :
C:\Program Files\zip
avec un ; pour séparer
Si les binaires de zip et unzip sont installés dans C:\Program Files\zip
*** pour que les modifications soient actives, il faut fermer ou redémarrer la session windows
9 mai 2009 à 11:13
Il y a deux choix de configuration, soit
1/ Les binaires zip/unzip sont installés
$doc->setZipMethod('shell');
$doc->setZipBinary('zip');
$doc->setUnzipBinary('unzip');
ou
2/ on a la classe Zip de PECL
$doc->setZipMethod('ziparchive');
Dans la méthode 1, il faut que les binaires zip.exe et unzip.exe soit dans le path de windows ou sinon, il faut fixer le chemin complet.
Attention, j'utilise les '/' et non les '\' car il y a un bug avec la fonction de PHP (escapeshellcmd) sous windows
S'il y a un espace dans le chemin, il faut mettre des " comme ci-dessous
$doc->setZipMethod('shell');
$doc->setZipBinary('"C:/Program Files/Zip/zip.exe"');
$doc->setUnzipBinary('"C:/Program Files/Zip/unzip.exe"');
Olivier
8 mai 2009 à 23:29
Si non, ce serait bien que tu fasses évoluer ta classe pour OO 3.X
8 mai 2009 à 22:22
Malgré tout, pour OpenOffice je préfère un truc indépendant comme ODTPHP car ta source dépend de tinyButStrong. Ca peut être toujours un peu inquiétant pour l'évolution mais c'est un avis perso.
Sinon après installation (PHP 5.2.9) :
Fatal error: Uncaught exception 'tinyDocException' with message '"zip" not executable' in D:\wamp\www\tinydoc\tinyDoc.class.php:919 Stack trace: #0 D:\wamp\www\tinydoc\executeBasic.php(9): tinyDoc->setZipBinary('zip') #1 {main} thrown in D:\wamp\www\tinydoc\tinyDoc.class.php on line 919
D'ou cela pourrait il venir ? le même problème que dans la version de base d'ODTPHP ?
6 mai 2009 à 15:24
Sinon, l'idée d'utiliser un moteur de template est vraiment intéressant pour ce genre de source surtout que ça multiplie les possibilités sans avoir à se cassé la tête pour le développer.
6 mai 2009 à 11:21
[url]http://tinydoc.unesolution.fr/examples/url