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

JavaScript Discussion :

Imprimer en rafale tous les fichiers d'un dossier


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2018
    Messages : 44
    Par défaut Imprimer en rafale tous les fichiers d'un dossier
    Bonjour
    Contexte*: Je gère le site de ma chorale. Ce site est bâti avec des frames.
    En local, je suis en PHP 5.2.0 et mysql 5.0.22
    Chez l'hébergeur (pages perso de Free) c'est PHP 5.1.3RC4-dev et mysql 5.0.77
    Je développe actuellement un module de gestion des dons reçus par l'association.

    Problème*: après que j'ai créé les reçus fiscaux relatifs à des dons reçus par l'association, les fichiers pdf à imprimer sont placés dans un sous-dossier.
    Je souhaite pouvoir lancer globalement l'impression de cet ensemble de fichiers (la chorale ne reçoit pas des dons à la pelle*: il ne devrait jamais y avoir plus que quelques fichiers se comptant sur les doigts d'une main).
    Je place les noms des fichiers dans un array php.
    J'ai trouvé sur le web une fonction javascript PrintAll() qui imprime un groupe de fichiers.
    Sur une page intitulée Imprimer les reçus fiscaux, j'ai mis un bouton Imprimer les reçus fiscaux qui exécute la fonction PrintAll() sur l'événement onclick.
    Les fichiers à imprimer sont dans un sous-dossier plusieurs niveaux sous celui où se situe la page qui lance l'impression.
    Pour l'instant, j'ai une erreur 'syntax error, unexpected EOF'.
    Le script php concerné est en pièce jointe. J'y ai recopié le modèle de fonction javascript.
    J'espère que vous pourrez m'aider.
    Merci d'avance. Cordialement.
    Code html : 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php
     
    session_start();
     
    require_once ("Evi_config.php");
    require_once ($evi_config['util_dir']."UtilGen.php");
    require_once ("dm_fonctions.php");
    require_once ("dm_NullDntr.php");
     
     
    //niveau d'habilitation requis pour accéder à la page 
    $page_level = LEVEL_MEMBRECA;
     
      // Connexion à la base de données
    if(!isset($bd)) {  
            //$bd->__destruct ();
            $bd = new BDMySQL (NOM, PASSE, BASE, SERVEUR);
    }
    //Contrôle de la session
    $session = ControleAccesNiveaux ("dm_d_imprim_recus.php", $_POST, session_id(), $bd, $page_level);
     
            Entete ("DONS ET MECENAT");
     
            echo '<a href="dm_accueil.php" target="main">Retour à l\'accueil de Dons et mécénat</a><br>';
            echo '<a href="dm_dons.php" target="main">Retour à la gestion des Dons</a><br>';
            echo '<h1 style="text-align:center;">Imprimer les reçus fiscaux édités</h1>';
            //echo '<h2 style="text-align:center;">Liste des reçus fiscaux à éditer</h2>';
            
            
            $dirname = './Fichiers/recus_fiscaux/recus_a_imprimer/';
            $dir = opendir($dirname);
     
            while($file = readdir($dir)) {
            if($file != '.' && $file != '..' && !is_dir($dirname.$file))
            {
            echo '- <a href="'.$dirname.$file.'">'.$file.'</a>'.'<br /><br />';
     
            $filelist[] = $file;
            $cheminFilelist[] = $dirname.$file;
            }
            }
            
            closedir($dir); 
            print_r ($filelist);
            echo "<br>";
            print_r ($cheminFilelist);
    ?>	
    	<br><br><button onclick="PrintAll();">Imprimer les reçus fiscaux</button><br>
    	//Modèle de fonction trouvé sur le web :
    	<script type="text/javascript">
            function PrintAll() {
        var pages = ["page1.pdf", "page2.pdf", "page3.pdf"];
        for (var i = 0; i < pages.length; i++) {
            var oWindow = window.open(pages[i], "print");
            oWindow.print();
            oWindow.close();
        }
            }
            </script>
     
    	// l'adaptation que j'en fais :
     
    	<script type="text/javascript">
                    function PrintAll() {
                    var pages = <?php echo '["' . implode(\'", "\', $filelist) . \'"]\' ?>;
                            for (var i = 0; i < 3; i++) {
                                    var oWindow = window.open(\'Fichiers/recus_fiscaux/recus_a_imprimer/\' + pages[i], \'print\');
                                oWindow.print();
                                oWindow.close();
                    }               
                    }
            </script>
    	</BODY>
    	</HTML>
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 433
    Par défaut
    Bonjour,

    Quel le message d'erreur complet que tu rencontres (notamment le numéro de ligne) et quelle est la ligne correspondante dans ton code ?
    Il semble que tu as une erreur de syntaxe sur la ligne 65 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var pages = <?php echo '["' . implode('", "', $filelist) . '"]'; ?>;
    Attention à ne pas confondre les chemins des fichiers coté serveur en PHP et l'URL des fichiers coté client en HTML/JS.
    Coté serveur en PHP, il faut bien utiliser le chemins des fichiers (relatif ou absolu) via le système de fichier ("./Fichiers/recus_fiscaux/recus_a_imprimer/page1.pdf" par exemple)
    Coté client (dans l'attribut href de tes liens ou dans ton code js), il faut utiliser les URLs des fichiers via ton serveur web ("http://monsite.com/Fichiers/recus_fiscaux/recus_a_imprimer/page1.pdf" par exemple si le dossier Fichiers est à la racine de ton serveur web).

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2018
    Messages : 44
    Par défaut Imprimer en rafale tous les fichiers d'un dossier
    Bonjour
    Merci Pytet pour ta réponse.
    J'ai intégré ta correction du php en ligne 65 et j'ai remplacé le chemin des fichiers par leur url dans la partie html/js et je n'ai plus l'erreur. Du coup, j'ai pu découvrir que la fonction js ne fonctionne pas correctement. La boite de dialogue Impression s'ouvre puis se superpose celle d'ouverture du 1er fichier mais impossible de cliquer sur un bouton. Parvenant, dans un 1er temps, à fermer la fenêtre d'ouverture avec la croix en haut à droite, une boite de dialogue s'est ouverte pour le 2ème fichier et ainsi de suite jusqu'à affichage d'un message d'erreur disant, grosso modo, que les éléments fournis ne permettent pas de faire le travail.
    Ayant relancé le traitement en cliquant sur le bouton Imprimer les reçus fiscaux pour m'aider à rédiger la présente réponse, le comportement de la machine est devenu erratique (clignotement du paragraphe que je rédigeais dans Open office Writer notamment). Dans le navigateur (Sea Monkey), une fenêtre "de débogage" s'est affichée en bas de l'écran où défilaient en permanence des bouts de page html. Et finalement, ordi bloqué.
    J'ai dû aller chez mon vendeur-dépanneur d'informatique qui a résolu le problème en réactivant touchpad et clavier.
    Sauf que, en fait, ce n'est pas fini. Quand j'ai ré-ouvert le navigateur, la fenêtre de débogage était toujours en train de mouliner, dans fichier Open office calc, une boite de dialogue Grouper (des lignes ou des colonnes) est ouverte et bloque l'utilisation du fichier, dans Chrome, voulant saisir une adresse, à la simple saisie de la lettre w, une adresse entière s'affiche dans la barre d'adresse et finalement, tout est bloqué.
    Je suis surpris qu'une anomalie dans la fonction javascript en cause provoque de tels dérèglements. Je me demande si je n'ai pas été l'objet d'une attaque simultanément (mais j'ai une bonne protection avec ESET Internet security).
    Donc, je suis très mal....
    Cordialement.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    du code javascript dans le navigateur ne peux pas influencer d'autres programmes donc vous avez surement un souci quelque part sur votre ordinateur.

    en ce qui concerne votre besoin de tout imprimer d'un coup, une autre solution serait de fusionner les fichiers coté serveur pour imprimer 1 seul fichier.
    cela peut se faire avec les programmes "pdfunite" ou "convert" par exemple, essayez ce code pour voir si vous avez accès à ces programmes :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <pre>
    <?php 
    passthru("pdfunite -v 2>&1");
    ?>
    </pre>
    <pre>
    <?php
    passthru("convert --version 2>&1");
    ?>
    </pre>

Discussions similaires

  1. Réponses: 16
    Dernier message: 30/07/2013, 00h05
  2. imprimer tous les fichiers d'un dossier
    Par jerome39 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/01/2010, 16h28
  3. Réponses: 4
    Dernier message: 29/08/2006, 18h02
  4. Réponses: 5
    Dernier message: 18/01/2006, 14h05
  5. [LG] Accéder à tous les fichiers d'un dossier
    Par arno15 dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2005, 10h18

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