IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Archive de fichiers HTML/PDF


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut Archive de fichiers HTML/PDF
    Bonjour,

    Je cherche une solution à un problème, et j'avoue que je patauge un peu pour le moment.

    J'ai certains documents HTML qui sont générés avec du PHP, et j'aimerais regrouper ceux-ci dans une archive pour qu'un utilisateur qui clique sur une icône récupère cette archive (l'idéal étant de convertir ces documents html en pdf avant de les archiver).


    Premièrement, je voudrais savoir si c'était possible? (en php, javascript, ajax...)
    Et ensuite, comment je pourrais m'y prendre.

    Pour le moment j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><A href="./toolbox/Archive/archive.php"><img id ="archive" src='images/archive.png' width='24px' height='24px' /></A></td>
    Le click sur ce lien m'amène sur une page php me permettant de traiter l'archive. J'ai globalement vu comment cela fonctionnait avec ZipArchive, mais avant d'ajouter un fichier à l'archive, il faudrait que la page html soit convertie en PDF.

    Vous avez une idée?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Tu poura utilisé http://html2pdf.fr/ mais tu dois suivre leur structure du html
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Je suis en effet en train d'y jeter un oiel, mais cela ne me convient pas vraiment. J'ai plusieurs structures de documents différents, déjà faits, et je ne peux pas les modifier.

    Certains convertisseurs en ligne me permettent d'obtenir un document PDF convenable, mais il ne faut pas que ce soit comme çà que je procède. Il faudrait convertir (sans récupérer) un html en pdf, puis mettre ce PDF dans une archive.

    Bon, je te remercie pour ta réponse, je continue mes recherches, et espère que vous pourrez m'aider.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Il y'a un outil il peut te générer tes document mais il s'execute en shell, si ta la main sur ton serveur. il est très fort. il te génére le pdf depuis un URL. "WKHTMLTOPDF"
    A la recherche d'un film : http://chercher-un-film.com

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Aie, on va dire que je ne peux pas y accéder comme je le veux. Tu connais un autre moyen par hasard?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Finalement je vais tenter d'utiliser WKHTMLTOPDF. D'abord en local, puis si tout va bien sur le serveur.

    Tu connaîtrais pas un bon tuto sur le sujet par hasard? Je vais chercher, et tester. Je tiendrais au courant de mes avancées sur ce topic.


    edit:
    Bon, j'ai plus ou moins réussi, mais j'ai un problème. Dans le document html à convertir, j'ai du javascript. Sauf que tout n'a pas l'air de se charger (en tout cas, le rendu est différent entre le document ouvert en html et le pdf).

    Quelqu'un a une solution? J'utilise ce script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell_exec('c:/wkhtmltopdf/wkhtmltopdf --enable-javascript --javascript-delay 2000 "http://localhost/mapage.php" C:/Temp/29.pdf 2>> err5.txt');

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Si tu peux me donner un URL pour voir la page comment il est
    A la recherche d'un film : http://chercher-un-film.com

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    En fait, c'est bon

    Un problème pour récupérer un élément avec le dom, qui fonctionnait avec le document en html, mais qui avait un soucis après la conversion en pdf. C'est réglé donc.

    Maintenant, je travail sur l'archive de documents pdf.

    J'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $zip = new ZipArchive(); 
          if($zip->open('zipTest.zip', ZipArchive::CREATE) === true)
          {
     
        // Ajout d'un fichier.
        $zip->addFile('1.pdf');
        $zip->addFile('2.pdf');
        $zip->addFile('3.pdf');
     
            // Et on referme l’archive.
        $zip->close();
     
        // header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier).
          header('Content-Type: application/x-zip'); 
        // force le téléchargement 
        header('Content-Disposition: inline; filename=zipTest.zip'); 
     
        //  readfile('zipTest.zip');
     
          }
          else
          {
            echo 'Impossible d'ouvrir...';
        // Traitement des erreurs avec un switch(), par exemple.
          }
    Cela me propose donc en téléchargement l'archive avec les pdf dedans. Pour mes tests, il y a un fichier .zip qui est mis sur le serveur (localhost pour le moment), et le fichier zip en téléchargement, que l'utilisateur place où il veut.

    Pour le moment, voici les soucis que j'ai:
    -En ouvrant le fichier zip sur le serveur, j'arrive à l'ouvrir et à lire les pdf situés à l'intérieur, ici 1.pdf, 2.pdf, 3.pdf. Par contre, je n'arrive pas à extraire l'archive, j'ai le message d'erreur suivant:
    "Can not open file ****.zip as archive"
    -J'obtiens le même message d'erreur que j'essaie d'ouvrir ou extraire le fichier zip téléchargé.

    Je vais essayé de trouver la solution, en attendant si quelqu'un à la solution, il est le bienvenue


    edit: en fait tout fonctionne bien avec le fichier côté serveur, c'est juste quand je propose le téléchargement que j'ai l'erreur d'ouverture du fichier

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bon, le problème est résolu, je "résume" un peu le tout pour que ceux qui ont (ou qui vont avoir) le même problème puisse s'y retrouver:


    1- Premièrement, télécharger WKHTMLTOPDF ici et l'installer.

    2-Ensuite, executer le script permettant de convertir un document HTML en PDF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /shell_exec('c:/wkhtmltopdf/wkhtmltopdf --enable-javascript --javascript-delay 2000 "http://localhost/mapageHtmlOuPhp.php" C:/Temp/2.pdf 2>> fichierErr.txt');
    c:/wkhtmltopdf/wkhtmltopdf correspond au répertoire d'installation de WKHTMLTOPDF. Moi je l'ai mis sur c:/wkhtmltopdf, mais je vais sûrement changer quand je vais faire mes tests sur le serveur.

    --enable-javascript --javascript-delay 2000 peut être inutile, mais à priori çà laisse le temps au javascript de bien se terminer, si vos documents contiennent du javascript bien sûr

    http://localhost/mapageHtmlOuPhp.php la page que vous souhaitez transformer en PDF (localhost est aussi à changer pour moi quand je ferais mes tests sur le serveur)

    C:/Temp/2.pdf le lieu de destination et le nom du pdf obtenue de la conversion (je choisirais un emplacement sur le serveur)

    2>> fichierErr.txt A consulter si il y a un problème lors de la conversion, les erreurs seront insérées dans ce fichier

    3-Créer une archive à partir du (ou des) PDF créé(s):
    J'ai trouvé une fonction pour le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     /* creates a compressed zip file */
    function create_zip($files = array(),$destination = '',$overwrite = false) {
    	//if the zip file already exists and overwrite is false, return false
    	if(file_exists($destination) && !$overwrite) { return false; }
    	//vars
    	$valid_files = array();
    	//if files were passed in...
    	if(is_array($files)) {
    		//cycle through each file
    		foreach($files as $file) {
    			//make sure the file exists
    			if(file_exists($file)) {
    				$valid_files[] = $file;
    			}
    		}
    	}
    	//if we have good files...
    	if(count($valid_files)) {
    		//create the archive
    		$zip = new ZipArchive();
    		if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		//add the files
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    		//debug
    		//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
     
    		//close the zip -- done!
    		$zip->close();
     
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    source

    et voici comment l'utiliser (un exemple toujours dans la même source):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //On met la liste des fichiers à zipper
    $files_to_zip = array(
    	'1.pdf',
    	'2.pdf',
    	'3.pdf'
    );
    //On créé le zip
    $result = create_zip($files_to_zip,'my-archive.zip');
    Cela va archiver les documents précisés dans le tableau $files_to_zip dans une archive nommée my-archive.zip.

    4- On propose l'archive créée en téléchargement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $NomFich="my-archive.zip";
    header("content-type: application/octet-stream"); 
    header("Content-Disposition: attachment; filename=" .$NomFich);
    readfile($NomFich); // Envoie le fichier
    flush(); // vide le buffer

    5-On supprime éventuellement l'archive du serveur si on ne veut pas le garder


    Je crois que c'est tout!

    Merci pour ton aide m4riachi, bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir un fichier HTML en fichier PDF en ligne de commande
    Par koKoTis dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 15/06/2009, 23h06
  2. [PDF] Transformer un fichier html/php en pdf
    Par super-java dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/06/2008, 20h15
  3. [BATCH] impression automatisée en pdf de fichiers html
    Par gastaman dans le forum Windows
    Réponses: 0
    Dernier message: 22/01/2008, 17h19
  4. ouverture fichier html et pdf
    Par nicoooooo dans le forum Web
    Réponses: 4
    Dernier message: 15/06/2006, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo