1 pièce(s) jointe(s)
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:
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> |
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.